This commit is contained in:
2024-01-28 20:11:32 +05:00
parent a592a1ba8f
commit 0e970d7e23
4 changed files with 29 additions and 46 deletions

View File

@@ -8,6 +8,7 @@ class OnlinePaymentController extends Controller
{ {
/** /**
* Online pa * Online pa
*
* @param Request $request [description] * @param Request $request [description]
*/ */
public function store(Request $request) public function store(Request $request)

View File

@@ -9,7 +9,6 @@ use App\Repos\System\Nova\NovaRepo;
use App\Repos\System\Settings\Location\RegionRepo; use App\Repos\System\Settings\Location\RegionRepo;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Password;
use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Textarea; use Laravel\Nova\Fields\Textarea;

View File

@@ -129,6 +129,7 @@ class CardOrder extends Resource
/** /**
* After resource created * After resource created
*
* @param Laravel\Nova\Http\Requests\NovaRequest $request * @param Laravel\Nova\Http\Requests\NovaRequest $request
* @param Illuminate\Database\Eloquent\Model $model * @param Illuminate\Database\Eloquent\Model $model
*/ */
@@ -137,25 +138,10 @@ class CardOrder extends Resource
CardOrderRepo::created()($model); CardOrderRepo::created()($model);
} }
/**
* Return the location to redirect the user after creation.
*
* @param \Laravel\Nova\Resource $resource
*/
public static function redirectAfterCreate(NovaRequest $request, $resource): URL|string
{
$payment = (new OnlinePaymentRepo())->payCardOrder($resource);
return $payment['status'] === 'success'
? URL::remote($payment['url'])
: sprintf('resources/%s/%s', static::uriKey(), $resource->getKey());
}
/** /**
* Return the location to redirect the user after update. * Return the location to redirect the user after update.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string
*/ */
public static function redirectAfterUpdate(NovaRequest $request, $resource): URL|string public static function redirectAfterUpdate(NovaRequest $request, $resource): URL|string
{ {

View File

@@ -13,16 +13,16 @@ class OnlinePaymentRepo
{ {
/** /**
* Pay card order * Pay card order
*
* @param [type] $resource * @param [type] $resource
*/ */
public function payCardOrder($resource): array public function payCardOrder($resource): array
{ {
$orderNumber = $this->generateOrderNumber($resource); $orderNumber = $this->generateOrderNumber($resource);
try {
$paymentResponse = Http::get('https://mpi.gov.tm/payment/rest/register.do', [ $paymentResponse = Http::get('https://mpi.gov.tm/payment/rest/register.do', [
'orderNumber' => $orderNumber, 'orderNumber' => $orderNumber,
'amount' => "00" . $resource->priceAmount(), 'amount' => '00'.$resource->priceAmount(),
'currency' => 934, 'currency' => 934,
'language' => 'ru', 'language' => 'ru',
'userName' => $resource->branch->billing_username, 'userName' => $resource->branch->billing_username,
@@ -30,22 +30,19 @@ class OnlinePaymentRepo
'returnUrl' => urlencode(route('online-payment-store')), 'returnUrl' => urlencode(route('online-payment-store')),
'pageView' => 'DESKTOP', 'pageView' => 'DESKTOP',
'description' => urlencode('Kart tölegi'), 'description' => urlencode('Kart tölegi'),
]); ])->onError(function ($response) {
} catch(Exception $exception) { Log::channel('halkbank_payment_error')
Log::channel('halkbank_payment_error')->error('Payment error', [ ->error('Payment error', [
'response' => [ 'response' => [
'body' => $paymentResponse->body(), 'body' => $response->body(),
], ],
'exception' => [
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'message' => $exception->getMessage(),
]
]); ]);
});
if ($paymentResponse->failed()) {
return [ return [
'status' => 'success', 'status' => 'failed',
'url' => '' 'url' => '',
]; ];
} }
@@ -61,12 +58,12 @@ class OnlinePaymentRepo
'errorUrl' => route('online-payment-store'), 'errorUrl' => route('online-payment-store'),
'api_client' => config('app.url'), 'api_client' => config('app.url'),
'username' => $resource->branch->billing_username, 'username' => $resource->branch->billing_username,
'paymentStatus' => OrderRepo::PENDING 'paymentStatus' => OrderRepo::PENDING,
]); ]);
return [ return [
'status' => 'success', 'status' => 'success',
'url' => $paymentResponse['formUrl'] 'url' => $paymentResponse['formUrl'],
]; ];
} }