Đây là package Flutter chính thức của Dodo Payments (
dodopayments_checkout
trên pub.dev). Ngoài ra còn có một package do cộng đồng xây dựng riêng, xem
Dự án cộng đồng.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ộ luồng thanh toán trên mobile.
dodopayments_checkout mở hosted checkout của Dodo trong
SFSafariViewController trên iOS và Chrome Custom Tab trên Android — cùng
các native core được sử dụng bởi các SDK độc lập iOS và
Android. Toàn bộ logic checkout nằm trong
các native core đó; lớp Dart chuyển tiếp lệnh gọi qua một kênh
Pigeon có kiểu. Lớp này không chứa API key
và không bao giờ gọi Dodo Payments API.
Yêu cầu Flutter 3.44+ / Dart 3.12+, iOS 16+ và Android minSdk 23.
Cài đặt
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
Thêm một URL type cho scheme của bạn trong Sau đó chuyển tiếp các URL đến (ví dụ: thông qua
ios/Runner/Info.plist:ios/Runner/Info.plist
app_links) vào SDK, vì
SFSafariViewController không thể tự bắt return URL của chính nó:Bạn có thể an toàn chuyển tiếp mọi URL tại đây.
handleOpenURL chỉ xử lý các URL
khớp với returnUrl đã đăng ký của bạn và resolve false cho mọi URL
khác.Cách sử dụ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 đặt khi return URL chứa giá trị này. Hiển thị giá trị trong UI, không dùng
nó để cấp quyền truy cập. Xem phần Xác minh thanh toán bên dưới.
String?
Được đặt cho các checkout đăng ký.
List<String>?
Được đặt khi checkout bao gồm các sản phẩm có license key.
String?
Được đặt khi checkout thu thập email.
Map<String, String>
Mọi query parameter từ return URL, giữ nguyên từng ký tự.
Xác minh thanh toán
Webhooks
Dodo Payments gọi backend của bạn khi một khoản thanh toán thành công hoặc một 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.
Lỗi
start chỉ throw CheckoutException 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 được trả về dưới dạng kết quả, không phải exception.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): không phải session URL củacheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): không phải absolute URL hợp lệ.alreadyInProgress(ALREADY_IN_PROGRESS): một checkout đang chạy.platformError(PLATFORM_ERROR): lỗi nền tảng không mong muốn.
Session bị bỏ dở
Nếu ứng dụng bị đóng giữa checkout, hãy khôi phục session trong lần khởi chạy tiếp theo và
đối soát session đó với backend của bạn.
Liên quan
Mobile Integration Guide
Cùng một contract cho Android, iOS và React Native.
Community Projects
Ngoài ra còn có một package Flutter riêng do cộng đồng xây dựng.