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(),
]);
}
}
}