Viewing file: PayPalController.php (3.08 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Payment;
use App\Http\Controllers\Controller; use App\Http\Traits\PaymentTrait; use Illuminate\Http\Request; use Srmklive\PayPal\Services\PayPal as PayPalClient;
class PayPalController extends Controller { use PaymentTrait;
/** * process transaction. * * @return \Illuminate\Http\Response */ public function processTransaction(Request $request) { $plan = session('plan'); $converted_amount = currencyConversion($plan->price); session(['order_payment' => [ 'payment_provider' => 'paypal', 'amount' => $converted_amount, 'currency_symbol' => '$', 'usd_amount' => $converted_amount, ]]);
$provider = new PayPalClient; $provider->setApiCredentials(config('paypal')); $paypalToken = $provider->getAccessToken();
$response = $provider->createOrder([ 'intent' => 'CAPTURE', 'application_context' => [ 'return_url' => route('paypal.successTransaction', [ 'plan_id' => $plan->id, 'amount' => $converted_amount, ]), 'cancel_url' => route('paypal.cancelTransaction'), ], 'purchase_units' => [ 0 => [ 'amount' => [ 'currency_code' => 'USD', 'value' => $converted_amount, ], ], ], ]);
if (isset($response['error'])) { session()->flash('error', $response['error']['message']);
return back(); }
if (isset($response['id']) && $response['id'] != null) {
// redirect to approve href foreach ($response['links'] as $links) { if ($links['rel'] == 'approve') { return redirect()->away($links['href']); } }
session()->flash('error', 'Something went wrong.');
return back(); } else { session()->flash('error', 'Something went wrong.');
return back(); } }
/** * success transaction. * * @return \Illuminate\Http\Response */ public function successTransaction(Request $request) { $provider = new PayPalClient; $provider->setApiCredentials(config('paypal')); $provider->getAccessToken(); $response = $provider->capturePaymentOrder($request['token']);
if (isset($response['status']) && $response['status'] == 'COMPLETED') { // After Payment Successfully session(['transaction_id' => $response['id'] ?? null]); $this->orderPlacing(); } else { session()->flash('error', 'Transaction is Invalid');
return back(); } }
/** * cancel transaction. * * @return \Illuminate\Http\Response */ public function cancelTransaction(Request $request) { session()->flash('error', 'Payment Failed');
return back(); } }
|