From 68d544b9c3946641a3ac443fa415b044ddfe9767 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Thu, 30 Oct 2025 21:15:58 +0500 Subject: [PATCH] online payment --- .../Repositories/OnlinePaymentRepository.php | 111 +++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) diff --git a/app/Modules/OnlinePayment/Repositories/OnlinePaymentRepository.php b/app/Modules/OnlinePayment/Repositories/OnlinePaymentRepository.php index 9419bc3..d996ebb 100644 --- a/app/Modules/OnlinePayment/Repositories/OnlinePaymentRepository.php +++ b/app/Modules/OnlinePayment/Repositories/OnlinePaymentRepository.php @@ -2,4 +2,113 @@ namespace App\Modules\OnlinePayment\Repositories; -class OnlinePaymentRepository {} +use App\Modules\CardOrder\Models\CardOrder; +use App\Modules\OnlinePayment\Models\OnlinePayment; +use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Log; + +class OnlinePaymentRepository +{ + /** + * Pending online payments + */ + public const PENDING = 'pending'; + + /** + * Failed online payments + */ + public const FAILED = 'failed'; + + /** + * Paid online payments + */ + public const PAID = 'paid'; + + /** + * Status Values + * + * @return array + */ + 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() + { + $orderNumber = $this->generateOrderNumber(); + + // $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 OnlinePayment; + // $onlinePaymentHistory->online_paymantable_id = $resource->really(); + // $onlinePaymentHistory->online_paymantable_type = CardOrder::class; + // $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(): string + { + return date('dmyHis'); + } +}