Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stripe payments 条带-为草稿发票创建付款意图-PHP_Stripe Payments_Invoice - Fatal编程技术网

Stripe payments 条带-为草稿发票创建付款意图-PHP

Stripe payments 条带-为草稿发票创建付款意图-PHP,stripe-payments,invoice,Stripe Payments,Invoice,升级订阅时,我创建了一份草稿发票,其中“提取该客户的所有待定发票项,包括按比例分配”: 然后我标记订阅以允许不完整的支付(处理需要身份验证的卡时需要): 然后我收取付款: //collect payment immediately (note: fails when authentication needed and creates a payment intent) $inv->pay(); 然后我检索支付意图: //retrieve payment intent ID (note:

升级订阅时,我创建了一份草稿发票,其中“提取该客户的所有待定发票项,包括按比例分配”:

然后我标记订阅以允许不完整的支付(处理需要身份验证的卡时需要):

然后我收取付款:

//collect payment immediately (note: fails when authentication needed and creates a payment intent)
$inv->pay();
然后我检索支付意图:

//retrieve payment intent ID (note: DOESN'T WORK - THE LATEST INVOICE SHOWS AS AN OLD ONE)
$subscription = \Stripe\Subscription::update($subscription_id, [
          "expand" => ["latest_invoice.payment_intent"]
     ]);
因此,是否有更好的方法来为草稿发票创建付款意向,从而能够检索付款意向,而不是使用
$inv->pay()

请注意,在上述代码中,付款意图是在付款尝试失败后创建的(可以在Stripe Dashboard中查看)如果除了
$inv->pay()
没有其他选择,我如何检索付款意图而不是使用
最新的\u invoice.paymentintent“

更新

我没有尝试通过
“latest\u invoice.paymentintent”
(请参阅注释说明原因)检索付款意图,而是尝试使用以下代码从发票检索付款意图:

$updated_inv = \Stripe\Invoice::retrieve($invoice_id); //NOT WORKING

$intent = $updated_inv->payment_intent;

但是,$updated\u inv为空,因此检索不起作用。

最新的\u发票是两种不同的发票<代码>$inv是一张一次性发票,可能包含属于客户的所有未付项目,而订阅发票仅用于订阅,但如果订阅恰好是唯一未付项目,则这两张发票的金额可能相同。对于一次性发票和订阅,可以使用不同的卡支付,具体取决于订阅的创建方式。因此,您确实应该只使用
subscription.latest\u invoice.payment\u intent
来驱动订阅付款。感谢这一点-它解释了为什么
$subscription.latest\u invoice.payment\u intent
没有显示正确的发票号(这是订阅上最后一张已付款的发票)。但是请注意,我正在更新订阅以使用升级时提供的卡(通过elements和stripe.js),这样新卡将驱动所有付款。我还想立即付款,这样1)人们就不能免费升级,然后在本月晚些时候取消2)人们可以在会话中验证是否需要身份验证。因此,我需要一种方法来返回一次性发票的付款意图。
//retrieve payment intent ID (note: DOESN'T WORK - THE LATEST INVOICE SHOWS AS AN OLD ONE)
$subscription = \Stripe\Subscription::update($subscription_id, [
          "expand" => ["latest_invoice.payment_intent"]
     ]);
$updated_inv = \Stripe\Invoice::retrieve($invoice_id); //NOT WORKING

$intent = $updated_inv->payment_intent;