Đây là iOS checkout SDK chính thức của Dodo Payments dành cho Swift. SDK mở checkout được host của Dodo trong một chế độ xem trình duyệt native và trả về một kết quả có kiểu.
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 này vào toàn bộ quy trình thanh toán trên mobile.
SFSafariViewController, không lưu 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à bắt return URL.
Yêu cầu iOS 16+, Swift 6.
Cài đặt
1
Add the Package
Trong Xcode, đi đến File → Add Package Dependencies và nhập:Chọn phiên bản 1.0.0 trở lên.Ngoài ra, thêm vào
Package.swift của bạn:Package.swift
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. Thêm nội dung này vào Bạn cũng có thể thêm nội dung này thông qua giao diện Info → URL Types của Xcode.
Info.plist của bạn:Info.plist
Cách sử dụng
Chuyển tiếp Return URL
SFSafariViewController không có cách nào trong tiến trình để tự bắt return URL. Ứng dụng của bạn phải chuyển tiếp các URL đến SDK.
- SwiftUI
- SceneDelegate
Bạn có thể chuyển tiếp mọi URL tại đây một cách an toàn.
handleOpenURL chỉ xử lý các URL khớp với returnUrl đã đăng ký của bạn và trả về false cho mọi URL khác.Ý nghĩa của Result
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 phần Verify the Payment bên dưới.
String?
Được thiết lập cho các checkout subscription.
[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.
[String: String]
Mọi query parameter từ return URL, được giữ nguyên.
Xác minh Payment
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.
Errors
start chỉ throw CheckoutError khi sử dụng sai hoặc nền tảng gặp lỗi. Khoản thanh toán bị hủy hoặc bị từ chối luôn là một result, không phải exception.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): không phải URL sessioncheckout.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 đợi.
Session bị bỏ dở
Nếu ứng dụng bị tắt giữa chừng trong quá trình checkout, hãy khôi phục session vào 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, React Native và Flutter.
React Native SDK
Bọc cùng Swift core này trên iOS.