Как работать с Stripe 3D Secure при создании PaymentMethod на клиенте для нескольких платежей на сервере - PullRequest
1 голос
/ 12 марта 2020

На моем рынке у меня есть требование:

  • Попросить клиента ввести данные своей карты
  • После того, как данные карты будут отправлены, обработайте несколько счетов с этой карты на стороне сервера.

Я использую полосу. js и создаю PaymentMethod на стороне клиента с помощью stripe.createPaymentMethod ()

Идентификатор PaymentMethod публикуется на сервере, который затем выполняет следующие действия через библиотеку API Stripe для PHP:

  • Извлекает PaymentMethod из Stripe с использованием опубликованного идентификатора
  • Создает клиента в Stripe, указывая 'payment_method'
  • Создает несколько PaymentIntents, указав 'payment_method', 'customer', 'save_payment_method' как true и 'подтвердите' как true.

Я сейчас хочу обработать сценарий ios, где Stripe требует использования 3D Secure.

Существует ли способ проверки 3D Secure на клиенте до запроса к серверу, при использовании stripe.createPaymentMethod ()?

Если нет, какая у меня альтернатива?

Похоже, что пользователь, выполняющий шаги 3D Secure, возвращает только PaymentIntent. Я не верю, что смогу использовать это, чтобы сделать несколько обвинений против карты. В этом вся причина использования createPaymentMethod () на клиенте.

Есть идеи, как go узнать об этом?

1 Ответ

0 голосов
/ 12 марта 2020

Есть ли способ проверки 3D Secure на клиенте до запроса к серверу при использовании stripe.createPaymentMethod ()?

Подход для обработки Для аутентификации 3D Secure на клиенте необходимо использовать методы confirmCardPayment [0] или handleCardAction [1] в Stripe. js. Если у вас нет конкретных c потребностей, вы, скорее всего, захотите использовать confirmCardPayment и следовать этому руководству здесь:

https://stripe.com/docs/payments/accept-a-payment

Я должен отметить, что оба эти метода работают только для обработки одного платежа за раз. В вашем случае у вас есть несколько способов оплаты, поэтому вам придется вызывать один из методов один раз за транзакцию. То есть, если у вас есть три способа оплаты, вам нужно будет позвонить confirmCardPayment три раза, повторив последний шаг в руководстве [2] также много раз.

Это означает, что это технически возможно (но маловероятно), что вашим пользователям, возможно, придется проходить аутентификацию несколько раз для обработки каждого из своих платежей.

К сожалению, для этого действительно нет обходных путей. Даже если вам нужно было настроить карточку пользователя с помощью SetupIntents [3] и позднее списать ее с сеанса, существует риск, что вам потребуется вернуть пользователя в сеанс для аутентификации каждого отдельного платежного намерения.

При этом большинство ваших пользователей, вероятно, не столкнутся со сценарием, в котором им нужно будет проходить аутентификацию несколько раз подряд.

Единственным другим вариантом будет создание единого платежного намерения, покрывающего полную стоимость вашего продукта / услуги, что позволит вам позвонить confirmCardPayment только один раз.

[0] https://stripe.com/docs/js/payment_intents/confirm_card_payment

[1] https://stripe.com/docs/js/payment_intents/handle_card_action

[2] https://stripe.com/docs/payments/accept-a-payment#web -платежный платеж

[3] https://stripe.com/docs/payments/save-and-reuse

...