*/ public static function statusValues(): array { return [ null => '-', self::PENDING => __('Pending'), self::PAID => __('Paid'), self::FAILED => __('Cancelled'), ]; } /** * Set price */ public function getPrice(int|float|string $price): string { return number_format(floatval($price), 2, '', ''); } /** * Pay card order * * @param mixed $resource * @return array */ public function payCardOrder(mixed $resource): array { $orderNumber = $this->generateOrderNumber($resource); $paymentResponse = Http::get('https://mpi.gov.tm/payment/rest/register.do', [ 'orderNumber' => $orderNumber, 'amount' => $this->getPrice($resource->priceAmount()), 'currency' => 934, 'language' => 'ru', 'userName' => $resource->branch->billing_username, 'password' => $resource->branch->billing_password, 'returnUrl' => route('online-payment-store'), 'pageView' => 'DESKTOP', 'description' => 'Kart tölegi', ])->onError(function ($response) { Log::channel('halkbank_payment_error') ->error('Payment error', [ 'response' => [ 'body' => $response->body(), ], ]); }); if ($paymentResponse->failed()) { return [ 'status' => 'failed', 'url' => '', ]; } $onlinePaymentHistory = new OnlinePaymentHistory; $onlinePaymentHistory->online_paymantable_id = $resource->id; $onlinePaymentHistory->online_paymantable_type = $resource::$model; $onlinePaymentHistory->amount = $resource->priceAmount(); $onlinePaymentHistory->orderNumber = $orderNumber; $onlinePaymentHistory->description = 'Kart tölegi'; $onlinePaymentHistory->orderId = $paymentResponse['orderId']; $onlinePaymentHistory->formUrl = $paymentResponse['formUrl']; $onlinePaymentHistory->successUrl = route('online-payment-store'); $onlinePaymentHistory->errorUrl = route('online-payment-store'); $onlinePaymentHistory->api_client = 'billing_username'; $onlinePaymentHistory->username = $resource->branch->billing_username; $onlinePaymentHistory->paymentStatus = self::PENDING; $onlinePaymentHistory->save(); return [ 'status' => 'success', 'url' => $paymentResponse['formUrl'], ]; } /** * Generate order number for payment */ public function generateOrderNumber(mixed $resource): string { return date('dmyHis'); } /** * Status view */ public static function statusView(): string { return 'orders.cards.online-payment.status'; } }