✅ PayPal Information: ------------------------------------------------ Dev Account: developer@cwa.com Per Account: sb-vhfyz28322584@personal.example.com Biz Account: sb-6l43bc27296072@business.example.com Client ID: AUepW_R8YYWL7R9nASWIkYSvoLg_3KzYFeb-tt0KMWuWOBwX_JmYlMGKMWbsg_bhPIB2CoNNy5AGk1dm Secret: EFuwGqxMAPpSMCoxkmo6-WWnt02EjZFNtdN39Z9Ay-rmruF2gR2MmCPdQn1Rk1fH5z93yd96fB5hqP6s ✅ Laravel PayPal package installation: ------------------------------------------------ Google > Search: srmk PayPal Package web link: https://github.com/srmklive/laravel-paypal Open their documentation. https://srmklive.github.io/laravel-paypal/docs.html ✅ Install Package: ------------------------------------------------ composer require srmklive/paypal:~3.0 ✅ Publish Assets: ------------------------------------------------ php artisan vendor:publish --provider "Srmklive\PayPal\Providers\PayPalServiceProvider" ✅ .env ------------------------------------------------ DB_DATABASE=paypal_integration DB_USERNAME=root DB_PASSWORD=12345678 #PayPal API Mode # Values: sandbox or live (Default: live) PAYPAL_MODE=sandbox #PayPal Setting & API Credentials - sandbox PAYPAL_SANDBOX_CLIENT_ID=AUepW_R8YYWL7R9nASWIkYSvoLg_3KzYFeb-tt0KMWuWOBwX_JmYlMGKMWbsg_bhPIB2CoNNy5AGk1dm PAYPAL_SANDBOX_CLIENT_SECRET=EFuwGqxMAPpSMCoxkmo6-WWnt02EjZFNtdN39Z9Ay-rmruF2gR2MmCPdQn1Rk1fH5z93yd96fB5hqP6s #PayPal Setting & API Credentials - live # PAYPAL_LIVE_CLIENT_ID= # PAYPAL_LIVE_CLIENT_SECRET= ✅ View: ------------------------------------------------

Product: Laptop

Price: $5

@csrf
✅ web.php ------------------------------------------------ use App\Http\Controllers\PaypalController; Route::post('paypal', [PaypalController::class, 'paypal'])->name('paypal'); Route::get('success', [PaypalController::class, 'success'])->name('success'); Route::get('cancel', [PaypalController::class, 'cancel'])->name('cancel'); ✅ 3 types of searches in documentation to use: ------------------------------------------------ Search by: create order Search by: create subscription Search by: capture payment for order ✅ Create migration: ------------------------------------------------ php artisan make:migration create_payments_table ✅ Migration file code: ------------------------------------------------ Schema::create('payments', function (Blueprint $table) { $table->id(); $table->string('payment_id'); $table->string('product_name'); $table->string('quantity'); $table->string('amount'); $table->string('currency'); $table->string('payer_name'); $table->string('payer_email'); $table->string('payment_status'); $table->string('payment_method'); $table->timestamps(); }); ✅ Run Migration: ------------------------------------------------ php artisan migrate ✅ Create Model: ------------------------------------------------ php artisan make:model Payment ✅ PaypalController.php ------------------------------------------------ use App\Models\Payment; use Srmklive\PayPal\Services\PayPal as PayPalClient; class PaypalController extends Controller { public function paypal(Request $request) { $provider = new PayPalClient; $provider->setApiCredentials(config('paypal')); $paypalToken = $provider->getAccessToken(); $response = $provider->createOrder([ "intent" => "CAPTURE", "application_context" => [ "return_url" => route('success'), "cancel_url" => route('cancel') ], "purchase_units" => [ [ "amount" => [ "currency_code" => "USD", "value" => $request->price ] ] ] ]); //dd($response); if(isset($response['id']) && $response['id'] != null) { foreach($response['links'] as $link) { if($link['rel'] == 'approve') { session()->put('product_name', $request->product_name); session()->put('quantity', $request->quantity); return redirect()->away($link['href']); } } } else { return redirect()->route('cancel'); } } public function success(Request $request) { $provider = new PayPalClient; $provider->setApiCredentials(config('paypal')); $paypalToken = $provider->getAccessToken(); $response = $provider->capturePaymentOrder($request->token); //dd($response); if(isset($response['status']) && $response['status'] == 'COMPLETED') { // Insert data into database $payment = new Payment; $payment->payment_id = $response['id']; $payment->product_name = session()->get('product_name'); $payment->quantity = session()->get('quantity'); $payment->amount = $response['purchase_units'][0]['payments']['captures'][0]['amount']['value']; $payment->currency = $response['purchase_units'][0]['payments']['captures'][0]['amount']['currency_code']; $payment->payer_name = $response['payer']['name']['given_name']; $payment->payer_email = $response['payer']['email_address']; $payment->payment_status = $response['status']; $payment->payment_method = "PayPal"; $payment->save(); return "Payment is successful"; unset($_SESSION['product_name']); unset($_SESSION['quantity']); } else { return redirect()->route('cancel'); } } public function cancel() { return "Payment is cancelled."; } }