ada*_*m78 1 webhooks stripe-payments
条带文档说,当使用自动确认的付款意图时,您应该使用 webhook 异步完成客户的订单。
如果我提供一项服务,例如购买后下载文件的能力,那么为什么我需要监控网络payment_intent.succeeded钩子?
如果在以下handleCardPayment功能中付款成功,那么是否还有可能会失败?如果付款成功,为什么我不应该允许用户立即下载文件?
var cardholderName = document.getElementById('cardholder-name');
var cardButton = document.getElementById('card-button');
var clientSecret = cardButton.dataset.secret;
cardButton.addEventListener('click', function(ev) {
stripe.handleCardPayment(
clientSecret, cardElement, {
payment_method_data: {
billing_details: {name: cardholderName.value}
}
}
).then(function(result) {
if (result.error) {
// Display error.message in your UI.
} else {
// The payment has succeeded. Display a success message.
}
});
});
Run Code Online (Sandbox Code Playgroud)
也许我还没有理解 handleCardPayment 是如何工作的。任何帮助表示赞赏。
使用时handleCardPayment,问题不在于付款可能会失败,而是可能会成功,但您的代码不知道。
handleCardPayment启动几个异步步骤 - 向用户显示一个对话框以验证与他们的银行的付款,处理针对他们的卡的实际费用,然后关闭对话框。只有在所有完成之后,Promise 才会解析并且您接收的函数才会result执行。
考虑以下情况:
客户点击支付
handleCardPayment 叫做
客户会看到来自银行的对话以验证付款
他们这样做了,他们认为他们的付款现在已经完成,他们立即关闭了浏览器。
在这种情况下,您的代码将永远不会执行,但 Stripe 仍会处理费用。所以你不知道付款发生了,你无法完成订单。
这就是为什么使用 webhooks 很重要的原因,因此您会在付款完成时收到异步通知,即使用户在中途关闭了浏览器并且您的代码handleCardPayment从未有机会运行。或者,您可以使用手动确认流程,其中步骤被拆分并且在您的服务器进行单独的 API 调用之前不会处理实际费用。
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |