调用Stripe付款的标准方法是通过POST
请求通过其推荐的html表单。
来自文档:
<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后端,收费是这样处理的:
$charge = \Stripe\Charge::create(array(
"amount" => 2000,
"currency" => "usd",
"source" => $_POST['stripeToken'], // created by the form above
"description" => "Charge for some product"
));
问题:
问题在于,如果我刷新结果页面,则会重新提交表单,并且检测到过期的令牌异常-因为一次性令牌已第二次发布。
问题:
有没有一种方法可以提前检测令牌是否已被使用(在创建计费对象之前)?还是在付款逻辑完成之后重定向到新页面的更好的做法,这样,如果用户刷新页面,就不会再次提交表单了?