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