public function postPay() { $bill_id = Input::get('transaction'); $provider_id = Input::get('shop'); $bill = Bill::getBill($bill_id, $provider_id); //Предполагаем ошибку статуса $error = 'Ошибка оплаты, проверьте статус.'; if ($bill) { try { $result = DB::connection('ff-qiwi-gate')->transaction(function () use($bill_id) { if (Bill::doPay($bill_id)) { SendCallback::jobBillToQueue($bill_id); SendEmail::emailToQueue($bill_id); return array('message' => 'Счёт успешно оплачен.'); } return null; }); if ($result) { return $result; } } catch (Exception $e) { } } else { //Меняем ошибку на Счёт не найден $error = 'Счет не найден.'; } return array('error' => true, 'message' => $error); }
/** * Проверка статуса возврата * * @param int $provider_id * @param string $bill_id * @param int $refund_id * * @internal param int $id * * @return Response */ public function show($provider_id, $bill_id, $refund_id) { if (!($bill = Bill::getBill($bill_id, $provider_id))) { $data['error'] = Catalog::C_BILL_NOT_FOUND; return $this->responseFromGate($data); } $refund = Refund::whereBillId($bill_id)->whereRefundId($refund_id)->first(); if ($refund == null) { $data['error'] = Catalog::C_BILL_NOT_FOUND; return $this->responseFromGate($data); } //Проводим возврат по прошествии минуты if ($refund->isProcessing()) { $refund = $refund->doSuccess(); } $data = $this->dataFromObj($refund); $data['user'] = $bill->user; $data['error'] = 0; return $this->responseFromGate($data); }
public function postExpireBill() { $bill_id = Input::get('transaction'); $provider_id = Input::get('shop'); $bill = Bill::getBill($bill_id, $provider_id); //предполагаем ошибку $error = 'Счёт не найден'; if ($bill) { //Если счёт просрочен, то кидаем callback и отдаём успех if ($bill->doExpire($bill_id)) { $this->sendCallback($bill_id); return array('message' => 'Счёт просрочен'); } $error = 'Счёт не просрочен. Проверьте статус.'; } //Отдаём ошибку return array('error' => true, 'message' => $error); }
/** * Отмена счёта (или отправить на создание счёта) * * @param int $provider_id * @param string $bill_id * * @return Response */ public function update($provider_id, $bill_id) { //Если это создание - счёта отправляем на создание if ($this->isCreateBill()) { return $this->store($provider_id, $bill_id); } if ($this->isCancelBill()) { //Находим счёт $bill = Bill::getBill($bill_id, $provider_id); //Если не нашли - ошибка "Счёт не найден" if ($bill == null) { $data['error'] = Catalog::C_BILL_NOT_FOUND; return $this->responseFromGate($data); } //Если статус waiting - отменяем счёт, кидаем callback и отдаём счёт в ответе if ($bill->isWaiting() && $bill->doCancel($bill_id)) { $this->sendCallback($bill_id); $canceledBill = Bill::whereBillId($bill_id)->first(); $data = $this->dataFromObj($canceledBill); $data['error'] = 0; return $this->responseFromGate($data); } $data['error'] = Catalog::C_BILL_NOT_FOUND; return $this->responseFromGate($data); } return null; }