Skip to content

Kiểm soát 3DS ​

Theo mặc định, Bahn tự quyết định liệu một thanh toán thẻ có cần xác thực 3D Secure hay không. Tùy chọn request_three_d_secure cho phép bạn ghi đè quyết định đó và bỏ qua 3DS hoàn toàn.

Việc bỏ qua 3DS là một sự chuyển giao rủi ro, không phải một tối ưu hóa: bạn đánh đổi sự bất tiện của một thử thách lấy trách nhiệm pháp lý đối với chargeback gian lận. Vì lý do đó, tùy chọn này không khả dụng theo mặc định — xem Hạn chế bên dưới.

INFO

Trang này mô tả quyết định phía server về việc có chạy 3DS hay không. Để xử lý một thử thách sau khi nó được kích hoạt — gắn modal, callback, mã lỗi — xem Xác thực 3DS.

Hạn chế ​

Có hai điều khiến một request yêu cầu never bị từ chối. Trong cả hai trường hợp, lệnh gọi create hoặc confirm sẽ thất bại và không có thanh toán nào được thử — never không bao giờ bị âm thầm hạ cấp về automatic.

Tài khoản của bạn phải được bật tính năng này ​

request_three_d_secure: never được bật theo từng tài khoản merchant và mặc định là tắt. Liên hệ Bahn (account manager của bạn) để được bật tính năng này trước khi tích hợp.

Gửi never từ một tài khoản chưa được bật tính năng này sẽ khiến request bị từ chối. Đừng triển khai code gửi never với giả định rằng nó sẽ bị bỏ qua. Cho đến khi Bahn xác nhận tài khoản của bạn đã được bật, hãy bỏ trường này.

Không thể kết hợp với việc lưu thẻ ​

Xác thực là bắt buộc khi một thẻ đang được lưu để sử dụng off-session trong tương lai. Một request yêu cầu vừa bỏ qua 3DS vừa lưu thẻ sẽ bị từ chối — quy tắc lưu thẻ được ưu tiên, và never không thể ghi đè nó.

Nếu bạn cần lưu thẻ, hãy dùng automatic (hoặc bỏ trường này). Xem Lưu thẻ & thanh toán định kỳ.

automatic là giá trị mặc định cho mọi tài khoản, không cần được bật, và không chịu bất kỳ hạn chế nào trong hai hạn chế trên.

Các tùy chọn ​

Đặt tùy chọn này dưới payment_method_options.card:

Giá trịHành vi
automaticMặc định, và là giá trị áp dụng khi trường này bị bỏ qua. Các quy tắc 3DS của Bahn sẽ quyết định, dựa trên thẻ, số tiền, và các tín hiệu rủi ro của thanh toán. Một số thanh toán sẽ bị thử thách, một số thì không.
neverBỏ qua 3DS cho thanh toán này, ghi đè các quy tắc của Bahn. Chịu các hạn chế bên dưới — không khả dụng cho mọi tài khoản, và không thể kết hợp với việc lưu thẻ.

Cái giá của never ​

  • Không có sự chuyển giao trách nhiệm (liability shift). Một thanh toán đã xác thực 3DS chuyển trách nhiệm chargeback gian lận sang ngân hàng phát hành. Nếu không có nó, một chargeback gian lận vẫn thuộc về bạn.
  • Nó không giúp thanh toán thành công hơn. Việc bỏ qua xác thực không ngăn ngân hàng phát hành từ chối ủy quyền dựa trên đánh giá rủi ro riêng của họ.

Những gì nó không ảnh hưởng ​

Device network token không bị ảnh hưởng dù thế nào. DPAN của Apple Pay và Google Pay mang theo xác thực chủ thẻ riêng từ thiết bị, vì vậy request_three_d_secure không thay đổi gì đối với chúng — dù có hay không có tùy chọn này, sự đảm bảo riêng của ví điện tử vẫn được áp dụng. Xem Apple Pay.

Đặt tùy chọn ​

payment_method_options được chấp nhận trên cả create và confirm. Đặt nó trên lệnh gọi nào thực hiện thanh toán.

Khi tạo (create), khi bạn confirm trong cùng lệnh gọi:

http
POST /api/payment_intents
json
{
  "amount": 100000,
  "currency": "704",
  "confirm": true,
  "payment_method_id": "pm_01HZ3XA2K4T7QJ0M9C5N8E1D3F",
  "payment_method_options": {
    "card": {
      "request_three_d_secure": "never"
    }
  }
}

Khi confirm, cho một PaymentIntent bạn đã tạo trước đó:

http
POST /api/payment_intents/{id}/confirm
json
{
  "payment_method_id": "pm_01HZ3XA2K4T7QJ0M9C5N8E1D3F",
  "payment_method_options": {
    "card": {
      "request_three_d_secure": "never"
    }
  }
}
TrườngBắt buộcMô tả
payment_method_options.card.request_three_d_secureKhôngautomatic (mặc định) hoặc never. never yêu cầu tùy chọn này phải được bật trên tài khoản merchant của bạn.

Xác nhận kết quả ​

Giá trị bạn gửi là một yêu cầu, và automatic không đảm bảo theo hướng nào cả — vì vậy đừng bao giờ chỉ dựa vào request để giả định liệu một thử thách có xảy ra hay không. Hãy đọc response của confirm:

  • 3DS đã được kích hoạt — PaymentIntent trả về requires_action với một next_action kiểu use_sdk (three_d_secure_2), mà SDK sẽ biến thành một thử thách. Xem Xác thực 3DS.
  • 3DS không được kích hoạt — PaymentIntent chuyển thẳng sang succeeded, processing, hoặc requires_capture.

Với never được chấp nhận trên một tài khoản đã được bật, bạn sẽ không bao giờ thấy next_action của 3DS. Nếu bạn vẫn thấy, tài khoản của bạn không áp dụng tùy chọn này đúng cách — hãy liên hệ Bahn thay vì tự tìm cách vượt qua trong tích hợp của bạn.

Chọn giá trị ​

Tình huốngSử dụng
Bất kỳ trường hợp nào bạn không chắc chắnautomatic
Lưu thẻ cho các khoản tính phí off-session trong tương laiautomatic — never bị từ chối trong luồng này
Một thanh toán giá trị thấp, rủi ro thấp mà Bahn đã đồng ý để bạn chịu trách nhiệm gian lậnnever, sau khi được bật

Bỏ trống trường này luôn an toàn, và là giá trị mặc định phù hợp cho một tích hợp mới.

Developers