mirror of https://github.com/4xmen/xshop.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.4 KiB
PHP
77 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use App\Events\InvoiceFailed;
|
|
use App\Events\InvoiceSucceed;
|
|
use App\Models\Payment;
|
|
|
|
|
|
trait PaymentStore
|
|
{
|
|
public function storePaymentRequest($orderId,$amount, $token = null, $type = 'ONLINE', $bank = null): \App\Models\Payment
|
|
{
|
|
$payment = new Payment();
|
|
$payment->order_id = $orderId;
|
|
$payment->type = $type?$type:'ONLINE';
|
|
$payment->amount=$amount;
|
|
$payment->meta = [
|
|
'fingerprint' => \Request::fingerprint(),
|
|
'bank' => $bank,
|
|
'token' => $token,
|
|
'ip' => \Request::ip(),
|
|
'auth_user' => \Auth::id(),
|
|
'user_agent' => \Request::userAgent(),
|
|
];
|
|
/** @var \App\Models\Invoice $this */
|
|
$this->payments()->save($payment);
|
|
|
|
// $payment->save();
|
|
|
|
return $payment;
|
|
}
|
|
|
|
public function storeSuccessPayment($paymentId, $referenceId, $cardNumber = null): \App\Models\Payment
|
|
{
|
|
/** @var Payment $payment */
|
|
$payment = Payment::findOrFail($paymentId);
|
|
$payment->reference_id = $referenceId;
|
|
$payment->meta = array_merge($payment->meta, ['card_number' => $cardNumber]);
|
|
$payment->status = "SUCCESS";
|
|
$payment->save();
|
|
/** @var \App\Models\Invoice $this */
|
|
$this->status = "COMPLETED";
|
|
$this->save();
|
|
try {
|
|
event(new InvoiceSucceed($this, $payment));
|
|
}catch (\Throwable $exception){
|
|
\Log::debug('Error In Event OrderSucceed. But Process Continued!',compact('payment'));
|
|
\Log::warning($exception->getMessage(),[$exception->getTraceAsString()]);
|
|
}
|
|
|
|
return $payment;
|
|
}
|
|
|
|
public function storeFailPayment($paymentId, $message = null): \App\Models\Payment
|
|
{
|
|
try {
|
|
/** @var Payment $payment */
|
|
$payment = Payment::findOrFail($paymentId);
|
|
if ($payment->status === Payment::SUCCESS) {
|
|
return $payment;
|
|
}
|
|
$payment->status = Payment::FAIL;
|
|
$payment->comment = $message;
|
|
$payment->save();
|
|
} catch (\Throwable $exception) {
|
|
$payment = new Payment();
|
|
}
|
|
$this->status = "FAILED";
|
|
/** @var \App\Models\Invoice $this */
|
|
$this->save();
|
|
event(new InvoiceFailed($this, $payment));
|
|
|
|
return $payment;
|
|
}
|
|
}
|