Chuyển đến nội dung chính

Giới thiệu

Gửi email giao dịch chuyên nghiệp tự động khi có sự kiện thanh toán xảy ra. Gửi xác nhận thanh toán, cập nhật đăng ký và thông báo quan trọng với hạ tầng email đáng tin cậy của Resend và tỷ lệ giao hàng xuất sắc.
Tích hợp này yêu cầu Khóa API Resend của bạn để xác thực.

Bắt đầu

1

Open the Webhook Section

Trong bảng điều khiển Dodo Payments của bạn, chuyển đến Webhooks → + Add Endpoint và mở rộng menu thả xuống tích hợp.
Add Endpoint and integrations dropdown
2

Select Resend

Chọn thẻ tích hợp Resend.
3

Enter API Key

Cung cấp Khóa API Resend trong cấu hình.
4

Configure Transformation

Chỉnh sửa mã chuyển đổi để định dạng email phù hợp với API của Resend.
5

Test & Create

Thử nghiệm với các payload mẫu và nhấp Create để kích hoạt gửi email.
6

Done!

🎉 Các sự kiện thanh toán giờ đây sẽ tự động kích hoạt email giao dịch qua Resend.

Ví dụ Mã Biến đổi

Email Xác nhận Thanh toán

payment_confirmation.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.url = "https://api.resend.com/emails";
    webhook.payload = {
      from: "payments@yourdomain.com",
      to: [p.customer.email],
      subject: "Payment Confirmation - $" + (p.total_amount / 100).toFixed(2),
      html: `
        <h2>Payment Successful!</h2>
        <p>Hi ${p.customer.name},</p>
        <p>Your payment of $${(p.total_amount / 100).toFixed(2)} has been processed successfully.</p>
        <ul>
          <li><strong>Payment ID:</strong> ${p.payment_id}</li>
          <li><strong>Amount:</strong> $${(p.total_amount / 100).toFixed(2)}</li>
          <li><strong>Date:</strong> ${new Date(webhook.payload.timestamp).toLocaleDateString()}</li>
          <li><strong>Method:</strong> ${p.payment_method || "Unknown"}</li>
        </ul>
        <p>Thank you for your business!</p>
      `,
      text: `Payment Successful! Your payment of $${(p.total_amount / 100).toFixed(2)} has been processed. Payment ID: ${p.payment_id}`
    };
  }
  return webhook;
}

Email Chào mừng Đăng ký

subscription_welcome.js
function handler(webhook) {
  if (webhook.eventType === "subscription.active") {
    const s = webhook.payload.data;
    webhook.url = "https://api.resend.com/emails";
    webhook.payload = {
      from: "welcome@yourdomain.com",
      to: [s.customer.email],
      subject: "Welcome to Your Subscription!",
      html: `
        <h2>Welcome to Your Subscription!</h2>
        <p>Hi ${s.customer.name},</p>
        <p>Your subscription has been activated successfully.</p>
        <ul>
          <li><strong>Subscription ID:</strong> ${s.subscription_id}</li>
          <li><strong>Product:</strong> ${s.product_id}</li>
          <li><strong>Amount:</strong> $${(s.recurring_pre_tax_amount / 100).toFixed(2)}/${s.payment_frequency_interval}</li>
          <li><strong>Next Billing:</strong> ${new Date(s.next_billing_date).toLocaleDateString()}</li>
        </ul>
        <p>You can manage your subscription anytime from your account dashboard.</p>
      `,
      text: `Welcome! Your subscription is now active. Amount: $${(s.recurring_pre_tax_amount / 100).toFixed(2)}/${s.payment_frequency_interval}`
    };
  }
  return webhook;
}

Thông báo Thất bại Thanh toán

payment_failure.js
function handler(webhook) {
  if (webhook.eventType === "payment.failed") {
    const p = webhook.payload.data;
    webhook.url = "https://api.resend.com/emails";
    webhook.payload = {
      from: "support@yourdomain.com",
      to: [p.customer.email],
      subject: "Payment Failed - Action Required",
      html: `
        <h2>Payment Failed</h2>
        <p>Hi ${p.customer.name},</p>
        <p>We were unable to process your payment of $${(p.total_amount / 100).toFixed(2)}.</p>
        <ul>
          <li><strong>Payment ID:</strong> ${p.payment_id}</li>
          <li><strong>Amount:</strong> $${(p.total_amount / 100).toFixed(2)}</li>
          <li><strong>Error:</strong> ${p.error_message || "Payment processing failed"}</li>
        </ul>
        <p>Please update your payment method or contact support for assistance.</p>
        <a href="https://yourdomain.com/update-payment">Update Payment Method</a>
      `,
      text: `Payment Failed: We couldn't process your $${(p.total_amount / 100).toFixed(2)} payment. Please update your payment method.`
    };
  }
  return webhook;
}

Mẹo

  • Sử dụng miền người gửi đã được xác minh để có tỷ lệ giao hàng tốt hơn
  • Bao gồm cả phiên bản HTML và văn bản của email
  • Cá nhân hóa nội dung với dữ liệu khách hàng
  • Sử dụng tiêu đề rõ ràng, hướng hành động
  • Bao gồm liên kết hủy đăng ký để tuân thủ
  • Kiểm tra mẫu email trước khi đưa vào hoạt động

Khắc phục sự cố

  • Xác minh Khóa API là chính xác và đang hoạt động
  • Kiểm tra rằng tên miền người gửi đã được xác minh trong Resend
  • Đảm bảo địa chỉ email người nhận hợp lệ
  • Xem lại giới hạn và hạn mức gửi của Resend
  • Xác thực cấu trúc JSON phù hợp định dạng API của Resend
  • Kiểm tra rằng tất cả các trường bắt buộc đều có mặt
  • Đảm bảo nội dung HTML được định dạng đúng
  • Xác minh địa chỉ email người gửi đã được xác thực