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,7 +8,8 @@ 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,33 +129,19 @@ class CardOrder extends Resource
/** /**
* After resource created * After resource created
* @param Laravel\Nova\Http\Requests\NovaRequest $request *
* @param Illuminate\Database\Eloquent\Model $model * @param Laravel\Nova\Http\Requests\NovaRequest $request
* @param Illuminate\Database\Eloquent\Model $model
*/ */
public static function afterCreate(NovaRequest $request, Model $model): void public static function afterCreate(NovaRequest $request, Model $model): void
{ {
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,39 +13,36 @@ 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, 'password' => $resource->branch->billing_password,
'password' => $resource->branch->billing_password, '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) {
]); Log::channel('halkbank_payment_error')
} catch(Exception $exception) { ->error('Payment error', [
Log::channel('halkbank_payment_error')->error('Payment error', [ 'response' => [
'response' => [ 'body' => $response->body(),
'body' => $paymentResponse->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'],
]; ];
} }