Langsung ke konten utama

Pendahuluan

DataFast adalah alat analitik yang mengutamakan pendapatan yang membantu Anda menemukan saluran pemasaran mana yang mengarahkan pelanggan yang membayar. Dengan mengintegrasikan Dodo Payments dengan DataFast, Anda dapat mengatributkan pendapatan ke sumber lalu lintas Anda, mengidentifikasi segmen pelanggan bernilai tinggi, dan membuat keputusan berbasis data untuk mengembangkan bisnis Anda.
Integrasi ini membutuhkan Kunci API DataFast Anda, yang dapat Anda peroleh dari dashboard DataFast.

Cara Kerjanya

DataFast melacak pengunjung melalui ID pengunjung unik yang disimpan dalam cookie. Untuk mengatributkan pendapatan ke saluran pemasaran, Anda perlu:
  1. Ambil ID pengunjung DataFast dari cookie datafast_visitor_id saat membuat sesi checkout
  2. Simpan ID pengunjung di metadata pembayaran Anda
  3. Kirim data pembayaran ke DataFast saat pembayaran berhasil melalui API Pembayaran mereka
Ini memungkinkan DataFast untuk mencocokkan pembayaran yang berhasil dengan sumber lalu lintas asli, memberikan Anda atribusi pendapatan yang lengkap.

Memulai

1

Install DataFast Script

Pertama, pasang skrip pelacakan DataFast di situs web Anda. Ini akan membuat cookie datafast_visitor_id yang melacak pengunjung Anda.Kunjungi dokumentasi DataFast untuk petunjuk instalasi sesuai platform Anda.
2

Get Your API Key

Masuk ke dashboard DataFast Anda dan buka pengaturan situs web untuk mendapatkan kunci API Anda.
Jaga kunci API Anda tetap aman dan jangan pernah mengeksposnya di kode sisi klien.
3

Capture Visitor ID in Checkout

Saat membuat sesi checkout, ambil ID pengunjung DataFast dari cookie dan tambahkan ke metadata pembayaran Anda.
4

Send Payment Data via Webhook

Konfigurasikan webhook untuk mengirim data pembayaran ke API Pembayaran DataFast saat pembayaran berhasil.
5

Done!

🎉 Data pendapatan kini akan muncul di dashboard DataFast Anda dengan atribusi penuh ke saluran pemasaran.

Panduan Implementasi

Langkah 1: Tambahkan ID Pengunjung ke Metadata Checkout

Saat membuat sesi checkout, tangkap ID pengunjung DataFast dari cookie dan sertakan dalam metadata pembayaran Anda.
import { cookies } from 'next/headers';
import { dodopayments } from '@/lib/dodopayments';

export async function createCheckout(productId: string) {
  // Capture DataFast visitor ID from cookie
  const datafastVisitorId = cookies().get('datafast_visitor_id')?.value;

  const payment = await dodopayments.payments.create({
    product_id: productId,
    // ... other payment configuration
    metadata: {
      datafast_visitor_id: datafastVisitorId, // Store visitor ID in metadata
    },
  });

  return payment;
}

Langkah 2: Kirim Data Pembayaran ke DataFast

Konfigurasikan endpoint webhook untuk mengirim data pembayaran ke API Pembayaran DataFast saat pembayaran berhasil.
1

Open the Webhook Section

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

Select DataFast

Pilih kartu integrasi DataFast.
3

Enter API Key

Masukkan Kunci API DataFast Anda pada kolom konfigurasi.
Add API Key
4

Configure Transformation

Edit kode transformasi untuk memformat data pembayaran agar sesuai dengan API Pembayaran DataFast.
5

Test & Create

Uji dengan payload contoh dan klik Create untuk mengaktifkan integrasi.

Contoh Kode Transformasi

Atribusi Pembayaran Dasar

basic_payment.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const payment = webhook.payload.data;
    
    // Only send to DataFast if visitor ID exists in metadata
    if (payment.metadata && payment.metadata.datafast_visitor_id) {
      webhook.payload = {
        amount: payment.total_amount / 100, // Convert from cents to dollars
        currency: payment.currency,
        transaction_id: payment.payment_id,
        datafast_visitor_id: payment.metadata.datafast_visitor_id,
      };
    } else {
      // Cancel dispatch if no visitor ID (prevents unnecessary API calls)
      webhook.cancel = true;
    }
  }
  return webhook;
}

Tangani Mata Uang Tanpa Desimal

Beberapa mata uang (seperti JPY) tidak menggunakan tempat desimal. Sesuaikan perhitungan jumlahnya sesuai kebutuhan:
zero_decimal.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const payment = webhook.payload.data;
    
    if (payment.metadata && payment.metadata.datafast_visitor_id) {
      // Zero decimal currencies: JPY, KRW, CLP, etc.
      const zeroDecimalCurrencies = ['JPY', 'KRW', 'CLP', 'VND', 'UGX', 'MGA'];
      const isZeroDecimal = zeroDecimalCurrencies.includes(payment.currency);
      
      webhook.payload = {
        amount: isZeroDecimal 
          ? payment.total_amount // Use amount as-is for zero decimal currencies
          : payment.total_amount / 100, // Convert from cents for other currencies
        currency: payment.currency,
        transaction_id: payment.payment_id,
        datafast_visitor_id: payment.metadata.datafast_visitor_id,
      };
    } else {
      // Cancel dispatch if no visitor ID (prevents unnecessary API calls)
      webhook.cancel = true;
    }
  }
  return webhook;
}

Pembayaran Berlangganan

Untuk pembayaran berlangganan yang berulang, Anda dapat melacak setiap pembayaran:
subscription_payment.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const payment = webhook.payload.data;
    
    // Check if this is a subscription payment
    const isSubscription = payment.subscription_id !== null;
    
    if (payment.metadata && payment.metadata.datafast_visitor_id) {
      webhook.payload = {
        amount: payment.total_amount / 100,
        currency: payment.currency,
        transaction_id: payment.payment_id,
        datafast_visitor_id: payment.metadata.datafast_visitor_id,
        // Optional: Add subscription context
        ...(isSubscription && {
          subscription_id: payment.subscription_id,
        }),
      };
    } else {
      // Cancel dispatch if no visitor ID (prevents unnecessary API calls)
      webhook.cancel = true;
    }
  }
  return webhook;
}

Praktik Terbaik

Ambil ID pengunjung sejak awal: Simpan ID pengunjung DataFast sesegera mungkin dalam alur checkout Anda untuk memastikan atribusi yang akurat, meskipun pengguna meninggalkan halaman dan kembali nanti.
  • Selalu sertakan ID pengunjung dalam metadata: Tanpa ID pengunjung, DataFast tidak dapat mengatributkan pendapatan ke saluran pemasaran
  • Tangani mata uang tanpa desimal: Beberapa mata uang (JPY, KRW, dll.) tidak menggunakan tempat desimal—sesuaikan perhitungan jumlah Anda sesuai kebutuhan
  • Uji dengan pembayaran contoh: Verifikasi bahwa integrasi berfungsi dengan benar sebelum diluncurkan
  • Pantau dasbor DataFast Anda: Periksa bahwa pembayaran muncul dengan benar dengan atribusi yang tepat
  • Gunakan pengulangan webhook: API Pembayaran DataFast bersifat idempotent, jadi pengulangan aman jika webhook gagal

Pemecahan Masalah

  • Verifikasi bahwa Kunci API DataFast Anda benar dan aktif
  • Periksa bahwa datafast_visitor_id sedang diambil dan disimpan dalam metadata pembayaran
  • Pastikan transformasi webhook memformat payload dengan benar
  • Verifikasi webhook memicu pada acara payment.succeeded
  • Periksa dashboard DataFast untuk pesan kesalahan atau log API
  • Konfirmasi skrip pelacakan DataFast terpasang dan berfungsi di situs web Anda
  • Verifikasi cookie datafast_visitor_id disetel dengan benar
  • Periksa bahwa ID pengunjung cocok antara pembuatan checkout dan selesainya pembayaran
  • Pastikan Anda menangkap ID pengunjung sebelum membuat sesi checkout
  • Tinjau dokumentasi API Pembayaran DataFast untuk panduan tambahan
  • Validasi struktur JSON sesuai format API Pembayaran DataFast
  • Pastikan semua field yang dibutuhkan (amount, currency, transaction_id, datafast_visitor_id) ada
  • Pastikan jumlah dikonversi dengan benar (bagikan dengan 100 untuk sebagian besar mata uang, kecuali mata uang tanpa desimal)
  • Verifikasi URL endpoint API benar: https://datafa.st/api/v1/payments
  • Uji transformasi dengan payload webhook contoh
  • Untuk mata uang tanpa desimal (JPY, KRW, CLP, VND, UGX, MGA), kirim jumlah apa adanya tanpa dibagi 100
  • Untuk semua mata uang lain, bagi jumlah dengan 100 untuk mengonversi dari sen ke unit dasar
  • Periksa kembali kode mata uang sesuai format ISO 4217 (misalnya, “USD”, “EUR”, “JPY”)

Sumber Daya Tambahan

Perlu bantuan? Hubungi dukungan Dodo Payments di support@dodopayments.com untuk bantuan integrasi.