public function show() { $customer = $this->getCustomer(); if (!$customer) { return $this->responseError(['Данные не доступны'], 'Требуется авторизация', 401); } $api = new Api(); try { $key = $api->key(); Reporter::aggregateExternalInfoStart($key, $api->id(), $customer->get()->id); $client = $api->_cache_customer_info($key); $client['key'] = $key; try { $promo = $api->PromoCodeUse($key); } catch (ApiException $e) { if ($e->isDataError()) { $promo = null; } else { throw $e; } } $client['promo'] = $promo; Reporter::aggregateExternalInfoEnd($customer->get()->id); $customer->updateExternalInfo($client); return $this->responseSuccess($client, 'Данные клиента'); } catch (ApiException $e) { $api->cleanup(); return $this->responseException($e, 'Не удалось получить данные', 'customer'); } }
private function parsePayTarget($target, $id) { $api = new Api(); $id = (int) $id; if ($id <= 0) { return null; } // оплата заказа if ($target == 'order') { return $id; } // оплата подписки if ($target == 'subscription') { $customer_id = Customer::instance()->initByExternalId($api->id())->get()->id; $subscription_id = $id; Reporter::subscriptionPaymentRequest($customer_id, $subscription_id); $subscription = Subscription::whereCustomerId($customer_id)->find($subscription_id); if (!$subscription) { $list = $api->Certificate(); // ищем эту подписку в агбисе foreach ($list as $item) { if ($item->id == $subscription_id) { Reporter::subscriptionFound($customer_id, $subscription_id, $item); // создаем подписку в нашей базе Subscription::unguard(); $subscription = Subscription::create(['id' => $item->id, 'name' => $item->name, 'description' => $item->comments, 'price' => $item->price, 'customer_id' => $customer_id, 'order_id' => 0]); Reporter::subscriptionCreated($customer_id, $subscription_id); } } } if (!$subscription) { Reporter::subscriptionNotFound($customer_id, $subscription_id); return null; } // если заказ уже был создан, отдаем его для оплаты if ($subscription->order_id > 0) { return $subscription->order_id; } // создадим заказа в агбисе $order_id = $api->CreatePayCertificate($subscription->id); if ($order_id > 0) { Reporter::subscriptionOrderCreated($customer_id, $subscription_id, $order_id); // отдадим для оплаты $subscription->order_id = $order_id; $subscription->save(); return $subscription->order_id; } } return null; }