Клиентское приложение, вызывающее Stripe API после выхода из формы карты, для будущей оплаты

#react-native #stripe-payments #strong-customer-authentication

#react-native #stripe-платежи #строгая проверка подлинности клиента

Вопрос:

Я добавляю Stripe 3D secure в приложение React-Native, следуя документу по адресу https://stripe.com/docs/payments/save-and-reuse — сохраните карту и списывайте средства после завершения сеанса, когда услуга будет завершена.

Для сохранения карты мое приложение использует компонент WebView для загрузки HTML, используя <script src="https://js.stripe.com/v3/"></script> . Он успешно сохранил секрет клиента и вышел из формы карты.

Вопрос: Во время оплаты позже, в случае, если требуется следующее действие для строгой аутентификации клиента, как снова получить объект stripe для вызова stripe.confirmCardPayment() ?

Я пробовал ниже, но потерпел неудачу — catch (ошибка), и ошибка пуста.

 import {loadStripe} from '@stripe/stripe-js';

confirmPayment = async () => {
  try {
    const stripe = await loadStripe("pk_test_...");

//    stripe
//       .confirmPaymentIntent('{PAYMENT_INTENT_CLIENT_SECRET}', {
//           payment_method: '{PAYMENT_METHOD_ID}',
//           return_url: 'https://example.com/return_url',
//       })
//       .then(function(result) {
//
//       });

  } catch(error) {
    console.error(`failed to load stripe ${JSON.stringify(error)}`);
  }
  

Ответ №1:

Вы можете использовать stripe.confirmCardPayment различными способами. В вашем случае у вас, вероятно, уже есть ИДЕНТИФИКАТОР PaymentMethod, что означает, что вы можете подтвердить клиентскую сторону PaymentIntent этим идентификатором PaymentMethod вместо объекта Elements:

 stripe
  .confirmCardPayment('{PAYMENT_INTENT_CLIENT_SECRET}', {
    payment_method: '{PAYMENT_METHOD_ID}',
  })
  .then(function(result) {
    // Handle result.error or result.paymentIntent
  });
  

Комментарии:

1. Как мне получить объект stripe? Спасибо.

2. Вам нужно будет включить и инициализировать Stripe.js на вашей странице: stripe.com/docs/js/initializing