Skip to main content
Đâ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.
iOS SDK mở checkout được host của Dodo trong 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 Info.plist của bạn:
Info.plist
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.

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.
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

result.status là gợi ý UI, không phải bằng chứng thanh toán. Xác nhận mọi khoản thanh toán từ backend của bạn thông qua webhook payment.succeeded / subscription.active.
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.
Chỉ cấp quyền truy cập sau khi một trong các cơ chế này xác nhận thanh toán, không bao giờ chỉ dựa vào 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 session checkout.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.
Lần sửa đổi cuối 31 tháng 7, 2026