/** * данные для оплаты через CloudPayments * * @param string $target * @param string $id * @param boolean $reset * * @return \Illuminate\Http\JsonResponse */ public function pay($id, $target, $reset) { $id = $this->parsePayTarget($target, $id); try { $api = new Api(); $orders = $api->Orders()['orders']; } catch (ApiException $e) { return $this->responseException($e); } Reporter::payInit($id, $api->id()); $order = null; foreach ($orders as $item) { if ($item['id'] == $id) { $order = $item; } } // нет такого заказа if (!$order) { Reporter::payInitOrderLost($id, $api->id()); return $this->responseErrorMessage('заказ не найден', 404); } // проверим, что заказ не находится в процессинге оплаты $check = $this->isOrderPayWaiting($id); if ($check !== true) { // флаг $reset требует сброса состояния оплаты заказа // поэтому мы делаем ему fail чтобы можно было приступить к новой оплате if ($reset) { Reporter::payInitOrderReset($id, $api->id()); PaymentCloud::failOrder($id); } else { return $check; } } // проверим, что есть сумма к оплате if ($order['amount'] <= 0) { return $this->responseErrorMessage('Заказ уже оплачен', 403); } $api->id(); $data = ['publicId' => Config::get('cloud.PublicId'), 'description' => 'Оплата в dryharder.me заказа №' . $order['doc_number'], 'amount' => $order['amount'], 'currency' => 'RUB', 'invoiceId' => $order['id'], 'accountId' => $api->id(), 'data' => ['type' => 'pay_order', 'contr_id' => $api->id(), 'order_id' => $order['id'], 'order_num' => $order['doc_number'], 'amount' => $order['amount']]]; Reporter::payInitReady($id, $api->id(), $data); return Response::json(['data' => $data, 'message' => 'данные для оплаты заказа']); }