Stripe iOS SDK: Thanh Toán Swift & Apple Pay
Stripe iOS SDK là thư viện Swift chính thức của Stripe để nhận thanh toán và Apple Pay trong ứng dụng iOS, kèm module xác minh danh tính và liên kết ngân hàng. PaymentSheet lo việc thu thập thông tin thẻ và 3D Secure, nên checkout chỉ gọn trong một sheet thay vì tự dựng form. Hãy chọn SDK này nếu đã dùng tài khoản merchant của Stripe; bỏ qua nếu bạn bán hàng hoá tiêu thụ trong ứng dụng, vì trường hợp đó cần API in-app purchase của Apple.
Stripe iOS SDK Là Gì?
Stripe iOS SDK là thư viện Swift do Stripe công bố tại stripe/stripe-ios, cho ứng dụng iOS thu thập thông tin thanh toán, chạy Apple Pay, xác minh danh tính, và lấy dữ liệu tài khoản tài chính. SDK gồm các module riêng: StripePaymentSheet cho giao diện checkout dựng sẵn, StripePayments cho API bindings cấp thấp, cùng StripeApplePay, StripeIdentity, và StripeFinancialConnections. SDK nhắm tới iOS 15 trở lên, có bản cũ hơn cho iOS 13 hoặc 14.
Tính Năng Chính Cho Thanh Toán iOS
- ✓PaymentSheet gộp việc nhập thông tin thẻ, thông tin thanh toán, và xác nhận thanh toán vào một sheet nhúng gọn, theo README, thay vì phải tự dựng ba màn hình riêng.
- ✓Apple Pay được hỗ trợ qua module StripeApplePay, kèm một bản nhẹ hơn được xây riêng cho App Clips.
- ✓3D Secure tự động chạy khi quy định Strong Customer Authentication ở châu Âu yêu cầu, nên bạn không phải tự viết logic SCA riêng.
- ✓StripePayments cung cấp trực tiếp các API bindings cấp thấp của Stripe, gồm cả STPCardValidator để kiểm tra dữ liệu thẻ nếu bạn tự dựng form thay vì dùng PaymentSheet.
- ✓StripeIdentity thu thập giấy tờ tuỳ thân và ảnh selfie cho API Identity của Stripe, còn StripeFinancialConnections liên kết tài khoản ngân hàng của người dùng với tài khoản merchant trên Stripe.
- ✓Quét thẻ được tích hợp sẵn trong PaymentSheet: chỉ cần thêm chuỗi NSCameraUsageDescription vào plist của ứng dụng.
- ✓Các màn hình có sẵn của SDK được localize sang hàng chục ngôn ngữ theo danh sách trong README, gồm cả tiếng Việt, tiếng Pháp, tiếng Đức, tiếng Nhật, và tiếng Hàn.
Bắt Đầu Cài Đặt
Stripe iOS SDK cài đặt qua Cocoapods hoặc Swift Package Manager, cả hai đều được hỗ trợ chính thức theo README. Nếu link framework thủ công, bạn cần lấy một bản release có gắn tag từ trang releases trên GitHub và nhúng đầy đủ xcframework cần thiết cho module đang dùng; với module Stripe cốt lõi, đó là Stripe, Stripe3DS2, StripeApplePay, StripePayments, StripePaymentsUI, StripeFinancialConnectionsLite, StripeIssuing, StripeCore, và StripeUICore. SDK nhắm tới ứng dụng build cho iOS 15 trở lên, chạy được với mọi phiên bản Xcode mà Apple hiện đang hỗ trợ, cộng thêm Catalyst trên macOS 12 trở lên. Ứng dụng còn cần iOS 13 hoặc 14 phải giữ nguyên bản 25.17.0 cũ thay vì bản hiện tại.
Tích Hợp Thanh Toán Vào Ứng Dụng
Để bắt đầu nhận thanh toán, bạn nên đi theo hướng dẫn tích hợp chính thức của Stripe và các dự án ví dụ trong repo thay vì một đoạn code ngắn gọn; README trỏ tới dự án PaymentSheet Example như điểm khởi đầu được khuyến nghị, cùng một dự án riêng là Non-Card Payment Examples cho các phương thức thanh toán nằm ngoài luồng của PaymentSheet. Bản thân PaymentSheet chấp nhận hơn 10 phương thức thanh toán chỉ qua một lần tích hợp, theo README, nên phần lớn ứng dụng không cần tự viết riêng luồng cho từng phương thức. Bật quét thẻ chỉ cần đổi một dòng trong plist: thêm NSCameraUsageDescription kèm lý do sử dụng camera, và PaymentSheet sẽ tự hiện nút Scan Card. Với những gì PaymentSheet chưa lo được, StripePayments cung cấp API client cấp thấp để bạn tự dựng giao diện riêng trên nền đó.
Điểm mạnh
- ✓Dữ liệu thẻ nhạy cảm đi thẳng tới Stripe thay vì chạm vào server của bạn, theo README, giúp cắt bớt phạm vi tuân thủ PCI ở phía backend.
- ✓Luồng một-sheet của PaymentSheet nghĩa là ít giao diện tuỳ chỉnh phải dựng và test hơn so với tự viết riêng màn hình nhập thẻ, địa chỉ thanh toán, và xác nhận.
- ✓3D Secure và Strong Customer Authentication được xử lý tự động cho giao dịch tại châu Âu.
- ✓Giấy phép MIT nên không ràng buộc độc quyền lên phần code client, dù dùng thực tế vẫn cần tài khoản Stripe.
- ✓Các module được tách theo chức năng (Identity, Financial Connections, Apple Pay, Connect), nên bạn chỉ cài framework ứng dụng thật sự cần.
Khi Nào Không Nên Dùng SDK
- △Đây là SDK thật của Stripe, không phải công cụ demo: dùng để xử lý thanh toán thật cần có tài khoản Stripe đang hoạt động, và hàng hoá số tiêu thụ trong ứng dụng phải đi qua API in-app purchase của Apple thay vì SDK này, theo đúng hướng dẫn của README và quy định review App Store của Apple.
- △README không có sẵn đoạn code getting-started ngay trong file: bạn được dẫn sang hướng dẫn tích hợp bên ngoài của Stripe và các dự án ví dụ trước khi viết dòng code tích hợp đầu tiên.
- △Link thủ công nghĩa là phải nhúng chín xcframework riêng biệt chỉ cho module Stripe cốt lõi, nhiều việc quản lý hơn hẳn một dependency Cocoapods hay SPM duy nhất.
- △iOS 13 và 14 không còn được bản hiện tại hỗ trợ; ứng dụng nhắm tới các phiên bản đó phải giữ nguyên bản 25.17.0 cũ.
- △SDK thu thập dữ liệu để phòng gian lận và cải thiện sản phẩm, theo phần chính sách riêng tư, nên đội ngũ cần tuân thủ nghiêm ngặt về tối thiểu hoá dữ liệu nên xem lại những gì được thu thập trước khi phát hành.
Cân Nhắc In-App Purchase Của Apple
Câu Hỏi Thường Gặp
Stripe iOS SDK nhắm tới ứng dụng build cho iOS 15 trở lên theo README, và chạy được với mọi phiên bản Xcode mà Apple hiện đang hỗ trợ, cộng thêm Catalyst trên macOS 12 trở lên. Ứng dụng vẫn hỗ trợ iOS 13 hoặc 14 cần dùng bản 25.17.0 cũ thay vì SDK hiện tại.
Stripe iOS SDK hỗ trợ Apple Pay qua module StripeApplePay, và README còn cung cấp thêm một bản nhẹ hơn được xây riêng cho App Clips.
Stripe iOS SDK được xây để đạt chuẩn PCI: dữ liệu thẻ nhạy cảm được gửi thẳng tới Stripe thay vì đi qua server của bạn, đúng như cách README mô tả việc giữ backend của bạn ngoài phạm vi PCI.
Stripe iOS SDK không phải công cụ phù hợp cho hàng hoá hay dịch vụ số tiêu thụ trong ứng dụng, như gói đăng ký hay tiền tệ trong game; quy định review App Store của Apple yêu cầu dùng API in-app purchase của chính Apple cho trường hợp đó, theo ghi chú recommended-usage trong README. Stripe iOS SDK phục vụ các tình huống thanh toán khác.
Stripe iOS SDK được phát hành theo giấy phép MIT, ghi trong file LICENSE của repository và trên trang GitHub của nó.
Các màn hình có sẵn của Stripe iOS SDK được localize sang hàng chục ngôn ngữ, gồm tiếng Việt, tiếng Pháp, tiếng Đức, tiếng Nhật, tiếng Hàn, và nhiều ngôn ngữ khác theo danh sách trong README, nên PaymentSheet không cần thêm công dịch riêng cho các khu vực đó.
Vấn đề Stripe iOS SDK giải quyết
Xử lý số thẻ trực tiếp trong ứng dụng iOS thường đồng nghĩa với việc bạn phải tự gánh phạm vi PCI và tự viết logic 3D Secure cho khách hàng châu Âu, còn quy định App Store của Apple thêm một ràng buộc nữa: hàng hoá số tiêu thụ ngay trong ứng dụng không được phép thanh toán qua Stripe hay bất kỳ bên xử lý ngoài nào, chỉ được dùng API in-app purchase của chính Apple. Chính README của Stripe iOS SDK nêu rõ ranh giới đó: hàng hoá tiêu thụ trong app đi qua Apple, còn mọi trường hợp khác có thể chạy qua SDK này, vốn gửi dữ liệu thẻ nhạy cảm thẳng tới Stripe thay vì server của bạn và dựng sẵn giao diện checkout đạt chuẩn SCA qua PaymentSheet.
Trường hợp sử dụng tốt nhất
- •Thêm luồng checkout vào ứng dụng iOS đã có sẵn tài khoản merchant trên Stripe, dùng PaymentSheet thay vì tự dựng giao diện nhập thẻ từ đầu.
- •Tự dựng form thanh toán riêng nhưng vẫn dựa vào lớp validate và API của Stripe qua StripePayments và STPCardValidator.
- •Xác minh giấy tờ tuỳ thân và ảnh selfie của người dùng ngay trong ứng dụng qua StripeIdentity.
- •Liên kết tài khoản ngân hàng của người dùng để chi trả hoặc kiểm tra số dư qua StripeFinancialConnections.
- •Triển khai nút Apple Pay gọn nhẹ trong một App Clip, chỉ dùng riêng module StripeApplePay.
Ai nên dùng — và ai nên bỏ qua
Hãy thử Stripe iOS SDK nếu ứng dụng của bạn đã dùng tài khoản merchant trên Stripe và bạn muốn Apple Pay, quét thẻ, và checkout đạt chuẩn SCA mà không phải tự viết lớp tuân thủ đó. PaymentSheet giúp bạn đạt điều đó nhanh nhất; StripePayments có sẵn nếu bạn cần giao diện tuỳ chỉnh riêng. Bỏ qua nếu bạn bán bất cứ thứ gì tiêu thụ trong ứng dụng, như gói đăng ký hay tiền tệ trong game, vì trường hợp đó bắt buộc dùng API in-app purchase của Apple. Cũng nên bỏ qua nếu bạn không có, hoặc không muốn có, tài khoản Stripe, vì SDK này được xây riêng quanh API của Stripe.
Repo liên quan
Chưa chắc stripe-ios có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về stripe-ios.
