微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Stripe 能否更改确认付款调用如果成功和他们发送给我的网络钩子之间的付款意向状态?

如何解决Stripe 能否更改确认付款调用如果成功和他们发送给我的网络钩子之间的付款意向状态?

我有一个社交应用,我的客户将在其中使用信用卡(Visa、Master、Amex、discover)进行单次购买(积分/代币/点赞)。购买完成后,我在 Stripe 结果的结果“状态”中收到“成功”,然后客户将在他们的个人资料中获得 10、20、50、100 等令牌,这些令牌现在可以用于“喜欢”某人。

仅供参考 - 如果用户保存了一张卡并选择了该卡,则该 Stripe 卡号和客户编号用于付款意图,否则我将收集卡详细信息,并通过到“确认付款()”。

问题 - 一旦我调用 Stripe“confirmpayment()”客户端,并返回结果,显示状态(成功、失败、不完整等)是否有可能收到结果中的“succeeded”状态,然后在稍后通过 Stripe 的 webhook 获得除“succeeded”以外的不同状态?

仅供参考 - 我已经经历了几乎所有 test card 场景来测试这种类型的情况,但它似乎不会发生?在 confirmpayment() 调用中,付款似乎要么成功要么失败。我还通过从 Stripe 获取 paymentIntent 来仔细检查服务器端的状态结果。只是为了确保用户(客户端)没有在代码(JS/Typescript)中更改它。

关注 - 客户完成购买,确认付款结果显示“成功”状态,此时他们的“令牌”被添加到他们的个人资料中,然后他们继续使用它们发送“喜欢”另一个用户。然后稍后我让 Stripe webhook 返回显示“失败”或“不完整”的不同状态。但此时,“代币”将被使用,基于“代币”数量的​​货币金额将从我的 Connect 账户中转移,原始购买的资金将被发送到预期接收者的 Connect 账户。如果发生这种情况,我预计将很难扭转这一切并扭转局面,这将是一个非常令人头疼的问题。

替代工作流程 - 我可以在服务器端创建一个处于待处理状态的“支付”实体,并等到我收到 Stripe webhook,然后再向用户帐户/配置文件添加任何“令牌” .这将确保不会出现错误,但它会使用户等到 webhook 进入,然后他们才会在付款页面上看到“成功”状态,并且无法使用该购买的任何“令牌”直到我得到网络钩子。我想为他们提供更即时的体验。

任何帮助或建议将不胜感激。

解决方法

您在 Promise confirmCardPayment() 解析后返回的结果将与您在 webhook 事件中返回的状态相同,因此 succeeded PaymentIntent 永远不会转换回 {{1 }} 或 requires_payment_method,因为 requires_action 是生命周期的结束状态。

请记住,webhook 事件可能会出现故障,因此从技术上讲,您可以在 succeeded 事件之后获得 payment_intent.requires_action (如果它们发生得非常快)。 >

最好的做法是从 API 中获取 PaymentIntent(在事件之后)以获得 PaymentIntent 的“真实”状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。