public function start($order_id, $customer_id) { if (!$this->isNotPaidOrder($customer_id, $order_id)) { return Response::json(['message' => 'Заказ находится в процессе оплаты'], 500); } $customer = Customer::instance()->initByExternalId($customer_id); if (!$customer) { return Response::json(['message' => 'Клиент не найден'], 500); } $autopayCard = PaymentCloud::getCustomerAutopayCard($customer_id); if (!$autopayCard) { return Response::json(['message' => 'Автоплатежи клиента выключены'], 500); } $key = 'users.agbis.sessions.customer' . $customer_id; $sessionId = $this->initSessionKey($customer, $customer->get()->credential->agbis_password, $key); if (!$sessionId) { return Response::json(['message' => 'Сессия клиента не найдена'], 500); } $api = new Api(); $order = $api->getOrder($order_id, $sessionId); if (!$order) { return Response::json(['message' => 'Заказ клиента не найден'], 500); } if ($autopayCard->token == '') { return Response::json(['message' => 'Токен привязанной карты не найден'], 500); } OrderAutopay::unguard(); $pay = OrderAutopay::create(['order_id' => $order_id, 'customer_id' => $customer_id, 'state' => 0]); $result = $api->payByToken($order_id, $autopayCard->token, $order['amount'], $order['doc_number'], $sessionId); $pay->comment = $result->message; $pay->save(); if ($result->success) { $pay->state = 1; $pay->save(); Mailer::succesAutoPay($customer, $order, $autopayCard); return Response::json(['amount' => $order['amount']]); } Mailer::errorAutoPay($customer, $order, $autopayCard); return Response::json(['message' => $result->message], 500); }
public function reviewOrder() { $data = Input::only(['stars', 'text', 'order']); $api = new Api(); $user = $api->ContrInfo(); if (Input::get('request') && Input::get('request') !== 'false') { $request = OrderRequest::find($data['order']); $order = ['id' => 0, 'doc_number' => $request->getHumanId()]; $data['order'] = 0; } else { $order = $api->getOrder($data['order']); } $data['email'] = $user['email']; $data['phone'] = $user['phone']; $data['name'] = $user['name']; $data['doc_number'] = $order['doc_number']; Mailer::orderReview($data); OrderReview::unguard(); $review = OrderReview::create(['customer_id' => Customer::instance()->initByExternalId($user['id'])->get()->id, 'text' => $data['text'], 'stars' => $data['stars'], 'doc_number' => $order['doc_number'], 'order_id' => $order['id']]); return Response::json(['data' => $review, 'message' => 'отзыв сохранен']); }