コード例 #1
0
 /**
  * Закрывает арбитраж.
  *
  * @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);
 }
コード例 #2
0
ファイル: reserves.php プロジェクト: kapai69/fl-ru-damp
 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;
 }
コード例 #3
0
 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;
 }
コード例 #4
0
ファイル: payback.php プロジェクト: kapai69/fl-ru-damp
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();
}    
コード例 #5
0
ファイル: pb1.php プロジェクト: kapai69/fl-ru-damp
//------------------------------------------------------------------------------
$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();