Files
online.tbbank.gov.tm-larave…/app/Repos/Payment/VisaMaster/HandlesVisaMasterPayments.php
2024-11-25 19:32:51 +05:00

73 lines
2.4 KiB
PHP

<?php
namespace App\Repos\Payment\VisaMaster;
use App\Models\Payment\OnlinePaymentHistory;
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrderItem;
use App\Repos\Payment\OnlinePaymentRepo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
trait HandlesVisaMasterPayments
{
/**
* Check payment payment visa master
*
* @param Request $request
*
* @return array<string, bool|string>
*/
public static function checkPaymentVisaMaster(Request $request): array
{
// Find order from history
$paymentHistory = OnlinePaymentHistory::where('orderId', $request->orderId)->first();
// Find related resource
$resource = VisaMasterPaymentOrderItem::where('online_payment_history_id', $paymentHistory->id)->first();
// If resource could not be found or does not exist, then inform it via logs
if (! $resource) {
static::logResourceNotFound($request, $paymentHistory);
return static::resourceNotFound();
}
$bank_branch = $resource->parent->branch;
$response = Http::asForm()->post('https://mpi.gov.tm/payment/rest/getOrderStatus.do', [
'language' => 'ru',
'orderId' => $request->orderId,
'userName' => $bank_branch->billing_visa_master_username,
'password' => $bank_branch->billing_visa_master_password,
]);
$payment_status = $response['ErrorCode'] == '0';
$returnURL = url('/work-place/resources/nova-visa-master-payment-orders/'.$resource->visa_master_payment_order_id);
if ($payment_status) {
$resource->update([
'payer_name' => $response['cardholderName'],
'payer_card' => $response['Pan'],
'paid' => true,
]);
$paymentHistory->update([
'paymentStatus' => OnlinePaymentRepo::PAID,
]);
return static::successfulPaymentResponse($paymentHistory, $bank_branch, $resource, $returnURL);
}
$resource->update([
'payer_name' => $response['cardholderName'] ?? '-',
'payer_card' => $response['Pan'] ?? '-',
]);
$paymentHistory->update([
'paymentStatus' => OnlinePaymentRepo::FAILED,
]);
return static::failedPaymentResponse($paymentHistory, $bank_branch, $resource, $returnURL);
}
}