diff --git a/app/Http/Controllers/StripeController.php b/app/Http/Controllers/StripeController.php index 8ddca96..09abb24 100644 --- a/app/Http/Controllers/StripeController.php +++ b/app/Http/Controllers/StripeController.php @@ -19,6 +19,8 @@ class StripeController extends Controller public function checkout(Invoice $invoice) { + Stripe::setApiKey(config('services.stripe.secret')); + $session = \Stripe\Checkout\Session::create([ 'payment_method_types' => ['card'], 'line_items' => [ @@ -28,16 +30,16 @@ class StripeController extends Controller 'product_data' => [ 'name' => "Invoice {$invoice->invoice_number}", ], - 'unit_amount' => $invoice->balance_due * 100, // Already in cents from MoneyCast? Check this + 'unit_amount' => (int) ($invoice->balance_due * 100), ], 'quantity' => 1, ], ], 'mode' => 'payment', - 'success_url' => route('checkout.success', $invoice), - 'cancel_url' => route('invoice.show', $invoice), + 'success_url' => route('stripe.success', $invoice), + 'cancel_url' => route('invoices.show', $invoice), 'metadata' => [ - 'invoice_id' => $invoice->id, // Used by webhook to find the invoice + 'invoice_id' => $invoice->id, ], ]); @@ -65,6 +67,8 @@ class StripeController extends Controller $invoice = Invoice::find($session->metadata->invoice_id); if ($invoice) { + Stripe::setApiKey(config('services.stripe.secret')); + // Retrieve PaymentIntent with expanded charge and balance_transaction $paymentIntent = \Stripe\PaymentIntent::retrieve([ 'id' => $session->payment_intent, @@ -114,8 +118,8 @@ class StripeController extends Controller return redirect()->away($session->url); } - public function success() + public function success(Invoice $invoice) { - return view('stripe.index'); + return view('stripe.success', compact('invoice')); } } diff --git a/resources/views/invoices/show.blade.php b/resources/views/invoices/show.blade.php index ccb6fbb..0ea62d9 100644 --- a/resources/views/invoices/show.blade.php +++ b/resources/views/invoices/show.blade.php @@ -137,12 +137,33 @@ @endif @if($invoice->balance_due != 0) -
-

Payment

-

Please make payment to:

-

eBandroom

-

540 W. Louse Ave.

-

Vinita, OK 74301

+
+

Payment Options

+ +
+
+

Pay Online

+

Pay securely with your credit or debit card.

+
+ @csrf + +
+
+ +
+

Pay by Mail

+

Make check payable to:

+

eBandroom

+

540 W. Louse Ave.

+

Vinita, OK 74301

+
+
@endif diff --git a/resources/views/stripe/success.blade.php b/resources/views/stripe/success.blade.php new file mode 100644 index 0000000..1223813 --- /dev/null +++ b/resources/views/stripe/success.blade.php @@ -0,0 +1,32 @@ + + + + + + Payment Received - Invoice {{ $invoice->invoice_number }} + + + +
+
+ + + +
+ +

Payment Received

+

Thank you for your payment.

+ +
+

Invoice

+

{{ $invoice->invoice_number }}

+

{{ $invoice->client->name }}

+
+ + + View Invoice + +
+ + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index a849767..4e34c04 100644 --- a/routes/web.php +++ b/routes/web.php @@ -24,7 +24,7 @@ Route::get('invoices/{invoice}', CustomerInvoiceController::class)->name('invoic // Stripe Route::get('stripe', [StripeController::class, 'index'])->name('stripe.index'); -Route::post('/stripe/checkout ', [StripeController::class, 'checkout'])->name('stripe.checkout'); -Route::get('/success', [StripeController::class, 'success'])->name('stripe.success'); +Route::post('/stripe/checkout/{invoice}', [StripeController::class, 'checkout'])->name('stripe.checkout'); +Route::get('/stripe/success/{invoice}', [StripeController::class, 'success'])->name('stripe.success'); Route::post('stripe/webhook', [StripeController::class, 'webhook'])->name('stripe.webhook'); require __DIR__.'/settings.php';