Как проверить, был ли использован полосовой платежный токен - PullRequest
0 голосов
/ 15 октября 2018

Стандартный способ вызвать платеж Stripe - через рекомендованную им HTML-форму через запрос POST.

Из документов:

<form action="your-server-side-code" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="my_key"
    data-amount="999"
    data-name="Demo Site"
    data-description="Widget"
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
    data-locale="auto">
  </script>
</form>

Генерируется $_POST['stripeToken'], одноразовый токен, используемый для проверки платежа.Однажды этот токен используется.Это не может быть использовано снова.

О php backend , заряд обрабатывается так:

$charge = \Stripe\Charge::create(array(
  "amount" => 2000,
  "currency" => "usd",
  "source" => $_POST['stripeToken'], // created by the form above
  "description" => "Charge for some product"
));

Проблема:

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

Вопрос:

Есть ли способ заблаговременно определить, использовался ли токен (до создания объекта заряда)?Или лучше перенаправить на новую страницу после завершения логики платежа, чтобы, если пользователь обновит страницу, форма не будет повторно отправлена ​​повторно?

1 Ответ

0 голосов
/ 15 октября 2018

Объект Token имеет свойство used , которое предоставляет вам эту информацию.Вы можете просто вызвать токен Retrieve API для подтверждения этой информации.

Хотя это, вероятно, неправильный подход.Вместо этого вы должны предотвратить возникновение этой ситуации.Лучший вариант - перенаправить клиента на другую страницу после создания платежа, чтобы при повторной загрузке страницы данные в форме не были повторно отправлены неправильно.

...