Sid Gifari File Manager
🏠 Root
/
home2
/
meumer25
/
painelsexshoptentacao.meumercado.app
/
app
/
Http
/
Controllers
/
Editing: PaymobController.php
<?php namespace App\Http\Controllers; use App\CentralLogics\Helpers; use App\Model\Currency; use App\Model\Order; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Http\Request; use function App\CentralLogics\translate; class PaymobController extends Controller { protected function cURL($url, $json) { // Create curl resource $ch = curl_init($url); // Request headers $headers = array(); $headers[] = 'Content-Type: application/json'; // Return the transfer as a string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // $output contains the output string $output = curl_exec($ch); // Close curl resource to free up system resources curl_close($ch); return json_decode($output); } protected function GETcURL($url) { // Create curl resource $ch = curl_init($url); // Request headers $headers = array(); $headers[] = 'Content-Type: application/json'; // Return the transfer as a string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // $output contains the output string $output = curl_exec($ch); // Close curl resource to free up system resources curl_close($ch); return json_decode($output); } public function credit() { $currency_code = Currency::where(['currency_code' => 'EGP'])->first(); if (isset($currency_code) == false) { Toastr::error(translate('paymob_supports_EGP_currency')); return back()->withErrors(['error' => 'Failed']); } $config = Helpers::get_business_settings('paymob'); try { $token = $this->getToken(); $order = $this->createOrder($token); $paymentToken = $this->getPaymentToken($order, $token); }catch (\Exception $exception){ Toastr::error(translate('country_permission_denied_or_misconfiguration')); return back()->withErrors(['error' => 'Failed']); } return \Redirect::away('https://portal.weaccept.co/api/acceptance/iframes/' . $config['iframe_id'] . '?payment_token=' . $paymentToken); } public function getToken() { $config = Helpers::get_business_settings('paymob'); $response = $this->cURL( 'https://accept.paymobsolutions.com/api/auth/tokens', ['api_key' => $config['api_key']] ); return $response->token; } public function createOrder($token) { $order = Order::find(session('order_id')); $amount = $order['order_amount']; $data = [ "auth_token" => $token, "delivery_needed" => "false", "amount_cents" => round($amount,2) * 100, "currency" => "EGP", ]; $response = $this->cURL( 'https://accept.paymob.com/api/ecommerce/orders', $data ); return $response; } public function getPaymentToken($order, $token) { $order = Order::find(session('order_id')); $amount = $order['order_amount']; $config = Helpers::get_business_settings('paymob'); $billingData = [ "apartment" => "not given", "email" => "not given", "floor" => "not given", "first_name" => "not given", "street" => "not given", "building" => "not given", "phone_number" => "not given", "shipping_method" => "PKG", "postal_code" => "not given", "city" => "not given", "country" => "not given", "last_name" => "not given", "state" => "not given", ]; $data = [ "auth_token" => $token, "amount_cents" => round($amount,2) * 100, "expiration" => 3600, "order_id" => $order->id, "billing_data" => $billingData, "currency" => "EGP", "integration_id" => $config['integration_id'] ]; $response = $this->cURL( 'https://accept.paymob.com/api/acceptance/payment_keys', $data ); return $response->token; } public function callback(Request $request) { $config = Helpers::get_business_settings('paymob_accept'); $data = $request->all(); ksort($data); $hmac = $data['hmac']; $array = [ 'amount_cents', 'created_at', 'currency', 'error_occured', 'has_parent_transaction', 'id', 'integration_id', 'is_3d_secure', 'is_auth', 'is_capture', 'is_refunded', 'is_standalone_payment', 'is_voided', 'order', 'owner', 'pending', 'source_data_pan', 'source_data_sub_type', 'source_data_type', 'success', ]; $connectedString = ''; foreach ($data as $key => $element) { if (in_array($key, $array)) { $connectedString .= $element; } } $secret = $config['hmac']; $hased = hash_hmac('sha512', $connectedString, $secret); if ($hased == $hmac) { $order = Order::find($request['order_id']); $order->payment_method = 'paymob_accept'; $order->order_status = 'confirmed'; $order->payment_status = 'paid'; $order->transaction_reference = $request['trxID']??null; $order->save(); return response()->json(['message' => 'Payment succeeded'], 200); } return response()->json(['message' => 'Payment failed'], 403); } }
Save
Cancel