首页 > 解决方案 > 订阅结帐会话中的付款意图为空

问题描述

我正在按照本教程使用 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 ,那么为什么付款会出现在仪表板的付款部分?

标签: stripe-payments

解决方案


根据您传入的,mode其中之一或将被填充,其余的将是。payment_intentsubscriptionsetup_intentnull

生成 aSubscription后,您的用户会收到发票,因此它被视为付款,并将显示在“付款”仪表板中。您可以检索Subscription并访问该latest_invoice字段以获取Invoice对象。该Invoice对象包含该payment_intent字段。这可能是您正在寻找的。

使用 webhook 将简化该过程,因为您可以收听invoice.payment_suceeded以检索 PaymentIntent ID。


推荐阅读