D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
mbpharmacy.ghanempharmacy.com
/
app
/
Http
/
Controllers
/
Filename :
PaystackController.php
back
Copy
<?php namespace App\Http\Controllers; use App\Models\PaymentRequest; use App\User; use App\Traits\Processor; use Illuminate\Http\Request; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Validator; use Unicodeveloper\Paystack\Facades\Paystack; class PaystackController extends Controller { use Processor; private PaymentRequest $payment; private $user; public function __construct(PaymentRequest $payment, User $user) { $config = $this->payment_config('paystack', 'payment_config'); $values = false; if (!is_null($config) && $config->mode == 'live') { $values = json_decode($config->live_values); } elseif (!is_null($config) && $config->mode == 'test') { $values = json_decode($config->test_values); } if ($values) { $config = array( 'publicKey' => env('PAYSTACK_PUBLIC_KEY', $values->public_key), 'secretKey' => env('PAYSTACK_SECRET_KEY', $values->secret_key), 'paymentUrl' => env('PAYSTACK_PAYMENT_URL', 'https://api.paystack.co'), 'merchantEmail' => env('MERCHANT_EMAIL', $values->merchant_email), ); Config::set('paystack', $config); } $this->payment = $payment; $this->user = $user; } public function index(Request $request) { $validator = Validator::make($request->all(), [ 'payment_id' => 'required|uuid' ]); if ($validator->fails()) { return response()->json($this->response_formatter(GATEWAYS_DEFAULT_400, null, $this->error_processor($validator)), 400); } $data = $this->payment::where(['id' => $request['payment_id']])->where(['is_paid' => 0])->first(); if (!isset($data)) { return response()->json($this->response_formatter(GATEWAYS_DEFAULT_204), 200); } $payer = json_decode($data['payer_information']); $reference = \Unicodeveloper\Paystack\Facades\Paystack::genTranxRef(); return view('payment-gateway.paystack', compact('data', 'payer', 'reference')); } public function redirectToGateway(Request $request) { return Paystack::getAuthorizationUrl()->redirectNow(); } public function handleGatewayCallback(Request $request) { $paymentDetails = Paystack::getPaymentData(); if ($paymentDetails['status'] == true) { $this->payment::where(['attribute_id' => $paymentDetails['data']['metadata']['attribute_id']])->update([ 'payment_method' => 'paystack', 'is_paid' => 1, 'transaction_id' => $request['trxref'], ]); $data = $this->payment::where(['attribute_id' => $paymentDetails['data']['metadata']['attribute_id']])->first(); if (isset($data) && function_exists($data->success_hook)) { call_user_func($data->success_hook, $data); } return $this->payment_response($data, 'success'); } $payment_data = $this->payment::where(['attribute_id' => $paymentDetails['data']['metadata']['attribute_id']])->first(); if (isset($payment_data) && function_exists($payment_data->failure_hook)) { call_user_func($payment_data->failure_hook, $payment_data); } return $this->payment_response($payment_data, 'fail'); } }