Làm cách nào để tôi thanh toán bằng Stripe API?

Sử dụng API Mục đích thanh toán để tạo tích hợp có thể xử lý các luồng thanh toán phức tạp. Nó theo dõi thanh toán từ khi tạo đến khi thanh toán và kích hoạt các bước xác thực bổ sung khi được yêu cầu

Một số lợi ích của việc sử dụng API Mục đích thanh toán bao gồm.

  • Xử lý xác thực tự động
  • Không tính phí gấp đôi
  • Không có vấn đề chính idempotency
  • Hỗ trợ cho Xác thực khách hàng hiệu quả [SCA] và các thay đổi quy định tương tự

Một bộ API hoàn chỉnh

Sử dụng API Mục đích thanh toán cùng với API Mục đích thiết lập và Phương thức thanh toán. Các API này giúp bạn xử lý các khoản thanh toán động [ví dụ: xác thực bổ sung như 3D Secure ] và chuẩn bị cho bạn mở rộng sang các quốc gia khác đồng thời cho phép bạn hỗ trợ các quy định mới .

Xây dựng tích hợp với API Mục đích thanh toán bao gồm hai hành động. tạo và xác nhận Mục đích thanh toán. Mỗi PaymentIntent thường tương quan với một giỏ hàng hoặc phiên khách hàng trong ứng dụng của bạn. PaymentIntent gói gọn chi tiết về giao dịch, chẳng hạn như các phương thức thanh toán được hỗ trợ, số tiền cần thu và loại tiền mong muốn.

Tạo một PaymentIntent

Để bắt đầu, hãy xem hướng dẫn chấp nhận thanh toán. Nó mô tả cách tạo PaymentIntent trên máy chủ và chuyển của nó tới máy khách thay vì chuyển toàn bộ đối tượng PaymentIntent. Khách hàng xác nhận thanh toán và máy chủ của bạn sẽ phát hiện khi thanh toán thành công hay thất bại.

Khi bạn tạo PaymentIntent, bạn có thể chỉ định các tùy chọn như số tiền và đơn vị tiền tệ

Xoăn

Sọc CLI

hồng ngọc

con trăn

PHP

Java

Nút

Đi

NET

Dòng lệnh

curl //api.stripe.com/v1/payment_intents \ -u

sk_test_Ou1w6LVt3zmVipDVJsvMeQsc

: \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card

Thực hành tốt nhất

Chúng tôi khuyên bạn nên tạo Mục đích thanh toán ngay khi bạn biết số tiền, chẳng hạn như khi khách hàng bắt đầu quy trình thanh toán, để giúp theo dõi kênh bán hàng của bạn. Nếu số tiền thay đổi, bạn có thể. Ví dụ: nếu khách hàng của bạn thoát khỏi quy trình thanh toán và thêm các mặt hàng mới vào giỏ hàng của họ, bạn có thể cần cập nhật số tiền khi họ bắt đầu lại quy trình thanh toán

Nếu quá trình thanh toán bị gián đoạn và tiếp tục sau đó, hãy cố gắng sử dụng lại PaymentIntent tương tự thay vì tạo một cái mới. Mỗi PaymentIntent có một ID duy nhất mà bạn có thể sử dụng nếu bạn cần lại. Trong mô hình dữ liệu của ứng dụng, bạn có thể lưu trữ ID của PaymentIntent trên giỏ hàng hoặc phiên mua hàng của khách hàng để tạo điều kiện truy xuất. Lợi ích của việc sử dụng lại PaymentIntent là đối tượng giúp theo dõi mọi lần thanh toán không thành công cho một giỏ hàng hoặc phiên nhất định

Bạn cũng nên cung cấp khóa idempotency khi tạo PaymentIntent để tránh tạo nhầm các PaymentIntent trùng lặp cho cùng một giao dịch mua. Khóa này thường dựa trên ID mà bạn liên kết với giỏ hàng hoặc phiên khách hàng trong ứng dụng của mình

Truyền bí mật của khách hàng cho phía khách hàng

Mục đích thanh toán chứa , một khóa duy nhất cho Mục đích thanh toán riêng lẻ. Về phía máy khách của ứng dụng của bạn, Stripe. js sử dụng bí mật ứng dụng khách làm tham số khi gọi các hàm [chẳng hạn như hoặc ] để hoàn tất thanh toán

Để sử dụng bí mật ứng dụng khách, bạn phải lấy nó từ PaymentIntent trên máy chủ của mình và chuyển nó cho phía ứng dụng khách. Bạn có thể sử dụng các cách tiếp cận khác nhau để lấy bí mật của khách hàng cho phía khách hàng. Chọn cách tiếp cận phù hợp nhất với kiến ​​trúc ứng dụng của bạn

Ứng dụng một trang

Kết xuất phía máy chủ

Bạn có thể truy xuất bí mật ứng dụng khách từ một điểm cuối trên máy chủ của mình bằng chức năng fetch của trình duyệt ở phía ứng dụng khách. Đây thường là cách tiếp cận tốt nhất khi phía máy khách của bạn là ứng dụng một trang, đặc biệt là ứng dụng được xây dựng với khung giao diện người dùng hiện đại như React. Ví dụ này cho thấy cách tạo điểm cuối máy chủ phục vụ bí mật máy khách

hồng ngọc

con trăn

PHP

Java

Nút

Đi

NET

chủ yếu. rb

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Ví dụ này trình bày cách tìm nạp bí mật ứng dụng khách bằng JavaScript ở phía ứng dụng khách

[async [] => { const response = await fetch['/secret']; const {client_secret: clientSecret} = await response.json[]; // Call stripe.confirmCardPayment[] with the client secret. }][];

Bạn có thể sử dụng bí mật khách hàng để hoàn tất quy trình thanh toán với số tiền được chỉ định trên PaymentIntent. Không đăng nhập, nhúng nó vào URL hoặc hiển thị nó cho bất kỳ ai khác ngoài khách hàng. Đảm bảo rằng bạn có trên bất kỳ trang nào có chứa bí mật khách hàng.

Tối ưu hóa thẻ cho các khoản thanh toán trong tương lai

Tham số lưu các phương thức thanh toán để sử dụng lại trong tương lai. Đối với thẻ, nó cũng tối ưu hóa tỷ lệ ủy quyền tuân thủ luật pháp khu vực và quy tắc mạng, chẳng hạn như SCA. Để xác định nên sử dụng giá trị nào, hãy xem xét cách bạn muốn sử dụng phương thức thanh toán này trong tương lai

Cách bạn định sử dụng phương thức thanh toánsetup_future_usage giá trị enum sẽ sử dụng Chỉ thanh toán trong phiên on_session Tắt payments onlyoff_sessionBoth on and off-session paymentsoff_session

Bạn vẫn có thể chấp nhận thanh toán ngoài phiên bằng thẻ được thiết lập để thanh toán trong phiên nhưng ngân hàng có nhiều khả năng sẽ từ chối .

Ví dụ sau đây cho thấy cách tạo PaymentIntent và chỉ định

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

0

Xoăn

Sọc CLI

hồng ngọc

con trăn

PHP

Java

Nút

Đi

NET

Dòng lệnh

curl //api.stripe.com/v1/payment_intents \ -u

sk_test_Ou1w6LVt3zmVipDVJsvMeQsc

: \ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session

Thiết lập thanh toán ngoài phiên có nhiều khả năng phát sinh thêm bất đồng. Sử dụng thiết lập trong phiên nếu bạn không có ý định chấp nhận thanh toán ngoài phiên bằng thẻ đã lưu.

Bộ mô tả câu lệnh động

Theo mặc định, tài khoản Stripe của bạn xuất hiện trên bảng sao kê của khách hàng bất cứ khi nào bạn tính tiền vào thẻ của họ. Để cung cấp một mô tả khác trên cơ sở mỗi khoản thanh toán, hãy bao gồm thông số

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

1

Xoăn

Sọc CLI

hồng ngọc

con trăn

PHP

Java

Nút

Đi

NET

Dòng lệnh

curl //api.stripe.com/v1/payment_intents \ -u

sk_test_Ou1w6LVt3zmVipDVJsvMeQsc

: \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d statement_descriptor="Custom descriptor"

Bộ mô tả câu lệnh được giới hạn ở 22 ký tự, không thể sử dụng các ký tự đặc biệt

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

2,

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

3,

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

4,

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

5 hoặc

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

6 và không được chỉ bao gồm các số. Khi sử dụng bộ mô tả câu lệnh động, văn bản động được thêm vào tiền tố bộ mô tả câu lệnh được đặt trong Bảng điều khiển Stripe. Dấu hoa thị [

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

6] và khoảng trống cũng được thêm vào để phân tách bộ mô tả câu lệnh mặc định khỏi phần động. Hai ký tự này được tính vào giới hạn 22 ký tự

Lưu trữ thông tin trong siêu dữ liệu

Stripe hỗ trợ thêm vào các yêu cầu phổ biến nhất mà bạn thực hiện, chẳng hạn như xử lý thanh toán. Siêu dữ liệu không được hiển thị cho khách hàng hoặc được tính vào việc liệu một khoản thanh toán có bị hệ thống phòng chống gian lận của chúng tôi từ chối hoặc chặn hay không

Thông qua siêu dữ liệu, bạn có thể liên kết thông tin khác có ý nghĩa với bạn với hoạt động của Stripe

Bất kỳ siêu dữ liệu nào bạn đưa vào đều có thể xem được trong Trang tổng quan [ví dụ: khi xem trang cho một khoản thanh toán riêng lẻ] và cũng có sẵn trong các báo cáo chung. Ví dụ: bạn có thể đính kèm ID đơn hàng cho cửa hàng của mình với PaymentIntent cho đơn hàng đó. Làm như vậy cho phép bạn dễ dàng đối chiếu các khoản thanh toán trong Stripe với các đơn đặt hàng trong hệ thống của mình

Nếu bạn đang sử dụng Radar cho các nhóm gian lận , hãy xem xét việc chuyển bất kỳ thông tin khách hàng và thông tin đặt hàng bổ sung nào dưới dạng siêu dữ liệu.

Bằng cách đó, bạn có thể viết và có thêm thông tin trong Trang tổng quan, điều này có thể đẩy nhanh quá trình xem xét của bạn

Khi PaymentIntent tạo một khoản phí, PaymentIntent sao chép siêu dữ liệu của nó vào khoản phí. Các cập nhật tiếp theo đối với siêu dữ liệu của PaymentIntent sẽ không sửa đổi siêu dữ liệu của các khoản phí được PaymentIntent tạo trước đó

Xoăn

Sọc CLI

hồng ngọc

con trăn

PHP

Java

Nút

Đi

NET

Dòng lệnh

curl //api.stripe.com/v1/payment_intents \ -u

sk_test_Ou1w6LVt3zmVipDVJsvMeQsc

: \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "metadata[order_id]"=6735

Không lưu trữ bất kỳ thông tin nhạy cảm nào [thông tin nhận dạng cá nhân, chi tiết thẻ, v.v.] dưới dạng siêu dữ liệu hoặc trong thông số

get '/secret' do intent = # .. Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

8 của PaymentIntent

Chủ Đề