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; }
/** * Продление сроков на сутки для приостановленных сделок (пауза/арбитраж) */ 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); } }