HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: /home/armgroup/libs/app/Http/Controllers/Frontend/PaymentController.php
<?php

namespace App\Http\Controllers\Frontend;

use App\Events\OrderCanceled;
use App\Events\OrderSaved;
use App\Http\Controllers\Controller;
use App\Models\EasyPay;
use App\Models\Payment;
use App\Models\Wallet;
use Shetabit\Payment\Facade\Payment as shetabitPayment;

class PaymentController extends Controller
{
    public function order(Payment $payment)
    {
        if (! auth()->check()) {
            auth()->loginUsingId($payment->user_id);
        }

        $order = $payment->paymentable;

        try {
            $receipt = shetabitPayment::amount($payment->amount)->transactionId($payment->transaction_id)->verify();

            $payment->update([
                'reference_id' => $receipt->getReferenceId(),
                'status' => true,
            ]);

            OrderSaved::dispatch($order);

            $this->doneMessage('سفارش شما با موفقیت ثبت شد.');

            return redirect()->route('account.orders.show', $order);
        } catch (\Exception $exception) {
            $payment->update([
                'error_message' => $exception->getMessage(),
            ]);

            OrderCanceled::dispatch($order);

            $this->doneMessage($exception->getMessage(), 'error');

            return redirect()->route('account.orders.show', $order);
        }
    }

    public function wallet(Payment $payment)
    {
        if (! auth()->check()) {
            auth()->loginUsingId($payment->user_id);
        }

        try {
            $receipt = shetabitPayment::amount($payment->amount)->transactionId($payment->transaction_id)->verify();

            $wallet = Wallet::create([
                'user_id' => $payment->user_id,
                'amount' => $payment->amount,
                'description' => 'افزایش اعتبار از طریق درگاه '.__($payment->driver).' با شماره تراکنش '.$payment->transaction_id.' و کد ارجاع '.$receipt->getReferenceId(),
                'walletable_id' => $payment->id,
                'walletable_type' => Payment::class,
            ]);

            $payment->update([
                'reference_id' => $receipt->getReferenceId(),
                'status' => true,
                'paymentable_id' => $wallet->id,
            ]);

            $this->doneMessage('افزایش اعتبار با موفقیت انجام شد.');

            return redirect()->route('account.wallets.show', $wallet);
        } catch (\Exception $exception) {
            $payment->update([
                'error_message' => $exception->getMessage(),
            ]);

            $this->doneMessage($exception->getMessage(), 'error');

            return redirect()->route('account.wallets.index');
        }
    }

    public function easyPay(Payment $payment)
    {
        if ((! auth()->check()) && $payment->user_id) {
            auth()->loginUsingId($payment->user_id);
        }

        try {
            $receipt = shetabitPayment::amount($payment->amount)->transactionId($payment->transaction_id)->verify();

            EasyPay::query()
                ->where('id', $payment->paymentable_id)
                ->update(['status' => true]);

            $payment->update([
                'reference_id' => $receipt->getReferenceId(),
                'status' => true,
            ]);

            return view('frontend.easy-pays.result')->with([
                'status' => 'success',
                'result' => "پرداخت شما به مبلغ {$payment->amount} تومان با کد ارجاع {$payment->reference_id} با موفقیت انجام شد.",
            ]);
        } catch (\Exception $exception) {
            $payment->update([
                'error_message' => $exception->getMessage(),
            ]);

            return view('frontend.easy-pays.result')->with([
                'status' => 'danger',
                'result' => $exception->getMessage(),
            ]);
        }
    }
}