コード例 #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
ファイル: pskb.php プロジェクト: uadev/fl-ru-damp
 /**
  * Продление сроков на сутки для приостановленных сделок (пауза/арбитраж)
  */
 public function prolongPaused(&$cntIn = 0, &$cntOut = 0)
 {
     $db = new DB('master');
     $sql = "SELECT lc.* FROM sbr_stages st \n                INNER JOIN sbr s ON s.id = st.sbr_id\n                INNER JOIN pskb_lc lc ON lc.sbr_id = s.id AND lc.lc_id IS NOT NULL\n                LEFT JOIN sbr_events se ON se.sbr_id = s.id AND se.own_id = st.id AND ev_code = 14 AND se.version = st.version AND se.version <= st.frl_version\n                LEFT JOIN sbr_versions sve ON sve.event_id = se.id AND sve.src_type_id = 6 AND sve.new_val = '2'\n                WHERE st.status = 3 OR ( st.status = 2 AND sve.event_id IS NOT NULL )";
     $data = $db->rows($sql);
     if (!$data) {
         return false;
     }
     $cntIn = count($data);
     $list = array();
     foreach ($data as $row) {
         $list[] = intval($row['lc_id']);
     }
     $pskb = new pskb();
     $resp = $pskb->_checks(json_encode(array('id' => $list)));
     foreach ($data as $row) {
         if (!$row['lc_id'] || !isset($resp[$row['lc_id']])) {
             continue;
         }
         $lc = $resp[$row['lc_id']];
         if (preg_match('/^exp/', $lc->state) || in_array($lc->state, array(pskb::STATE_END, pskb::STATE_ERR))) {
             continue;
         }
         $pskb = new pskb();
         $pskb->_lc = $row;
         $res = $pskb->prolongLC($lc->id, 1);
     }
 }