diff --git a/packages/Sarga/API/Http/Controllers/Checkout.php b/packages/Sarga/API/Http/Controllers/Checkout.php index 7e874ecee..5ef2fb0bb 100644 --- a/packages/Sarga/API/Http/Controllers/Checkout.php +++ b/packages/Sarga/API/Http/Controllers/Checkout.php @@ -144,10 +144,15 @@ class Checkout extends CheckoutController $cart = Cart::getCart(); - if ($redirectUrl = Payment::getRedirectUrl($cart)) { - return response([ - 'redirect_url' => $redirectUrl, - ]); + $payment = Config::get('paymentmethods.' . $cart->payment->method); + + if (isset($payment['api_url'])) + { + $paymentClass = app($payment['class']); + + $result = $paymentClass->registerOrder(); + + return response($result); } $order = $orderRepository->create(Cart::prepareDataForOrder()); diff --git a/packages/Sarga/Payment/Methods/AltynAsyr.php b/packages/Sarga/Payment/Methods/AltynAsyr.php index 6f280050f..2a851585b 100644 --- a/packages/Sarga/Payment/Methods/AltynAsyr.php +++ b/packages/Sarga/Payment/Methods/AltynAsyr.php @@ -52,14 +52,38 @@ class AltynAsyr extends Payment 'orderNumber' =>$cart->id . Carbon::now()->timestamp, 'currency' => 934, 'language' => 'ru', - 'description'=> "bagisto multivendor {$cart->grand_total}m.", - 'amount' =>$cart->grand_total * 100,// amount w kopeykah - 'returnUrl' => route('paymentmethod.altynasyr.success'), + 'description'=> "Elektronika sowda: {$cart->grand_total}m.", + 'amount' => $cart->grand_total * 100,// amount w kopeykah + 'returnUrl' => route('paymentmethod.altynasyr.success',['cart_id'=>$cart->id]), 'failUrl' => route('paymentmethod.altynasyr.cancel') ], ]; + try { + $result = json_decode($client->post('register.do',$params)->getBody(),true); - return json_decode($client->post('register.do',$params)->getBody(),true); + if($result['errorCode'] == 0){ + return [ + "success" => $this->registerOrderId($result['orderId']), + "url" => $result['formUrl'], + "message" => "unable to save order id" + ]; + } + else{//if already registered or otkazana w dostupe + return [ + "success" => false, + "message" => $result['errorMessage'] + ]; + } + + }catch(\Exception $e){ +// Log::info($result); +// Log::error($e); + return [ + "success" => false, + "message" => $e->getMessage() + ]; + + } } @@ -72,18 +96,47 @@ class AltynAsyr extends Payment } public function getOrderStatus(){ - $client = $this->getApiClient(); - $payment = $this->getCart()->payment; + try{ + $client = $this->getApiClient(); - $params = [ - 'form_params' => [ - 'userName' => $this->getConfigData('business_account'),//'103161020074', - 'password' => $this->getConfigData('account_password'),//'E12wKp7a7vD8', - 'orderId' => $payment->order_id, - ] - ]; + $payment = $this->getCart()->payment; - return json_decode($client->post('getOrderStatus.do',$params)->getBody(),true); + $orderId = request()->get('orderId'); + + if($payment && $payment->order_id === $orderId){ + $params = [ + 'form_params' => [ + 'userName' => $this->getConfigData('business_account'), + 'password' => $this->getConfigData('account_password'), + 'orderId' => $payment->order_id, + ] + ]; + + $result = json_decode($client->post('getOrderStatus.do',$params)->getBody(),true); + + if($result['ErrorCode'] == 0 && $result['OrderStatus'] == 2){ + return [ + "success" => true, + "message" => "Payment successful" + ]; + } + + return [ + "success" => false, + "message" => $result['ErrorMessage'] + ]; + } + + return [ + "success" => false, + "message" => "Malformed request" + ]; + }catch(\Exception $e){ + return [ + "success" => false, + "message" => $e->getMessage() + ]; + } } } \ No newline at end of file