Я использовал этот код для отмены подписки на полосу с пропорциональной ставкой
$user = User::find(Auth::id());
$subscription = \Stripe\Subscription::retrieve(
$user->subscription('main')->stripe_id
);
$subscription->delete([
'prorate' => true
]);
в панели управления полосой подписка отменена, и создается предстоящий счет с пропорциональной суммой. Я хочу вернуть пропорциональную сумму на карту клиента. Я попытался получить пропорциональную сумму, используя приведенный ниже код.
$subscription = \Stripe\Subscription::retrieve($user->subscription('main')->stripe_id);
$subscription_item = array(
"id" => $subscription->items->data[0]->id,
"plan" => $subscription->items->data[0]->plan->id,
"quantity" => 0,
);
$proration_date = time();
$upcoming_prorated_invoice = \Stripe\Invoice::upcoming([
"customer" => $subscription->customer,
"subscription" => $subscription->id,
"subscription_items" => array($subscription_item),
"subscription_proration_date" => $proration_date, // optional
]);
dd($upcoming_prorated_invoice);
Я получил сообщение об ошибке ниже
Stripe \ Exception \ InvalidRequestException
Вы не можете предварительно просмотреть предстоящий счет для отмененной подписки.
ОБНОВЛЕНИЕ
$subscription->delete([
'prorate' => true,
'invoice_now' => true
]);
//$latest_invoice = \Stripe\Invoice::retrieve($subscription->latest_invoice);
//$latest_charge_id = $latest_invoice->charge;
$invoice = \Stripe\Invoice::retrieve([ 'id' => $subscription->latest_invoice, 'expand' => ['payment_intent.charges'], ]);
//$charge = $invoice->payment_intent->charges->data[0];
dd($invoice);
payment_intent возвращается как null