- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有一个 Opayo (SagePay) 服务器集成,我显然被一种能力宠坏了,如果在我的订单上履行订单时出现问题,我可以简单地响应带有错误状态的付款通知回调以拒绝/作废交易边。我认为,在幕后发生了某种自动授权然后捕获,其中仅当我的通知处理程序返回成功/OK 状态时才捕获付款。
我正在研究如何通过 Stripe 结账集成(预构建结账、PHP 和 webhooks)实现同样的目标,看来我需要使用授权和手动捕获:
$session = \Stripe\Checkout\Session::create([
...
'payment_intent_data' => [
'capture_method' => 'manual',
],
]);
在示例代码和文档中(总体来说非常好,但我觉得这里不够),它展示了如何创建一个 webhook 来处理结帐 session 的完成:
// Handle the checkout.session.completed event
if ($event->type == 'checkout.session.completed') {
$session = $event->data->object;
// Fulfill the purchase...
fulfill_order($session);
}
奇怪的是,交易的 payment_status
没有被检查,这个例子表明您只需在这里完成您的订单。我只能假设,如果您没有使用延迟付款方式,那么此时您可以假设付款已成功,尽管做出这样的假设似乎是一个危险的假设。
在文档的后面,在“处理服务器端延迟通知付款方式”下,我们有一个更完整的示例,在执行订单之前实际检查付款状态:
switch ($event->type) {
case 'checkout.session.completed':
$session = $event->data->object;
// Save an order in your database, marked as 'awaiting payment'
create_order($session);
// Check if the order is paid (e.g., from a card payment)
//
// A delayed notification payment will have an `unpaid` status, as
// you're still waiting for funds to be transferred from the customer's
// account.
if ($session->payment_status == 'paid') {
// Fulfill the purchase
fulfill_order($session);
}
...
如果我使用手动捕获方法,究竟应该如何使用/改编上面的代码?据推测 payment_status
不会被 paid
那么我要检查什么以及如何访问 PaymentIntent
以便能够捕获它?这一切都应该发生在 checkout.session.completed
事件中吗?
代码示例会很棒;不幸的是,文档中只有这个脚注:
To capture an uncaptured payment, you can use either the Dashboard or the capture endpoint. Programmatically capturing payments requires access to the PaymentIntent created during the Checkout Session, which you can get from the Session object.
我已经检查了在线代码示例,但没有涵盖这个确切的场景。
编辑:在下面添加我对流程的理解以及问题:
switch ($event->type) {
case 'checkout.session.completed':
$session = $event->data->object;
if ($session->payment_status == 'unpaid') {
// We need to capture the payment if we have arrived here?
// Is this the only scenario where we would end up here?
// How do we get the PaymentIntent, what status if any should we check on it?
// Attempt to fulfil the purchase here, if all good then
// capture the payment
} else if ($session->payment_status == 'paid') {
// Assume this was not an auth/capture type payment?
// There is no other scenario where we would end up here?
}
...
最佳答案
如果您收到 checkout.session.completed
事件,则同步支付方式成功完成。
对于异步支付方式,there are other events:
checkout.session.async_payment_succeeded
checkout.session.async_payment_failed
我不确定你为什么要在这里使用 auth 和 capture,因为付款是在收到 checkout.session.completed
后成功的或 checkout.session.async_payment_succeeded
,但如果需要,您可以设置选项来执行此操作 here然后你需要 capture the Payment Intent相关with the Checkout Session .
如果您需要确定费用是否已被捕获,您需要检索付款意向并查看费用的 captured
值:https://stripe.com/docs/api/charges/object#charge_object-captured
关于php - 您如何在 Stripe 预建结账流程中的 webhook 中捕获付款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65281615/
我想知道是否有任何方法可以为所有意图激活 webhook(除了一个一个激活它)。谢谢! 最佳答案 目前还没有这样的功能,但我遇到了类似的问题,这就是我解决它的方法: 下载所有意图的zip文件 写一个程
谁能在最基本的层面上解释一下 Incoming webhook、Outgoing webhook 和 O365 webhook 之间的区别 最佳答案 Webhooks 是一种轻型 HTTP 模式,用于
好吧,这可能 super 简单,但我只是没有足够的背景知识来确定: 如果我定义了一个 webhook 回调(例如,OpenAPI 中的回调):我可以从常规网页使用该回调吗? 我会假设是的,否则有什么意
我正在尝试设置 Grafana 以将 webhook 发送到 Microsoft Teams。我可以通过终端 curl 到地址,但不能通过 Grafanas 界面。 我将 URL 添加到 Grafan
我正在玩Paypal REST(php)环境,我喜欢玩沙盒webhooks。 是否可以将Paypal沙箱Webhooks与本地设置一起使用? http://localhost/test 是无效的网址
使用 slack webhooks,我可以使用消息中的简码发送表情符号: curl -X POST --data-urlencode "payload={\"channel\": \"#my_noti
我们想将Slack Webhook(传出Webhook)与内部Web服务一起使用。 我们公司位于防火墙后面,因此必须将外部连接列入白名单。 Slack似乎有多个地址,它将从中发送API请求,并且似乎没
我们目前正在实现 Mailgun 的 Webhook,以将电子邮件回复转换为应用程序中评论线程中的回复。我们设置一条路由来匹配收件人,并将操作设置为 store(notify="https://exa
我可以通过应用程序脚本通过 webhook 将消息发送到聊天室,但是我如何发送回复该消息。这是一种单向聊天。我如何才能通过 webhook 将其作为对话流. 最佳答案 您可以提供一个threadKey
我正在尝试注册一个 evernote webhook。但似乎注册表不起作用。 Evernote webhook 注册表格: 我填写了表格,点击“提交”,但总是得到以下错误响应: {"error":"R
我可以通过应用程序脚本通过 webhook 将消息发送到聊天室,但是我如何发送回复该消息。这是一种单向聊天。我如何才能通过 webhook 将其作为对话流. 最佳答案 您可以提供一个threadKey
我有一个订阅页面提要事件的 webhook。 我希望它告诉我何时在页面或用户管理的页面上创建了公共(public)事件。 应用仪表板告诉我这是将发送给我的 JSON 对象: { "field": "
当我在 google 项目和 API.AI 代理上创建操作时,我使用自己的服务作为 API.AI 实现 webhook。我希望 API.AI 会调用我的 webhook。但是当我通过谷歌上的 Acti
我正在按照本教程在 App Inventor 中发送电子邮件:https://www.hackster.io/taifun/trigger-ifttt-to-send-an-email-using-a
我正在尝试将消息发布到松弛团队中的任何 channel 。 我的 webhook 已正确创建并安装到我的测试团队中。作为安装过程的一部分,我选择了“发布到#channel1” 当我查看权限时,我看到我
我快速浏览了与 Bluesnap webhooks 相关的 IPN 类型和参数 - https://support.bluesnap.com/v2.2.7/docs/ipn-parameter-ref
我有一个 HTML 表格,我正在尝试通过 webhook 将其发布到 Slack。 有没有办法将 HTML 表格发布到 Slack? 这是 HTML 代码: HTML Tabl
我在我的 Slack 工作区中创建了一个传入 Webhook。我正在使用第三方工具将 JSON 对象发布到 Hook url。我想向@user_1 发送通知 我的问题是通知发送到我和该用户@user_
我正在开发一个与 Trello 紧密集成的应用程序,并使用 Trello webhooks 做很多事情。但是,我在 Trello 的开发人员文档中找不到任何地方可能触发 webhook 的“操作”是什
当我创建这篇文章时,我只是在stackoverflow上找到了没有任何回复的帖子...... TelegramBot. "Webhook can be set up only on ports 80,
我是一名优秀的程序员,十分优秀!