Сценарий: имеется открытый счет, который уже создан для подписки. Идентификатор счета-фактуры Stripe (in_1PVBjnSE4D7cjIupbEfXsQ4w).
Я хочу добиться следующего
шага 1 – создать URL-адрес для оплаты клиентом созданного счета. .
Шаг 2 – клиент платит по идентификатору счета (in_1PVBjnSE4D7cjIupbEfXsQ4w).
Шаг 3 – после оплаты клиент должен быть перенаправлен обратно на URL-адрес перенаправления.
Проблема: перенаправление работает, но указанный счет не оплачен. но вместо этого выставляется новый счет на ту же сумму.
Что я пытался: я пытаюсь создать чередующийся сеанс, который помогает в перенаправлении. но, похоже, я не могу настроить систему чередования для оплаты определенного счета.
вот мой код контроллера, который генерирует сеанс чередования.
Код: Выделить всё
public function createCheckoutSession(Request $request, $invoiceId)
{
$firmId = session('firmdatas.id');
$firmData = Firmregistration::findOrFail($firmId);
$invoice = FirmInvoices::findOrFail($invoiceId);
$stripeObj = new \Stripe\StripeClient(config('services.stripe.secret'));
$subscription = $stripeObj->subscriptions->retrieve($invoice->stripe_subscription_id);
try {
$session = $stripeObj->checkout->sessions->create([
'payment_method_types' => ['card'],
'line_items' => [[
'price_data' => [
'currency' => 'usd',
'product_data' => [
'name' => 'Invoice Payment',
],
'unit_amount' => $invoice->amount_due,
],
'quantity' => 1,
]],
'subscription_data' => [
'items' => [
['plan' => $subscription->items->data[0]->id], // Assuming only one item in the subscription
],
],
'mode' => 'payment',
'customer' => $firmData->stripe_id,
'payment_intent_data' => [
'description' => "Payment for Invoice #{$invoice->number}",
'metadata' => [
'invoice_id' => $invoice->invoice_id,
],
],
'success_url' => route('admin.subscription.invoice.paymentsuccess', [
'invoiceid' => $invoice->invoice_id,
'amount_paid' => $invoice->amount_due, // Stripe will update the actual amount paid after payment
'receipt_url' => '', // Placeholder, will be updated below
]),
'cancel_url' => route('admin.subscription.view'),
]);
// Redirect to the Checkout Session URL
return redirect()->away($session->url);
} catch (\Exception $e) {
Log::error('Error creating Stripe Checkout Session: ' . $e->getMessage());
return view('errors.500');
}
}
Пожалуйста, сообщите.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ng-invoice