Đâ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.
Tùy chỉnh giao diện
Tùy chỉnh nút đóng của sheet, kiểu hiển thị và bảng màu thông quacustomization trên start(...). Tất cả các trường đều không bắt buộc; nếu bỏ qua
customization, giao diện SFSafariViewController mặc định của iOS sẽ được sử dụng.
DismissButtonStyle
Nhãn hoặc biểu tượng cho nút đóng:
done, close hoặc cancel.PresentationStyle
pageSheet hiển thị dưới dạng thẻ với thao tác vuốt để đóng; fullScreen bao phủ toàn bộ màn hình.Bool
Cho phép thanh công cụ thu gọn khi cuộn. Chỉ hiển thị khi
presentationStyle là fullScreen — pageSheet giữ các thanh cố định bất kể cài đặt này.ColorScheme
Buộc giao diện sáng hoặc tối bất kể cài đặt hệ thống của thiết bị:
system, light hoặc dark.Lỗi
start chỉ ném CheckoutError 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 phải một ngoại lệ.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): không phải là URL phiêncheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): không phải là URL tuyệt đối hợp lệ.alreadyInProgress(ALREADY_IN_PROGRESS): một phiên thanh toán đã đang chạy.platformError(PLATFORM_ERROR): nền tảng gặp lỗi không mong muốn.
Phiên bị bỏ dở
Nếu ứng dụng bị tắt giữa quá trình thanh toán, hãy khôi phục phiên trong lần khởi chạy 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, React Native và Flutter.
React Native SDK
Bọc cùng Swift core này trên iOS.