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

Tổng quan

Bộ chuyển đổi Better Auth cho Dodo Payments cung cấp:
  • Tạo khách hàng tự động khi đăng ký
  • Phiên thanh toán (được ưu tiên) với ánh xạ slug sản phẩm
  • Cổng thông tin khách hàng tự phục vụ
  • Điểm thu thập và báo cáo sử dụng theo mức sử dụng cho thanh toán dựa trên mức sử dụng
  • Xử lý sự kiện webhook theo thời gian thực với xác minh chữ ký
  • Hỗ trợ đầy đủ TypeScript
Bạn cần có tài khoản Dodo Payments và khóa API để sử dụng tích hợp này.

Điều kiện tiên quyết

  • Node.js 20+
  • Truy cập vào Bảng điều khiển Dodo Payments của bạn
  • Dự án hiện có sử dụng better-auth

Cài đặt

1

Install dependencies

Chạy lệnh sau trong thư mục gốc của dự án:
Tất cả các gói cần thiết hiện đã được cài đặt.

Cấu hình

1

Configure environment variables

Thêm những mục này vào tệp .env của bạn:
Không bao giờ đưa khóa API hoặc bí mật vào hệ thống kiểm soát phiên bản.
2

Set up server-side integration

Tạo hoặc cập nhật src/lib/auth.ts:
Đặt environment thành live_mode cho môi trường sản xuất.
3

Set up client-side integration

Tạo hoặc cập nhật src/lib/auth-client.ts:

Ví dụ sử dụng

Ưu tiên authClient.dodopayments.checkoutSession cho các tích hợp mới. Phương thức cũ checkout đã bị ngưng và chỉ được giữ lại để tương thích ngược.

Tạo một Phiên thanh toán (Được ưu tiên)

Không giống như phương thức checkout cũ, checkoutSession không yêu cầu thông tin thanh toán trước vì sẽ được lấy từ người dùng ở trang thanh toán. Bạn vẫn có thể ghi đè bằng cách truyền khóa billing trong đối số.
Tương tự như phương thức checkout cũ, checkoutSession lấy email và tên của khách hàng từ phiên better-auth của họ, tuy nhiên, bạn có thể ghi đè bằng cách truyền đối tượng customer với email và tên.
Bạn có thể truyền các tùy chọn tương tự trong đối số như phần thân yêu cầu cho Create Checkout Session endpoint.
URL trả về được lấy từ successUrl được cấu hình trong server plugin. Bạn không cần phải bao gồm return_url trong payload của client.

Thanh toán Cũ (Đã Ngưng Sử Dụng)

Phương thức authClient.dodopayments.checkout đã ngưng sử dụng. Sử dụng checkoutSession thay thế cho những triển khai mới.

Truy Cập Cổng Khách Hàng

Liệt Kê Dữ Liệu Khách Hàng

Theo Dõi Việc Sử Dụng Tính Theo Lượng

Kích hoạt plugin usage() trên server để thu thập các sự kiện tính theo lượng và cho phép khách hàng kiểm tra hóa đơn dựa trên việc sử dụng của họ.
  • authClient.dodopayments.usage.ingest nạp các sự kiện cho người dùng đã đăng nhập và xác minh email.
  • authClient.dodopayments.usage.meters.list liệt kê việc sử dụng gần đây cho các thiết bị đo gắn liền với gói đăng ký của khách hàng.
Dấu thời gian cũ hơn một giờ hoặc hơn năm phút trong tương lai sẽ bị từ chối khi nạp việc sử dụng.
Nếu bạn bỏ qua meter_id khi liệt kê các thiết bị đo sử dụng, tất cả các thiết bị đo gắn liền với gói đăng ký của khách hàng sẽ được trả về.

Webhooks

Plugin webhooks xử lý sự kiện thanh toán thời gian thực từ Dodo Payments kèm với xác minh chữ ký an toàn. Endpoint mặc định là /api/auth/dodopayments/webhooks.
1

Generate and set webhook secret

Tạo một bí mật webhook cho URL endpoint của bạn (ví dụ, https://<your-domain>/api/auth/dodopayments/webhooks) trong Dodo Payments Dashboard và đặt nó trong tập tin .env của bạn:
2

Handle webhook events

Ví dụ về trình xử lý:

Các Trình Xử Lý Sự Kiện Webhook Hỗ Trợ

Tham Khảo Cấu Hình

  • client (bắt buộc): Phiên bản khách hàng DodoPayments
  • createCustomerOnSignUp (tùy chọn): Tự động tạo khách hàng khi đăng ký
  • use (bắt buộc): Mảng các plugin để kích hoạt (checkout, portal, usage, webhooks)
  • getCustomerParams (tùy chọn): Hàm nhận BetterAuth User và trả về các trường bổ sung để gắn vào khách hàng DodoPayments khi tạo và cập nhật (ví dụ metadata, phone_number)
  • products: Mảng các sản phẩm hoặc hàm async trả về các sản phẩm - successUrl: URL để chuyển hướng sau khi thanh toán thành công - authenticatedUsersOnly: Yêu cầu xác thực người dùng (mặc định: false)

Sự Cố & Mẹo

  • Key API không hợp lệ: Kiểm tra lại DODO_PAYMENTS_API_KEY trong .env. - Webhook không khớp chữ ký: Đảm bảo bí mật webhook khớp với bí mật đã đặt trong Bảng Điều Khiển Dodo Payments. - Khách hàng không được tạo: Xác nhận createCustomerOnSignUp được đặt thành true.
  • Sử dụng biến môi trường cho tất cả các bí mật và key. - Kiểm tra ở chế độ test_mode trước khi chuyển sang live_mode. - Ghi lại các sự kiện webhook để gỡ lỗi và kiểm toán.

Lời Nhắc cho LLMs

Lần sửa đổi cuối 9 tháng 7, 2026