Реакция - Использование asyn c с полосой createPaymentMethod - PullRequest
1 голос
/ 09 апреля 2020

Я мигрирую с Stripe V2 на V3.

В V2 я использовал asyn c метод для получения токена полосы

  Stripe.card.createToken({
    number: creditCardNumber,
    cvc: securityCode,
    name: creditCardHolderName,
    exp_month: expiryMonth,
    exp_year: expiryYear,
  }, async (status, response) => {
    console.log('do stuff here')
  })

И это прекрасно работает

Но когда я использую createPaymentMethod из Stripe V3 таким же образом:

  stripe.createPaymentMethod({
    type: 'card',
    card: cardElement,
    billing_details: {
      name: 'Jenny Rosen',
    },
  }, async (status, response) => {
    console.log('do stuff here')
  })

Сетевой запрос к Stripe работает и возвращает 200 успехов, но не достигает оператора console.log.

Я что-то здесь не так делаю? Я не понимаю, почему это не сработает.

Спасибо

1 Ответ

1 голос
/ 09 апреля 2020

Причина, по которой ваш вызов V2 stripe.card.createToken() работает должным образом, заключается в том, что эта функция принимает 2 аргумента: полезную нагрузку и обработчик ответа. Принимая во внимание, что V3 stripe.createPaymentMethod() не позволяет использовать тот же синтаксис, он только принимает полезную нагрузку и возвращает Promise.

Чтобы использовать async / await с createPaymentMethod (), вы можете попробовать настроить свой синтаксис следующим образом:

const { paymentMethod, error } = await stripe.createPaymentMethod({
    type: 'card',
    card: cardElement,
    billing_details: {
      name: 'Jenny Rosen',
    },
});

В качестве альтернативы, традиционный Promise.then() также должен работать.

Пример:

stripe.createPaymentMethod({
    type: 'card',
    card: cardElement,
    billing_details: {
      name: 'Jenny Rosen',
    },
}).then(({ paymentMethod, error }) => {
    // do your stuff here...
});
...