【发布时间】:2018-05-18 00:27:30
【问题描述】:
我正在使用 Stripe 让我的客户保存信用卡并支付发票(具有唯一 ID)。付款时,我使用表单向我的服务器发送带有卡 ID(由条带提供)的 POST 请求,控制器对其收费。然后我将发票标记为我方已付款。
事实证明,如果我足够快地双击表单的提交按钮,我会发送两个 POST 请求,并且卡最终会被收取两次费用,因为当第二个 POST 请求到达我的服务器时,我的服务器到 Stripe 的 POST 请求API(从第一次点击开始)尚未完成,因此尚未将发票标记为已付款。
我正在考虑在第一次点击后禁用表单提交按钮,但我觉得可能有更简洁的方法。
Stripe 是否可以防止重复收费(可能使用我的发票 ID)?如果不是,我这边最好的后端方法是什么?
【问题讨论】:
-
在表单的隐藏字段中放置一个唯一的交易 ID(它只需要是用户 ID 和时间戳的哈希值,或类似的东西)并让您的服务器记住交易 ID它被发送到 Stripe 并拒绝发送重复提交。