Appearance
Transaction API
Handle Transaction
Stripe Payment can be handled in similar ways as Paystack Payment. The package allow you to make payment requests using the facade
, helper
or dependency injection
.
Prepare your route to handle the payment request:
phpuse Illuminate\Support\Facades\Route; use App\Http\Controllers\StripePaymentController; Route::post('/payment/stripe', [StripePaymentController::class, 'initiatePayment'])->name('payment.stripe.initiate');
Create a controller to handle the payment request: In the controller, you can use your desired Payment Gateway to handle the payment request using the facade, helper or dependency injection
Create a controller to handle the payment request using Facade.
phpuse Illuminate\Http\Request; use MusahMusah\LaravelMultipaymentGateways\Facades\Stripe; class StripePaymentController extends Controller { public function initiatePayment(Request $request) { $payment = Stripe::createIntent([ 'amount' => 1000, 'currency' => 'usd', 'payment_method_types' => ['card'], 'payment_method' => 'xxxxxxx', 'metadata' => ['custom_fields' => ['name' => 'Musah Musah']], ]); return $payment; } }
Create a controller to handle the payment request using Dependency Injection through the
StripeContract
interface.phpuse Illuminate\Http\Request; use MusahMusah\LaravelMultipaymentGateways\Contracts\StripeContract; class StripePaymentController extends Controller { public function initiatePayment(Request $request, StripeContract $stripe) { $payment = $stripe->createIntent([ 'amount' => 1000, 'currency' => 'usd', 'payment_method_types' => ['card'], 'payment_method' => 'xxxxxxx', 'metadata' => ['custom_fields' => ['name' => 'Musah Musah']], ]); return $payment; } }
Create a controller to handle the payment request using Helper.
phpuse Illuminate\Http\Request; class StripePaymentController extends Controller { public function initiatePayment(Request $request) { $payment = stripe()->createIntent([ 'amount' => 1000, 'currency' => 'usd', 'payment_method_types' => ['card'], 'payment_method' => 'xxxxxxx', 'metadata' => ['custom_fields' => ['name' => 'Musah Musah']], ]); return $payment; } }
The createIntent
method will create a payment intent and return the client secret to be used in the frontend to confirm the payment. In addition, the package also provides a method to confirm the payment intent. You can confirm the payment intent in the following ways:
Prepare your route to handle the payment confirmation request:
phpuse Illuminate\Support\Facades\Route; use App\Http\Controllers\StripePaymentController; Route::post('/payment/stripe/confirm', [StripePaymentController::class, 'confirmPayment'])->name('payment.stripe.confirm');
Create a controller to handle the payment confirmation request using Facade:
phpuse Illuminate\Http\Request; use MusahMusah\LaravelMultipaymentGateways\Facades\Stripe; class StripePaymentController extends Controller { public function confirmPayment(Request $request) { $payment = Stripe::confirmIntent($request->payment_intent_id); if ($payment->status === 'succeeded') { // Payment was successful } return $payment; } }
The
confirmIntent
method will confirm the payment intent and return the payment response. This can also be done using the helper or dependency injection.