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

Giới thiệu

DataFast là một công cụ phân tích ưu tiên doanh thu giúp bạn khám phá các kênh tiếp thị nào tạo ra khách hàng trả tiền. Bằng cách tích hợp Dodo Payments với DataFast, bạn có thể gán doanh thu cho các nguồn lưu lượng truy cập của mình, xác định các phân khúc khách hàng có giá trị cao và đưa ra quyết định dựa trên dữ liệu để phát triển doanh nghiệp của bạn.
Tích hợp này yêu cầu Khóa API DataFast của bạn, có thể lấy từ bảng điều khiển DataFast.

Cách hoạt động

DataFast theo dõi khách truy cập thông qua một ID khách truy cập duy nhất được lưu trữ trong cookie. Để gán doanh thu cho các kênh tiếp thị, bạn cần:
  1. Ghi lại ID khách truy cập của DataFast từ cookie datafast_visitor_id khi tạo phiên thanh toán
  2. Lưu ID khách truy cập trong metadata thanh toán của bạn
  3. Gửi dữ liệu thanh toán đến DataFast khi thanh toán thành công bằng API Thanh toán của họ
Điều này cho phép DataFast khớp các khoản thanh toán thành công với nguồn lưu lượng truy cập ban đầu, mang lại cho bạn sự gán doanh thu hoàn chỉnh.

Bắt đầu

1

Install DataFast Script

Đầu tiên, cài đặt script theo dõi DataFast trên trang web của bạn. Điều này tạo cookie datafast_visitor_id để theo dõi khách truy cập.Tham khảo tài liệu DataFast để biết hướng dẫn cài đặt cho từng nền tảng của bạn.
2

Get Your API Key

Đăng nhập vào bảng điều khiển DataFast và chuyển đến cài đặt trang web của bạn để lấy Khóa API.
Giữ Khóa API của bạn an toàn và không bao giờ để lộ nó trong mã phía client.
3

Capture Visitor ID in Checkout

Khi tạo phiên thanh toán, ghi lại ID khách truy cập DataFast từ cookie và thêm nó vào metadata thanh toán của bạn.
4

Send Payment Data via Webhook

Cấu hình webhook để gửi dữ liệu thanh toán đến API Thanh toán của DataFast khi thanh toán thành công.
5

Done!

🎉 Dữ liệu doanh thu sẽ xuất hiện trong bảng điều khiển DataFast của bạn với gán đầy đủ cho các kênh tiếp thị.

Hướng dẫn triển khai

Bước 1: Thêm ID khách truy cập vào Siêu dữ liệu Thanh toán

Khi tạo một phiên thanh toán, hãy bắt ID khách truy cập DataFast từ cookie và bao gồm nó trong siêu dữ liệu thanh toán của bạn.
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;
}

Bước 2: Gửi Dữ liệu Thanh toán đến DataFast

Cấu hình một điểm cuối webhook để gửi dữ liệu thanh toán đến API Thanh toán của DataFast khi thanh toán thành công.
1

Open the Webhook Section

Trong bảng điều khiển Dodo Payments của bạn, hãy điều hướng đến Webhooks → + Add Endpoint và mở rộng mục trình đơn tích hợp.
Add Endpoint and integrations dropdown
2

Select DataFast

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

Enter API Key

Cung cấp Khóa API DataFast của bạn trong trường cấu hình.
Add API Key
4

Configure Transformation

Chỉnh sửa mã chuyển đổi để định dạng dữ liệu thanh toán cho API Thanh toán của DataFast.
5

Test & Create

Thử nghiệm với payload mẫu và nhấp Create để kích hoạt tích hợp.

Ví dụ Mã Chuyển đổi

Gán Doanh thu Cơ bản

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

Xử lý Tiền tệ Không có Số thập phân

Một số tiền tệ (như JPY) không sử dụng số thập phân. Điều chỉnh phép tính số tiền cho phù hợp:
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;
}

Thanh toán Đăng ký

Đối với các khoản thanh toán đăng ký định kỳ, bạn có thể theo dõi từng khoản thanh toán:
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;
}

Thực hành Tốt nhất

Ghi lại ID khách truy cập sớm: Lưu ID khách truy cập DataFast càng sớm càng tốt trong luồng thanh toán để đảm bảo phân bổ chính xác, ngay cả khi người dùng rời đi và quay lại sau.
  • Luôn bao gồm ID khách truy cập trong siêu dữ liệu: Nếu không có ID khách truy cập, DataFast không thể gán doanh thu cho các kênh tiếp thị
  • Xử lý tiền tệ không có số thập phân: Một số tiền tệ (JPY, KRW, v.v.) không sử dụng số thập phân—điều chỉnh phép tính số tiền của bạn cho phù hợp
  • Kiểm tra với các khoản thanh toán mẫu: Xác minh rằng tích hợp hoạt động chính xác trước khi đưa vào hoạt động
  • Theo dõi bảng điều khiển DataFast của bạn: Kiểm tra rằng các khoản thanh toán xuất hiện chính xác với sự gán đúng
  • Sử dụng thử nghiệm webhook: API Thanh toán của DataFast là idempotent, vì vậy việc thử nghiệm là an toàn nếu một webhook thất bại

Khắc phục sự cố

  • Xác minh Khóa API DataFast của bạn đúng và đang hoạt động
  • Kiểm tra rằng datafast_visitor_id đang được ghi lại và lưu trong metadata thanh toán
  • Đảm bảo chuyển đổi webhook đang định dạng payload chính xác
  • Xác minh webhook được kích hoạt cho sự kiện payment.succeeded
  • Kiểm tra bảng điều khiển DataFast để xem có thông báo lỗi hoặc nhật ký API nào không
  • Xác nhận script theo dõi DataFast đã được cài đặt và hoạt động trên trang web của bạn
  • Kiểm tra rằng cookie datafast_visitor_id đang được thiết lập đúng
  • Đảm bảo ID khách truy cập khớp giữa việc tạo checkout và hoàn tất thanh toán
  • Đảm bảo bạn ghi lại ID khách truy cập trước khi tạo phiên thanh toán
  • Xem lại tài liệu API Thanh toán của DataFast để biết hướng dẫn bổ sung
  • Xác thực cấu trúc JSON khớp định dạng API Thanh toán của DataFast
  • Kiểm tra rằng tất cả các trường bắt buộc (amount, currency, transaction_id, datafast_visitor_id) đều có mặt
  • Đảm bảo số tiền được chuyển đổi đúng (chia cho 100 cho hầu hết các loại tiền, trừ những loại có số thập phân bằng 0)
  • Xác minh URL điểm cuối API là đúng: https://datafa.st/api/v1/payments
  • Thử nghiệm chuyển đổi với payload webhook mẫu
  • Đối với các loại tiền không có số thập phân (JPY, KRW, CLP, VND, UGX, MGA), gửi số tiền nguyên vẹn mà không chia cho 100
  • Đối với tất cả các loại tiền khác, chia số tiền cho 100 để chuyển từ xu sang đơn vị cơ bản
  • Kiểm tra lại mã tiền tệ có đúng định dạng ISO 4217 (ví dụ: “USD”, “EUR”, “JPY”) không

Tài nguyên bổ sung

Cần giúp đỡ? Liên hệ bộ phận hỗ trợ Dodo Payments tại support@dodopayments.com để được hỗ trợ tích hợp.