コード例 #1
0
ファイル: sbr.server.php プロジェクト: kapai69/fl-ru-damp
function preparePayment($sbr_id, $mode_type)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pskb.php';
    $objResponse = new xajaxResponse();
    //    $objResponse->call('finance_spinn_hide');
    $sbr_id = __paramValue('int', $sbr_id);
    $mode_type = __paramValue('int', $mode_type);
    if (!$sbr_id || !$mode_type) {
        $objResponse->call('finance_raise_err', 'Запрос не может быть обработан.');
        return $objResponse;
    }
    $uid = get_uid(0);
    if (!$uid) {
        $objResponse->redirect('/');
        return $objResponse;
    }
    $sbr = sbr_meta::getInstance();
    if (!$sbr->initFromId($sbr_id)) {
        $objResponse->call('finance_raise_err', 'Запрос не может быть обработан.');
        return $objResponse;
    }
    if ($sbr->status == sbr::STATUS_REFUSED) {
        $objResponse->call('finance_raise_err', 'Запрос не может быть обработан. Исполнитель отказался от сделки.');
        return $objResponse;
    }
    if ($sbr->data['scheme_type'] != sbr::SCHEME_LC) {
        $objResponse->call('finance_raise_err', 'Указанная схема не поддерживается.');
        return $objResponse;
    }
    $pskb = new pskb($sbr);
    $lc = $pskb->getLC();
    if ($lc['state'] == pskb::STATE_COVER) {
        $objResponse->script('document.location.reload();');
        return $objResponse;
    }
    if ($lc['lc_id'] > 0 && $lc['state'] == pskb::STATE_ERR) {
        $resp = $pskb->_checks(json_encode(array('id' => array($lc['lc_id']))));
        $lc_ch = $resp[$lc['lc_id']];
        if ($lc_ch->state == pskb::STATE_NEW) {
            $user = $pskb->initPskbUser($mode_type);
            $checkReqvNew = $pskb->getMd5Reqvs($user->getParams());
            $checkReqvOld = $pskb->getMd5Reqvs($lc, 'Cust');
            $pskb->diffUserReqvs($checkReqvNew, $checkReqvOld);
        } elseif ($lc_ch->state == pskb::STATE_COVER) {
            $pskb->upLC(array('state' => 'new'), $lc['lc_id']);
            pskb::checkStatus(array($lc['lc_id']), $in, $out);
            $objResponse->script('document.location.reload();');
            return $objResponse;
        }
    }
    if ($pskb->prepareLC($mode_type) && ($pskb_lc = $pskb->reserve())) {
        if (is_object($pskb_lc)) {
            // Все идет по плану
            $objResponse->call('finance_add_fld', 'source', onlinedengi::SOURCE_ID);
            $objResponse->call('finance_add_fld', 'order_id', $pskb_lc->id);
            $objResponse->call('finance_add_fld', 'nickname', $pskb_lc->id);
            $objResponse->call('finance_add_fld', 'amount', $sbr->getReserveSum(true, pskb::$exrates_map[$mode_type]));
            $objResponse->call('xajax_checkPayment', $sbr_id);
        } elseif ($pskb_lc == 'no_different') {
            $pskb->upLC(array('state' => 'new'), $lc['lc_id']);
            if ($mode_type == onlinedengi::CARD) {
                $objResponse->call('pskb_frame', $lc['lc_id'], pskb::getNonceSign($lc['lc_id']));
            } else {
                $objResponse->call('finance_add_fld', 'source', onlinedengi::SOURCE_ID);
                $objResponse->call('finance_add_fld', 'order_id', $lc['lc_id']);
                $objResponse->call('finance_add_fld', 'nickname', $lc['lc_id']);
                $objResponse->call('finance_add_fld', 'amount', $sbr->getReserveSum(true, pskb::$exrates_map[$mode_type]));
                $objResponse->call('finance_send_frm');
            }
        }
    } else {
        $objResponse->call('finance_raise_err', $pskb->getError());
    }
    return $objResponse;
}
コード例 #2
0
ファイル: minutly_sbr.php プロジェクト: kapai69/fl-ru-damp
<?php

ini_set('max_execution_time', '0');
ini_set('memory_limit', '512M');
define('IS_OPENED', true);
if (!$_SERVER['DOCUMENT_ROOT']) {
    $_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__);
}
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/config.php';
//require_once("classes/log.php");
//$log = new log('minutly/minutly-sbr-'.SERVER.'-%d%m%Y[%H].log', 'w');
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pskb.php';
/*
 * проверка статуса новых аккредитивов и покрытия
 */
pskb::checkStatus(null, $in, $out);
/*
 * проверка аккредитивов в статусе trans (перечисление денег)
 */
if (date('i') % 5 == 0) {
    pskb::checkStagePayoputForSuperCheck(null, $in, $out);
}
if (pskb::PSKB_SUPERCHECK && date('i') % 2 == 0) {
    // сократим до раз в две минуты, раньше смысла нет. Ответ от ПСКБ формируется до 5 минут
    pskb::checkStagePayouts(null, $in, $out);
} elseif (!pskb::PSKB_SUPERCHECK) {
    // Если отключен суперчек по старому
    pskb::checkStagePayouts(null, $in, $out);
}
if (date('i') % 2 == 0) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_adm.php';
コード例 #3
0
ファイル: pskb.php プロジェクト: uadev/fl-ru-damp
 /**
  * Создает аккредитив. Регистрирует, если необходимо, кошельки для пользователей.
  * В случае создания кошельков банк отправляет пользователям смс с временным паролем.
  * 
  * @param type $sum         Сумма резерва
  * 
  * @return pskb_lc
  */
 public function reserve()
 {
     $lc = $this->getLC();
     $numDog = $this->_sbr->data['id'];
     if ($lc['lc_id'] > 0 && $lc['state'] == self::STATE_ERR) {
         $resp = $this->_checks(json_encode(array('id' => array($lc['lc_id']))));
         $lc_ch = $resp[$lc['lc_id']];
         if ($lc_ch->state == self::STATE_NEW) {
             if ($this->not_different_finance) {
                 return 'no_different';
             } else {
                 $this->upLC(array('lc_id' => null), $lc['lc_id']);
                 // Нужен новый аккредитив, изменились данные резерва
                 $lc['lc_id'] = null;
             }
         } elseif ($lc_ch->state == self::STATE_COVER) {
             $this->upLC(array('state' => 'new'), $lc['lc_id']);
             pskb::checkStatus(array($lc['lc_id']), $in, $out);
             return true;
         }
     }
     if (!$lc) {
         $this->_setError('Ошибка запроса.');
         return false;
     }
     if ($lc['lc_id'] && $lc['state'] == self::STATE_NEW) {
         $this->_setError('Аккредитив уже создан. Ожидается оплата.');
         return false;
     }
     $cdate = new LocalDateTime();
     $cdate->getExcDaysInit(false, true);
     $stages = $this->_sbr->getStages();
     $work_time = 0;
     foreach ($stages as $stage) {
         $work_time += $stage->data['work_time'];
         $cdate->start_time = "now + {$work_time} day";
         $cdate->setTimestamp(strtotime("now + {$work_time} day"));
         $cdate->getWorkForDay(self::TEMP_STAGE_DELAY);
         $work_time += $cdate->getCountDays();
     }
     // Считаем 5 рабочих дней
     $cdate->getWorkForDay(self::DATE_COVER_DELAY, true);
     $cover_time = $cdate->getTimestamp();
     $exec_time = $cover_time + 3600 * 24 * $work_time;
     $end_time = $exec_time + 3600 * 24 * self::DATE_END_DELAY;
     $dateCoverLC = date('d.m.Y', $cover_time);
     $dateExecLC = date('d.m.Y', $exec_time);
     $dateEndLC = date('d.m.Y', $end_time);
     $resp = $this->_addLC($lc['sum'], $this->_sbr->data['id'], $dateExecLC, $dateEndLC, $dateCoverLC, $lc['tagCust'], $lc['alienCust'], $lc['nameCust'], $lc['numCust'], $lc['psCust'], $lc['accCust'], $lc['innCust'], $lc['nameBankCust'], $lc['swiftCust'], $lc['corAccbankCust'], $lc['emailCust'], $lc['cityBankCust'], $lc['cntrBankCust'], $lc['tagPerf'], $lc['alienPerf'], $lc['namePerf'], $lc['numPerf'], $lc['psPerf'], $lc['accPerf'], $lc['innPerf'], $lc['nameBankPerf'], $lc['swiftPerf'], $lc['corAccbankPerf'], $lc['emailPerf'], $lc['cityBankPerf'], $lc['cntrBankPerf'], $this->_sbr->data['cost']);
     $dateCoverLC = date('Y-m-d', $cover_time);
     $dateExecLC = date('Y-m-d', $exec_time);
     $dateEndLC = date('Y-m-d', $end_time);
     if ($resp->id) {
         $data = array('lc_id' => $resp->id, 'dateCoverLC' => $dateCoverLC, 'dateExecLC' => $dateExecLC, 'dateEndLC' => $dateEndLC, 'state' => $resp->state, 'stateReason' => $resp->stateReason);
         $res = $this->upLC($data, $this->_sbr->data['id'], 'sbr_id');
     } else {
         $this->_setError('Ошибка создания аккредитива.');
         $resp = false;
     }
     return $resp;
 }