stripe-payments - 订阅结帐会话中的付款意图为空
问题描述
我正在按照本教程使用 php 集成条带: https ://phppot.com/php/manage-recurring-payments-using-stripe-billing-in-php/ (我的网站有一些订阅计划并重定向到条带结帐形式 ) 。但是,对于最后一步,我决定不使用 webhook,我选择像本教程一样存储信息https://www.codexworld.com/stripe-checkout-payment-gateway-integration-php/(我知道这不是订阅,但我只是使用本教程中的 success.php 代码来收集客户信息和付款意图详细信息)。我对其进行了测试,通过了条带结帐表单,成功后我打印了结帐会话对象,并注意到该对象的 payment_intent 字段为空!所以我无法加载付款意图对象并获取其信息,尽管付款成功并显示在仪表板上。知道为什么吗?
编辑:根据结帐会话的文档(https://stripe.com/docs/api/checkout/sessions/object), payment_intent 字段存储付款模式下结帐会话的 PaymentIntent 的 ID。就我而言,我有订阅模式而不是付款模式。但是,如果我仍然想获得 $intent->status ,我可以使用会话对象 $checkout_session->payment_status 的 payment_status 字段吗?如果订阅付款真的没有 paymentintents ,那么为什么付款会出现在仪表板的付款部分?
解决方案
根据您传入的,mode
其中之一或将被填充,其余的将是。payment_intent
subscription
setup_intent
null
生成 aSubscription
后,您的用户会收到发票,因此它被视为付款,并将显示在“付款”仪表板中。您可以检索Subscription
并访问该latest_invoice
字段以获取Invoice
对象。该Invoice
对象包含该payment_intent
字段。这可能是您正在寻找的。
使用 webhook 将简化该过程,因为您可以收听invoice.payment_suceeded
以检索 PaymentIntent ID。
推荐阅读
- android - 在另一个片段中定义 NavHostFragment
- c - 如何从 Windows 上的套接字端口获取 PID?
- ios - 关闭文本字段的键盘时 UIView 动画不起作用
- javascript - 如何将 Swagger 添加到现有的 Node 应用程序?
- css - TranslateX 打破了粘性导航栏
- c++ - 如何使用 auto 深度声明几个变量?
- c# - 填充数据适配器时字典中不存在给定的键
- c++ - 如何每次都在不同大小的循环中重新声明相同的数组?
- xml - 如何使用此架构使此 xml 文件有效
- excel - Mac上的VBA Excel Mac字典类获取Keys()属性