You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.4 KiB

2 years ago
<?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 App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redirect;
use Paystack;
class PaystackController extends Controller
{
public function redirectToGateway(Request $request)
{
try {
$order = Order::with(['details'])->where(['id' => $request['orderID']])->first();
DB::table('orders')
->where('id', $order['id'])
->update([
'payment_method' => 'paystack',
'order_status' => 'failed',
'transaction_reference' => $request['reference'],
'failed' => now(),
'updated_at' => now(),
]);
return Paystack::getAuthorizationUrl()->redirectNow();
} catch (\Exception $e) {
Toastr::error(translate('messages.your_currency_is_not_supported',['method'=>translate('messages.paystack')]));
return Redirect::back();
}
}
public function handleGatewayCallback()
{
$paymentDetails = Paystack::getPaymentData();
$order = Order::where(['transaction_reference' => $paymentDetails['data']['reference']])->first();
if ($paymentDetails['status'] == true) {
$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');
}
} else {
DB::table('orders')
->where('id', $order['id'])
->update([
'payment_method' => 'paystack',
'order_status' => 'failed',
'failed' => now(),
'updated_at' => now(),
]);
if ($order->callback != null) {
return redirect($order->callback . '&status=fail');
}else{
return \redirect()->route('payment-fail');
}
}
}
}