1. PaymentIntent là gì?
– PaymentIntent là một khái niệm quan trọng trong Stripe, được sử dụng để quản lý vòng đời của một giao dịch thanh toán. Nó đại diện cho một nỗ lực thu tiền từ khách hàng và được thiết kế để xử lý các luồng thanh toán phức tạp, bao gồm xác thực nhiều bước và thử lại các thanh toán thất bại.
– PaymentIntent là một đối tượng trong Stripe giúp quản lý quá trình thanh toán từ lúc bắt đầu đến khi hoàn thành.
– Nó hỗ trợ nhiều phương thức thanh toán khác nhau (thẻ tín dụng, chuyển khoản ngân hàng, ví điện tử, v.v.) và các luồng thanh toán (một lần, định kỳ, v.v.).
– PaymentIntent tự động xử lý các yêu cầu xác thực (ví dụ: 3D Secure) và theo dõi trạng thái của thanh toán.
2. Tại sao cần sử dụng PaymentIntent?
– Hỗ trợ nhiều phương thức thanh toán: PaymentIntent tích hợp nhiều phương thức thanh toán khác nhau, giúp bạn không cần phải viết mã riêng cho từng phương thức.
– Xử lý xác thực phức tạp: Tự động xử lý các yêu cầu xác thực như 3D Secure, giúp thanh toán an toàn hơn.
– Quản lý trạng thái thanh toán: Theo dõi trạng thái của thanh toán (ví dụ: đang chờ, đã thành công, đã hủy) để dễ dàng quản lý.
– Tách biệt client và server: PaymentIntent tách biệt logic phía máy chủ (tạo thanh toán) và phía máy khách (xác nhận thanh toán), giúp hệ thống an toàn và linh hoạt hơn.
3. Vòng đời của PaymentIntent
1. Created: PaymentIntent được tạo nhưng chưa được xác nhận.
2. Requires Payment Method: PaymentIntent đang chờ khách hàng cung cấp thông tin thanh toán (ví dụ: thẻ tín dụng).
3. Requires Confirmation: PaymentIntent sẵn sàng để xác nhận thanh toán phía máy chủ.
4. Requires Action: PaymentIntent yêu cầu hành động bổ sung từ khách hàng (ví dụ: xác thực 3D Secure).
5. Processing: PaymentIntent đang được xử lý bởi Stripe.
6. Succeeded: PaymentIntent đã thành công, và tiền đã được thu.
7. Canceled: PaymentIntent đã bị hủy, và không có tiền nào được thu.
4. Cách hoạt động của PaymentIntent
1. Tạo PaymentIntent: Phía máy chủ, bạn tạo một PaymentIntent với các thông tin như số tiền, loại tiền tệ, và các tham số khác.
2. Thu thập thông tin thanh toán: Phía máy khách (frontend), bạn sử dụng Stripe.js hoặc SDK di động để thu thập thông tin thanh toán từ khách hàng.
3. Xác nhận thanh toán: Phía máy chủ, bạn xác nhận PaymentIntent bằng cách sử dụng phương thức thanh toán được cung cấp bởi máy khách.
4. Xử lý xác thực: Nếu cần xác thực bổ sung (ví dụ: 3D Secure), Stripe sẽ hướng dẫn khách hàng thực hiện.
5. Hoàn thành thanh toán: Khi PaymentIntent được xác nhận và mọi yêu cầu xác thực được hoàn thành, Stripe sẽ thu tiền.
5. Khi nào sử dụng PaymentIntent?
- Khi bạn cần xử lý thanh toán một lần (one-time payments).
- Khi bạn cần hỗ trợ nhiều phương thức thanh toán khác nhau.
- Khi bạn cần xử lý các yêu cầu xác thực phức tạp như 3D Secure.
- Khi bạn muốn tách biệt logic phía máy chủ và phía máy khách để đảm bảo an toàn.