Đây là React Native checkout SDK chính thức của Dodo Payments,
@dodopayments/react-native-checkout. SDK mở hosted checkout của Dodo trong một chế độ xem trình duyệt native và trả về một kết quả có kiểu. Lưu ý: có một package cũ, không liên quan tên là dodopayments-react-native-sdk (không có scope) với API hoàn toàn khác. Trang này chỉ mô tả package chính thức hiện tại có scope.Checkout Sessions API
Tạo checkout_url mà SDK này sẽ mở từ backend của bạn.
Mobile Integration Guide
Xem cách tích hợp bước này vào toàn bộ quy trình thanh toán trên thiết bị di động.
SFSafariViewController trên iOS và Chrome Custom Tab trên Android, không chứa API key và không bao giờ gọi trực tiếp Dodo API. Toàn bộ logic checkout chạy trong trình duyệt; SDK chỉ quản lý vòng đời của view và lấy return URL.
Cài đặt
1
Install the Package
- Android
- iOS
- Expo
Package được autolink và kéo Không cần thiết lập bổ sung; dependency native được tự động phân giải.
com.dodopayments.api:checkout-android từ Maven.2
Register a Callback URL Scheme
Ứng dụng của bạn phải đăng ký một URL scheme để nhận return URL từ checkout.
- Android (Gradle)
- iOS (Info.plist)
- Expo (both platforms)
Trong Thay
android/app/build.gradle:android/app/build.gradle
"myapp" bằng scheme của ứng dụng.Cách sử dụng
Chuyển tiếp Return URL
ListenerLinking là bắt buộc để xử lý return URL trên iOS. Trên Android, handleOpenURL không thực hiện thao tác nào và resolve false vì Android core tự xử lý redirect. Bạn có thể đăng ký listener vô điều kiện trên cả hai nền tảng.
Ý nghĩa của kết quả
CheckoutStatus
bắt buộc
Một trong các giá trị
succeeded, failed, cancelled, pending, expired.string
Được thiết lập khi return URL có chứa giá trị này. Hiển thị giá trị trong UI, không dùng giá trị này để cấp quyền truy cập. Xem mục Verify the Payment bên dưới.
string
Được thiết lập cho các checkout đăng ký.
string[]
Được thiết lập khi checkout bao gồm các sản phẩm có license key.
string
Được thiết lập khi checkout thu thập email.
Record<string, string>
Mọi query parameter từ return URL, được giữ nguyên văn.
Xác minh khoản thanh toán
Webhooks
Dodo Payments gọi backend của bạn khi khoản thanh toán thành công hoặc subscription được kích hoạt.
Get Payment Detail
Tra cứu
paymentId bằng secret key của bạn để kiểm tra trực tiếp trạng thái.result.status.
Tùy chỉnh giao diện
Tùy chỉnh thanh công cụ, các nút và bảng màu của trình duyệt checkout thông quacustomization trên start(...). Các tùy chọn được nhóm theo nền tảng vì
Custom Tab của Android và SFSafariViewController của iOS cung cấp các
điều khiển native khác nhau. Tất cả các trường đều không bắt buộc; nếu bỏ qua customization, giao diện mặc định của từng
nền tảng sẽ được sử dụng.
Android — Custom Tab
Android — Custom Tab
Color
Màu nền của thanh công cụ.
Màu thanh điều hướng.
Màu đường phân cách phía trên thanh điều hướng.
'default' | 'back'
default hiển thị biểu tượng hệ thống “X”; back thay vào đó hiển thị mũi tên quay lại.'start' | 'end'
Nút đóng xuất hiện ở phía nào của thanh công cụ.
Hiển thị biểu tượng chia sẻ của thanh công cụ.
boolean
Hiển thị tiêu đề trang bên dưới URL trong thanh công cụ.
boolean
Cho phép thanh công cụ tự động ẩn khi cuộn trang.
boolean
Hiển thị “Bookmark this page” trong menu thêm.
boolean
Hiển thị “Download page” trong menu thêm.
'system' | 'light' | 'dark'
Buộc sử dụng giao diện sáng hoặc tối bất kể cài đặt hệ thống của thiết bị.
iOS — SFSafariViewController
iOS — SFSafariViewController
'done' | 'close' | 'cancel'
Nhãn hoặc biểu tượng cho nút đóng.
'pageSheet' | 'fullScreen'
pageSheet hiển thị dưới dạng thẻ có thể vuốt để đóng; fullScreen bao phủ toàn bộ màn hình.boolean
Cho phép thanh công cụ thu gọn khi cuộn. Chỉ hiển thị khi
presentationStyle là fullScreen — pageSheet giữ cố định các thanh bất kể cài đặt này.'system' | 'light' | 'dark'
Buộc sử dụng giao diện sáng hoặc tối bất kể cài đặt hệ thống của thiết bị.
Lỗi
start từ chối với một CheckoutError chỉ khi sử dụng sai hoặc nền tảng gặp lỗi. Thanh toán bị hủy hoặc bị từ chối luôn là một kết quả, không bao giờ là một exception.
INVALID_CHECKOUT_URL: không phải là URL phiêncheckout.dodopayments.com.INVALID_RETURN_URL: không phải là absolute URL hợp lệ.ALREADY_IN_PROGRESS: một checkout đang chạy.PLATFORM_ERROR: lỗi nền tảng không mong đợi.
Phiên bị bỏ dở
Nếu ứng dụng hoặc JS bundle bị dừng giữa chừng trong quá trình checkout, promise sẽ bị mất nhưng native layer vẫn giữ phiên. Khôi phục phiên ở lần mount tiếp theo và đối soát phiên với backend của bạn.Liên quan
Mobile Integration Guide
Cùng một contract cho Android, iOS và Flutter.
Expo Boilerplate
Một ví dụ Expo hoàn chỉnh có tích hợp checkout.