Langsung ke konten utama

Pendahuluan

Eksekusi fungsi serverless dan pekerjaan latar belakang secara otomatis ketika peristiwa pembayaran terjadi. Proses pembayaran, kirim notifikasi, perbarui basis data, dan jalankan alur kerja yang kompleks dengan platform eksekusi fungsi Inngest yang andal.
Integrasi ini memerlukan URL webhook Inngest Anda dari konfigurasi fungsi Anda.

Memulai

1

Buka Bagian Webhook

Di dasbor Dodo Payments Anda, navigasikan ke Webhooks → + Tambah Endpoint dan perluas dropdown integrasi.
Tambah Endpoint dan dropdown integrasi
2

Pilih Inngest

Pilih kartu integrasi Inngest.
3

Buat Fungsi Inngest

Di Inngest, buat fungsi baru dan salin URL webhook dari konfigurasi fungsi.
4

Tempel URL Webhook

Tempel URL webhook Inngest ke dalam konfigurasi endpoint.
5

Konfigurasi Transformasi

Edit kode transformasi untuk memformat peristiwa untuk fungsi Inngest Anda.
6

Uji & Buat

Uji dengan payload contoh dan klik Buat untuk mengaktifkan integrasi.
7

Selesai!

🎉 Peristiwa pembayaran sekarang akan memicu fungsi Inngest Anda secara otomatis.

Contoh Kode Transformasi

Payload Peristiwa Dasar

basic_event.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      name: "payment.succeeded",
      data: {
        payment_id: p.payment_id,
        amount: (p.total_amount / 100).toFixed(2),
        currency: p.currency || "USD",
        customer_email: p.customer.email,
        customer_name: p.customer.name,
        payment_method: p.payment_method || "unknown"
      },
      user: {
        email: p.customer.email
      },
      ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
    };
  }
  return webhook;
}

Penangan Acara Langganan

subscription_event.js
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        name: "subscription.started",
        data: {
          subscription_id: s.subscription_id,
          customer_email: s.customer.email,
          customer_name: s.customer.name,
          product_id: s.product_id,
          amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
          frequency: s.payment_frequency_interval,
          next_billing: s.next_billing_date
        },
        user: {
          email: s.customer.email
        },
        ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        name: "subscription.cancelled",
        data: {
          subscription_id: s.subscription_id,
          customer_email: s.customer.email,
          cancelled_at: s.cancelled_at,
          cancel_at_next_billing: s.cancel_at_next_billing_date
        },
        user: {
          email: s.customer.email
        },
        ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
      };
      break;
  }
  return webhook;
}

Penangan Acara Sengketa

dispute_event.js
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    webhook.payload = {
      name: webhook.eventType,
      data: {
        dispute_id: d.dispute_id,
        payment_id: d.payment_id,
        amount: (d.amount / 100).toFixed(2),
        status: d.dispute_status,
        stage: d.dispute_stage,
        remarks: d.remarks || "",
        urgent: webhook.eventType === "dispute.opened"
      },
      user: {
        email: d.customer?.email || "unknown"
      },
      ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
    };
  }
  return webhook;
}

Kasus Penggunaan Inngest yang Umum

  • Kirim email konfirmasi
  • Perbarui catatan pelanggan
  • Proses pengembalian dana
  • Buat faktur
  • Perbarui inventaris
  • Sambut pelanggan baru
  • Proses pembatalan
  • Kirim pengingat perpanjangan
  • Perbarui siklus penagihan
  • Tangani pembayaran yang gagal
  • Perbarui metrik pendapatan
  • Lacak perilaku pelanggan
  • Buat laporan
  • Sinkronkan data ke platform analitik
  • Hitung tingkat churn

Tips

  • Gunakan nama peristiwa yang deskriptif untuk organisasi fungsi yang lebih baik
  • Sertakan konteks pengguna untuk eksekusi fungsi
  • Atur cap waktu yang tepat untuk urutan peristiwa
  • Struktur data secara konsisten di seluruh peristiwa
  • Gunakan fitur pengulangan dan penanganan kesalahan Inngest

Pemecahan Masalah

  • Verifikasi URL webhook benar dan aktif
  • Periksa bahwa fungsi Inngest telah diterapkan dan aktif
  • Pastikan nama peristiwa cocok dengan pemicu fungsi
  • Tinjau log fungsi Inngest untuk kesalahan
  • Periksa struktur payload sesuai dengan harapan Inngest
  • Verifikasi nama peristiwa diformat dengan benar
  • Pastikan semua bidang yang diperlukan disertakan
  • Uji dengan alat pengujian webhook Inngest