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/EasyPayController.php
<?php

namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use App\Http\Requests\Frontend\EasyPayRequest;
use App\Models\EasyPay;
use Artesaos\SEOTools\Facades\SEOTools;
use Illuminate\Support\Facades\DB;
use Shetabit\Multipay\Invoice;
use Shetabit\Payment\Facade\Payment as shetabitPayment;

class EasyPayController extends Controller
{
    public function index()
    {
        SEOTools::setTitle('پرداخت آسان');
        SEOTools::setDescription('پرداخت آسان');

        return view('frontend.easy-pays.index');
    }

    public function pay(EasyPayRequest $request)
    {
        $payment = DB::transaction(function () use ($request) {
            $easyPay = EasyPay::create(array_merge($request->validated(), ['user_id' => auth()->id() ?? null]));

            return $easyPay->payments()->create([
                'user_id' => $easyPay->user_id,
                'amount' => $easyPay->amount,
                'ip' => request()->ip(),
            ]);
        });

        try {
            return shetabitPayment::callbackUrl(route('verify.easy-pay', $payment->id))
                ->purchase((new Invoice)->amount($payment->amount), function ($driver, $transactionId) use ($payment) {
                    $payment->update([
                        'transaction_id' => $transactionId,
                        'driver' => config('payment.default'),
                    ]);
                }
                )->pay()->render();
        } catch (\Exception $exception) {
            $payment->update([
                'error_message' => $exception->getMessage(),
            ]);

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