125 lines
4.8 KiB
PHP
125 lines
4.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Session;
|
|
|
|
class PaymentController extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$payment_details = session('payment_details');
|
|
if (!$payment_details || !is_array($payment_details) || count($payment_details) <= 0) {
|
|
Session::flash('error', get_phrase('Payment not configured yet'));
|
|
return redirect()->back();
|
|
}
|
|
if ($payment_details['payable_amount'] <= 0) {
|
|
Session::flash('error', get_phrase("Payable amount cannot be less than 1"));
|
|
return redirect()->to($payment_details['cancel_url']);
|
|
}
|
|
|
|
$page_data['payment_details'] = $payment_details;
|
|
$page_data['payment_gateways'] = DB::table('payment_gateways')->where('status', 1)->get();
|
|
return view('payment.index', $page_data);
|
|
}
|
|
|
|
public function show_payment_gateway_by_ajax($identifier)
|
|
{
|
|
$page_data['payment_details'] = session('payment_details');
|
|
$page_data['payment_gateway'] = DB::table('payment_gateways')->where('identifier', $identifier)->first();
|
|
return view('payment.' . $identifier . '.index', $page_data);
|
|
}
|
|
|
|
public function payment_success(Request $request, $identifier = "")
|
|
{
|
|
|
|
$payment_details = session('payment_details');
|
|
$payment_gateway = DB::table('payment_gateways')->where('identifier', $identifier)->first();
|
|
$model_name = $payment_gateway->model_name;
|
|
$model_full_path = str_replace(' ', '', 'App\Models\payment_gateway\ ' . $model_name);
|
|
|
|
$status = $model_full_path::payment_status($identifier, $request->all());
|
|
if ($status === true) {
|
|
$success_model = $payment_details['success_method']['model_name'];
|
|
$success_function = $payment_details['success_method']['function_name'];
|
|
|
|
$model_full_path = str_replace(' ', '', 'App\Models\ ' . $success_model);
|
|
return $model_full_path::$success_function($identifier);
|
|
} elseif ($status == "submitted") {
|
|
Session::flash('success', get_phrase('Your payment submitted. It will take some times to enrol.'));
|
|
return redirect(route('home'));
|
|
} else {
|
|
Session::flash('error', get_phrase('Payment failed! Please try again.'));
|
|
redirect()->to($payment_details['cancel_url']);
|
|
}
|
|
|
|
}
|
|
|
|
public function payment_create($identifier)
|
|
{
|
|
$payment_details = session('payment_details');
|
|
$payment_gateway = DB::table('payment_gateways')->where('identifier', $identifier)->first();
|
|
$model_name = $payment_gateway->model_name;
|
|
$model_full_path = str_replace(' ', '', 'App\Models\payment_gateway\ ' . $model_name);
|
|
$created_payment_link = $model_full_path::payment_create($identifier);
|
|
|
|
return redirect()->to($created_payment_link);
|
|
}
|
|
|
|
public function payment_razorpay($identifier)
|
|
{
|
|
$payment_details = session('payment_details');
|
|
$payment_gateway = DB::table('payment_gateways')->where('identifier', $identifier)->first();
|
|
$model_name = $payment_gateway->model_name;
|
|
$model_full_path = str_replace(' ', '', 'App\Models\payment_gateway\ ' . $model_name);
|
|
$data = $model_full_path::payment_create($identifier);
|
|
|
|
return view('payment.razorpay.payment', compact('data'));
|
|
}
|
|
|
|
public function webRedirectToPayFee(Request $request)
|
|
{
|
|
// Check if the 'auth' query parameter is present
|
|
if (!$request->has('auth')) {
|
|
return redirect()->route('login')->withErrors([
|
|
'email' => 'Authentication token is missing.',
|
|
]);
|
|
}
|
|
|
|
// Remove the 'Basic ' prefix
|
|
// $base64Credentials = $request->query('auth');
|
|
// Remove the 'Basic ' prefix
|
|
$base64Credentials = substr($request->query('auth'), 6);
|
|
|
|
// Decode the base64-encoded string
|
|
$credentials = base64_decode($base64Credentials);
|
|
|
|
// Split the decoded string into email, password, and timestamp
|
|
list($email, $password, $timestamp) = explode(':', $credentials);
|
|
|
|
// Get the current timestamp
|
|
$timestamp1 = strtotime(date('Y-m-d'));
|
|
|
|
// Calculate the difference
|
|
$difference = $timestamp1 - $timestamp;
|
|
|
|
if ($difference < 86400) {
|
|
if (auth()->attempt(['email' => $email, 'password' => $password])) {
|
|
// Authentication passed...
|
|
return redirect(route('cart'));
|
|
}
|
|
|
|
return redirect()->route('login')->withErrors([
|
|
'email' => 'Invalid email or password',
|
|
]);
|
|
} else {
|
|
return redirect()->route('login')->withErrors([
|
|
'email' => 'Token expired!',
|
|
]);
|
|
}
|
|
}
|
|
}
|