node.js - 如何使用 Stripe 防止重复收费?

标签 node.js stripe-payments

我正在使用 Stripe 让我的客户保存信用卡并支付发票(具有唯一 ID)。付款时,我使用表单向我的服务器发送带有卡 ID(由 strip 提供)的 POST 请求,然后 Controller 对其进行收费。然后我在我这边将发票标记为已付款。

事实证明,如果我足够快地双击表单的提交按钮,我会发送两个 POST 请求,卡片最终会被收取两次费用,因为当第二个 POST 请求到达我的服务器时,POST 请求从我的服务器发送到 Stripe API(从第一次点击开始)尚未完成,因此发票尚未标记为已付款。

我正在考虑在第一次点击后禁用表单提交按钮,但我觉得可能有更简洁的方法。

Stripe 是否可以防止重复收费(可能使用我的发票 ID)?如果不是,在我这边执行此操作的最佳后端方法是什么?

最佳答案

在第一次点击后禁用表单提交绝对是最简单的实现方式。

另一种方法是使用记录的幂等请求 here .这个想法是您在向 Stripe 的 API 发出请求时传递一个唯一标识符,以确保您只能运行此事务一次。如果您使用完全相同的幂等键重新运行查询,您将获得第一次调用的原始响应,这确保您不会为网站上的同一“交易”创建 2 笔费用。

关于node.js - 如何使用 Stripe 防止重复收费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47635067/

相关文章:

node.js - Windows 上的 Meteor 设置问题

node.js - HAProxy 未正确运行 nodeJS API

php - 试图获取非对象的属性

javascript - 在 Laravel Blade 上嵌入 Checkout

google-cloud-functions - 将 Google Secret Manager 与 Firebase Functions 和 Stripe 结合使用(顶级)

ios - 使用 swift 集成 stripe SDK

javascript - 如何在javascript中比较array1的obj和array的obj

node.js - 运行 npm run dev 时 env-cmd 路径错误

node.js - 部署后如何解决heroku中找不到页面错误

javascript - 如何创建可变数量的 Stripe 订阅?