File: /home/mobilech/.trash/shop/app/Http/Controllers/PaystackController.php
<?php
namespace App\Http\Controllers;
use App\CPU\CartManager;
use App\CPU\Helpers;
use App\CPU\OrderManager;
use App\Model\Order;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Support\Facades\Redirect;
use Paystack;
class PaystackController extends Controller
{
public function redirectToGateway(Request $request)
{
try {
return Paystack::getAuthorizationUrl()->redirectNow();
} catch (\Exception $e) {
Toastr::error('Your currency is not supported by Paystack.');
return Redirect::back();
}
}
public function handleGatewayCallback(Request $request)
{
$paymentDetails = Paystack::getPaymentData();
if ($paymentDetails['status'] == true) {
$unique_id = OrderManager::gen_unique_id();
$order_ids = [];
foreach (CartManager::get_cart_group_ids() as $group_id) {
$data = [
'payment_method' => 'paystack',
'order_status' => 'confirmed',
'payment_status' => 'paid',
'transaction_ref' => $request['trxref'],
'order_group_id' => $unique_id,
'cart_group_id' => $group_id
];
$order_id = OrderManager::generate_order($data);
array_push($order_ids, $order_id);
}
CartManager::cart_clean();
if (session()->has('payment_mode') && session('payment_mode') == 'app') {
return redirect()->route('payment-success');
}
return view(VIEW_FILE_NAMES['order_complete']);
} else {
if (session()->has('payment_mode') && session('payment_mode') == 'app') {
return redirect()->route('payment-fail');
}
Toastr::error('Payment process failed');
return back();
}
}
}