HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.shooperm.com/Modules/PaymentGateway/Http/Controllers/BankPaymentController.php
<?php

namespace Modules\PaymentGateway\Http\Controllers;

use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Wallet\Entities\WalletBalance;
use Modules\Wallet\Entities\BankPayment;
use App\Traits\ImageStore;
use Illuminate\Support\Arr;
use Brian2694\Toastr\Facades\Toastr;
use App\Repositories\OrderRepository;
use \Modules\Wallet\Repositories\WalletRepository;
use Modules\Account\Repositories\TransactionRepository;
use Modules\Account\Entities\Transaction;
use Modules\FrontendCMS\Entities\SubsciptionPaymentInfo;
use App\Traits\Accounts;
use Carbon\Carbon;
use Modules\GeneralSetting\Entities\Currency;
use Modules\UserActivityLog\Traits\LogActivity;

class BankPaymentController extends Controller
{
    use ImageStore, Accounts;

    public function __construct()
    {
        $this->middleware('maintenance_mode');
    }    

    public function store($data)
    {
        if(isset($data['image'])){
            $data = Arr::add($data, 'image_src', $this->saveImage($data['image']));
        }

        if(session()->has('wallet_recharge')){
            $currency_code = auth()->user()->currency_code;
            $currency = Currency::where('code', $currency_code)->first();
            if($currency){
                $amount = $data['deposit_amount'] / $currency->convert_rate;
            }else{
                $amount = $data['deposit_amount'];
            }
        }else{
            $amount = $data['deposit_amount'];
        }

        $bank_payment = BankPayment::create([
            'bank_name' => $data['bank_name'],
            'branch_name' => $data['branch_name'],
            'account_number' => $data['account_number'],
            'account_holder' => $data['account_holder'],
            'image_src' => isset($data['image_src'])?$data['image_src']:null,
        ]);
        LogActivity::successLog('bank payment create successful.');
        if (session()->has('wallet_recharge')) {
            $wallet_deposit = WalletBalance::create([
                'walletable_type' => "Modules\Wallet\Entities\BankPayment",
                'walletable_id' => $bank_payment->id,
                'user_id' => auth()->user()->id,
                'type' => "Deposite",
                'amount' => $amount,
                'payment_method' => $data['method'],
            ]);
            session()->forget('wallet_recharge');
            LogActivity::successLog('wallet recharge successful.');
        }elseif (session()->has('order_payment')) {
            session()->put('bank_detail_id', $bank_payment->id);
            session()->forget('order_payment');
            $order_paymentRepo = new OrderRepository;
            $order_payment = $order_paymentRepo->orderPaymentDone($data['bank_amount'], 7, "none", (auth()->check())?auth()->user():null);
            LogActivity::successLog('order payment successful.');
            return $order_payment->id;
        }elseif (session()->has('subscription_payment')) {
            $defaultIncomeAccount = $this->defaultIncomeAccount();
            $seller_subscription = getParentSeller()->SellerSubscriptions;
            $transactionRepo = new TransactionRepository(new Transaction);
            $transaction = $transactionRepo->makeTransaction(getParentSeller()->first_name." - Subsriction Payment", "in", "Bank Payment", "subscription_payment", $defaultIncomeAccount, "Subscription Payment", $seller_subscription, $amount, Carbon::now()->format('Y-m-d'), getParentSellerId(), null, null);
            $seller_subscription->update(['last_payment_date' => Carbon::now()->format('Y-m-d')]);
            $subscription_info = SubsciptionPaymentInfo::create([
                'transaction_id' => $transaction->id,
                'txn_id' => "none",
                'seller_id' => getParentSellerId(),
                'subscription_type' => getParentSeller()->sellerAccount->subscription_type,
                'commission_type' => @$seller_subscription->pricing->name
            ]);
            $bank_payment->update(['itemable_id' => $subscription_info->id, 'itemable_type' => SubsciptionPaymentInfo::class]);
            LogActivity::successLog('Subscription payment successful.');
        }

    }

    /**
     * Obtain Paystack payment information
     * @return void
     */
    public function handleGatewayCallback()
    {
        $paystack = new Paystack(env('PAYSTACK_SECRET_KEY'), env('PAYSTACK_PAYMENT_URL'));
        $payment = $paystack->getPaymentData();
        if ($payment['status'] == "true") {
            if (session()->has('wallet_recharge')) {
                $amount = $payment['data']['amount'] / 100;
                $response = $payment['data']['reference'];
                $walletService = new WalletRepository;
                $walletService->walletRecharge($amount, "PayStack", $response);
                return redirect()->route('my-wallet.index', auth()->user()->role->type);
            }
        }else {
            Toastr::error(__('common.operation_failed'));
            return redirect()->route('my-wallet.index', auth()->user()->role->type);
        }
    }

}