/** * Закрывает арбитраж. * * @param array $reserve_data данные резерва * @param array data Массив данных * * @return bool true если успешно */ public function closeArbitrage($reserve_data, $data) { if (!$this->is_allowed()) { throw new ReservesArbitrageException(ReservesArbitrageException::NOT_ALLOWED); } $ok = $this->db()->update($this->TABLE, array('price' => (int) $data['price_pay'], 'allow_fb_frl' => $data['allow_fb_frl'], 'allow_fb_emp' => $data['allow_fb_emp'], 'status' => self::STATUS_CLOSED, 'date_close' => date('Y-m-d H:i:s')), 'reserve_id = ?i AND status = ' . self::STATUS_OPEN, (int) $reserve_data['id']); if ($ok) { $reserveInstance = ReservesModelFactory::getInstance($reserve_data['type']); $reserveInstance->setReserveData($reserve_data); $payStatusDone = true; $backStatusDone = true; if ($data['price_pay'] > 0) { $payStatusDone = $reserveInstance->changePayStatus(ReservesModel::SUBSTATUS_NEW); } if ($data['price_back'] > 0) { $backStatusDone = $reserveInstance->changeBackStatus(ReservesModel::SUBSTATUS_NEW); //Ставим задачу на возврат средств в очередь if ($backStatusDone && $reserve_data['invoice_id'] > 0) { ReservesPayback::getInstance()->requestPayback($reserve_data['id'], $reserve_data['invoice_id'], $data['price_back']); } } if ($payStatusDone && $backStatusDone) { return true; } } throw new ReservesArbitrageException(ReservesArbitrageException::CLOSE_FAIL); }
public function process_event(&$event) { global $DB; $this->force_connect(); $is_repeat = false; $message = false; $reserve_id = intval(@$event->data['reserve_id']); try { switch ($event->type) { case 'payback': $is_repeat = !ReservesPayback::getInstance()->doPayback($reserve_id); if (!$is_repeat) { $message = 'Средства возвращены.'; } break; case 'payout': $is_repeat = !ReservesPayout::getInstance()->doPayout($reserve_id); if (!$is_repeat) { $message = 'Средства выплачены.'; } break; } } catch (ReservesPayException $e) { $message = 'Ошибка: ' . $e->getMessage(); $is_repeat = $e->isRepeat(); } if ($message) { $this->log->notice(iconv('CP1251', 'UTF-8', sprintf(self::LOG_FORMAT, $event->type, $reserve_id, $message))); } if ($is_repeat) { $DB->query("SELECT pgq.insert_event('reserves', ?, ?)", $event->type, http_build_query($event->data)); } return PGQ_EVENT_OK; }
public function getPaybackInfo() { require_once ABS_PATH . '/classes/reserves/ReservesPayback.php'; $reservesPayback = new ReservesPayback(); $paybackList = $reservesPayback->getPayback($this->getID()); if ($paybackList) { foreach ($paybackList as $key => $paybackItem) { $paybackList[$key]['price'] = tservices_helper::cost_format($paybackItem['price'], true); $paybackList[$key]['status_txt'] = self::$_payout_status_txt[$paybackItem['status']]; $paybackList[$key]['error'] = $paybackItem['error'] == 0 ? 'нет' : $paybackItem['error']; $paybackList[$key]['date'] = date('d.m.Y H:i', strtotime($paybackItem['date'])); $paybackList[$key]['last'] = $paybackItem['last'] ? date('d.m.Y H:i', strtotime($paybackItem['last'])) : ' — '; } } return $paybackList; }
error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/config.php"); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesPayback.php'; //require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/YandexMoney3/YandexMoney3.php'); //require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/YandexMoney3/ReturnPaymentRequest.php'); //------------------------------------------------------------------------------ $results = array(); //------------------------------------------------------------------------------ try { $reservesPayback = ReservesPayback::getInstance(); $results['doPayback'] = print_r($reservesPayback->doPayback(1), true); } catch (\Exception $e) { $results['Error Message'] = $e->getMessage(); } //------------------------------------------------------------------------------ /* try { $reservesPayback = new ReservesPayback(); $reservesPayback->requestPayback(15, 8687, 100000); } catch (\Exception $e) { $results['Error Message'] = $e->getMessage(); }
//------------------------------------------------------------------------------ $order_id = intval(@$_GET['order_id']); try { if (!$order_id) { throw new Exception('No order_id param'); } $orderModel = TServiceOrderModel::model(); $orderModel->attributes(array('is_adm' => true)); $orderData = $orderModel->getCard($order_id, 0); if (!$orderData || !$orderModel->isStatusEmpClose() || !$orderModel->isReserve()) { throw new Exception('None'); } $reserveInstance = $orderModel->getReserve(); $invoceId = @$orderData['reserve_data']['invoice_id']; if ($reserveInstance->isStatusReserve() && $reserveInstance->isStatusBackNew() && $invoceId > 0 && ($sum = $reserveInstance->getPayback()) > 0) { ReservesPayback::getInstance()->requestPayback($reserveInstance->getID(), $invoceId, $sum); try { $orderData['reserve_data']['date_complete'] = $orderData['reserve_data']['arbitrage_date_close']; $doc = new DocGenReserves($orderData); $doc->generateActServiceEmp(); $doc->generateAgentReport(); } catch (Exception $e) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/log.php'; $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log'); $log->trace(sprintf('Order Id = %s: %s', $orderData['id'], $e->getMessage())); } } else { throw new Exception('Not allowed payback'); } } catch (\Exception $e) { $results['Error Message'] = $e->getMessage();