Luồng thanh toán
Bahn SDK xác nhận thanh toán theo một trong hai cách: xác nhận trực tiếp, khi trình duyệt xác nhận một intent mà backend của bạn đã tạo sẵn, và dựa trên token, khi trình duyệt token hóa thẻ còn backend của bạn thực hiện xác nhận. Việc lưu thẻ dùng một luồng thứ ba là luồng setup intent.
| Bạn muốn… | Luồng | Trình duyệt gọi | Ví dụ |
|---|---|---|---|
| Thu một số tiền đã biết trước | Xác nhận thanh toán | confirmPayment() | HTML · React |
| Chốt số tiền trên server sau khi biết thẻ | Luồng dựa trên token | createConfirmationToken(), rồi handleNextAction() | Trình duyệt + server |
| Lưu thẻ mà không trừ tiền | Lưu thẻ | confirmCardSetup() | Trình duyệt + server |
Mỗi luồng đều có thể kích hoạt thử thách 3D Secure — xem Xác thực 3DS.
Apple Pay và Google Pay hỗ trợ cả hai luồng thanh toán: truyền clientSecret vào bahn.mountApplePay()/bahn.mountGooglePay() để xác nhận trực tiếp, hoặc bỏ qua nó để dùng luồng dựa trên token.
So sánh
| Xác nhận thanh toán | Luồng dựa trên token | |
|---|---|---|
| Ai tạo payment intent | Backend của bạn, trước khi thanh toán | Backend của bạn, sau khi nhận token |
| Ai xác nhận | Trình duyệt (confirmPayment()) | Backend của bạn |
| Có thể đổi số tiền sau khi nhập thẻ | Không | Có |
| Xử lý 3DS | mount3DS() + pollPaymentIntentStatus() | handleNextAction() xử lý cả hai |
Kiểu đầy đủ của tham số và kết quả cho mọi luồng có tại Định nghĩa kiểu.