Стандартный способ вызвать платеж 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"
));
Проблема:
Проблемазаключается в том, что если я обновляю полученную страницу, форма повторно отправляется и обнаруживается исключение токена с истекшим сроком действия - потому что одноразовый токен публикуется во второй раз.
Вопрос:
Есть ли способ заблаговременно определить, использовался ли токен (до создания объекта заряда)?Или лучше перенаправить на новую страницу после завершения логики платежа, чтобы, если пользователь обновит страницу, форма не будет повторно отправлена повторно?