如何检查是否已使用条纹支付令牌

时间:2018-10-15 14:24:46

标签: php stripe-payments

调用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"
));

问题:

问题在于,如果我刷新结果页面,则会重新提交表单,并且检测到过期的令牌异常-因为一次性令牌已第二次发布。

问题:

有没有一种方法可以提前检测令牌是否已被使用(在创建计费对象之前)?还是在付款逻辑完成之后重定向到新页面的更好的做法,这样,如果用户刷新页面,就不会再次提交表单了?

1 个答案:

答案 0 :(得分:2)

令牌object具有used property,可为您提供此信息。您只需调用检索令牌API即可确认此信息。

这可能是错误的方法。相反,您应该防止这种情况的发生。最好的选择是在创建费用后将您的客户重定向到其他页面,以便重新加载页面不会错误地重新提交表单数据。