升级订阅时,我会创建一张发票草稿,其中“拉入该客户的所有待处理发票项目,包括按比例分配”:
StringMove
然后,我将订阅标记为允许不完整付款(需要处理需要身份验证的卡):
//upgrade subscription with new plan
$subscription = \Stripe\Subscription::retrieve($subscription_id);
$subscription->plan = $plan_id;
$subscription->proration_date = $proration_date;
$subscription->save();
//create invoice for outstanding amount on subscription
$inv = \Stripe\Invoice::create(array(
"customer" => $customer_id
));
然后我收款:
//Flag to allow incomplete payments
$subscription = \Stripe\Subscription::update($subscription_id, [
"payment_behavior" => "allow_incomplete"
]);
然后我检索付款意向:
//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"]
]);
之外,还有一种更好的方法可以为发票草稿创建付款意图,从而能够检索付款意图?
请注意,在以上代码中,付款意图在付款尝试失败后创建(可以在Stripe仪表板中查看)。 如果没有$inv->pay()
的替代品,我该如何代替$inv->pay()
来获取付款意向?
更新
我不是尝试通过"latest_invoice.paymentintent"
检索付款意图(请参阅原因注释),而是尝试使用以下代码从发票中检索付款意图:
"latest_invoice.paymentintent"
但是,$ updated_inv为空,因此检索无法正常工作...