Langsung ke konten utama

Pendahuluan

Kirim email transaksional profesional secara otomatis ketika peristiwa pembayaran terjadi. Kirim konfirmasi pembayaran, pembaruan langganan, dan pemberitahuan penting dengan infrastruktur email Kirim Ulang yang andal dan tingkat pengiriman yang sangat baik.
Integrasi ini membutuhkan Kunci API Resend Anda untuk otentikasi.

Memulai

1

Open the Webhook Section

Di dasbor Dodo Payments Anda, buka Webhooks → + Add Endpoint dan perluas dropdown integrasi.
Add Endpoint and integrations dropdown
2

Select Resend

Pilih kartu integrasi Resend.
3

Enter API Key

Masukkan Kunci API Resend Anda dalam konfigurasi.
4

Configure Transformation

Sunting kode transformasi untuk memformat email sesuai API Resend.
5

Test & Create

Uji dengan payload sampel dan klik Create untuk mengaktifkan pengiriman email.
6

Done!

🎉 Peristiwa pembayaran kini otomatis memicu email transaksional melalui Resend.

Contoh Kode Transformasi

Email Konfirmasi Pembayaran

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 Selamat Datang Langganan

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;
}

Pemberitahuan Kegagalan Pembayaran

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;
}

Tips

  • Gunakan domain pengirim yang terverifikasi untuk pengiriman yang lebih baik
  • Sertakan versi HTML dan teks dari email
  • Personalisasi konten dengan data pelanggan
  • Gunakan subjek yang jelas dan berorientasi tindakan
  • Sertakan tautan berhenti berlangganan untuk kepatuhan
  • Uji template email sebelum diluncurkan

Pemecahan Masalah

  • Verifikasi bahwa Kunci API benar dan aktif
  • Periksa bahwa domain pengirim sudah diverifikasi di Resend
  • Pastikan alamat email penerima valid
  • Tinjau batasan dan kuota pengiriman Resend
  • Validasi struktur JSON agar sesuai format API Resend
  • Periksa bahwa semua bidang wajib ada
  • Pastikan konten HTML terformat dengan benar
  • Verifikasi bahwa alamat email pengirim sudah diverifikasi