以下我用来升级用户计划的代码:
$subscription = \Stripe\Subscription::all(array('customer'=>$customerId,'limit'=>10));
$subscription_id = $subscription->data[0]->id;
$subscription = \Stripe\Subscription::retrieve($subscription_id);
$updatePlan = [
'cancel_at_period_end' => false,
'items' => [
[
'id' => $subscription->items->data[0]->id,
'plan' => planPrefix.$packageId,
],
],
'tax_percent' => $package_tax,
];
\Stripe\Subscription::update($subscription_id, $updatePlan);
//Create invoice now
$invoice = \Stripe\Invoice::create([
'customer' => $customerId,
]);
$invoiceId = $invoice->id;
//Pay invoice now
$invoice = \Stripe\Invoice::retrieve($invoiceId);
$invoice->pay();
当条带支付给该新创建的发票时,事件“ invoice.payment_succeeded”被触发到我的webhook,在此我相应地更新了数据库。
问题在于,条带给我先前的计划ID和准确的发票。 例如,如果用户A订阅了计划ID 1,则Stripe将具有新订阅的计划详细信息的对象发送给我,带有准确数据的Webhook,但是当用户A 升级到ID为2的计划时,stripe向我发送数据,发生“ invoice.payment_succeeded”事件,在这里我可以找到与订阅更新有关的所有数据,但问题出在计划ID上。计划ID条带发送给我的是旧的,即1而不是2,并且当用户A升级到计划ID 3时,它在webhook通知中向我发送了计划ID 2。
在这方面的任何帮助将不胜感激。