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 handleRequest() { switch ($this->_action) { case self::DO_REQUEST_PAYMENT: // return $this->_processPayment(); break; case self::DO_REQUEST_CHECKIN: // return $this->_processCheck(); break; case self::DO_REQUEST_SUCCESS: $pmt = $this->_getPayment($this->_request['nickname']); if (!$pmt) { header_location_exit('/404.php'); } $pskb = new pskb(); $pskb->upLC(array('refund' => 1, 'dol_paymentid' => $this->_request['paymentid']), $pmt['lc_id']); header_location_exit('/' . sbr::NEW_TEMPLATE_SBR . '/?site=reserve&id=' . $pmt['sbr_id']); break; case self::DO_REQUEST_FAILURE: $pmt = $this->_getPayment($this->_request['nickname']); if (!$pmt || $pmt['state'] != 'new' && $pmt['state'] != 'err') { header_location_exit('/404.php'); } if ($this->_request['duplicate'] == 1) { $pskb = new pskb(); $pskb->upLC(array('sended' => 1, 'dol_paymentid' => $this->_request['paymentid']), $pmt['lc_id']); } else { if ($this->_request['refund'] == 1) { $pskb = new pskb(); $pskb->upLC(array('refund' => 1, 'dol_paymentid' => $this->_request['paymentid']), $pmt['lc_id']); } else { $pskb = new pskb(); $pskb->upLC(array('dol_paymentid' => $this->_request['paymentid']), $pmt['lc_id']); } $pskb = new pskb(); $pskb_lc = $pskb->checkLC($pmt['lc_id']); if ($pskb_lc->state != pskb::STATE_COVER) { $reason = __paramValue('string', $this->_request['process_message']); $this->_clearPayment($pmt['lc_id'], $reason); } } header_location_exit('/' . sbr::NEW_TEMPLATE_SBR . '/?site=reserve&id=' . $pmt['sbr_id']); break; default: break; } }
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/log.php"; $src = __paramValue('int', $get['res']); $state = __paramValue('int', $post['state']); $lc_id = __paramValue('int', $post['account']); $log_data = array('GET' => $get, 'POST' => $post); if (!pskb::validateCardRequest($post)) { $src = 2; $state = -999; $log_data['err'] = array('src' => $src, 'state' => $state); } $log = new log("pskb_cards/income-" . SERVER . '-%d%m%Y.log', 'a', '%d.%m.%Y %H:%M:%S : ' . $_SERVER['REMOTE_ADDR'] . ' : '); $log->writevar($log_data); $pskb = new pskb(); $_lc = $pskb->getLCbyLCId($lc_id); $err_msg = "Неизвестная ошибка"; if ($src == 2) { if ($state && in_array($state, array_keys(pskb::$card_messages))) { $err_msg = pskb::$card_messages[$state]; } if (!in_array($state, array(2, -999))) { $pskb->upLC(array('state' => 'err', 'stateReason' => $err_msg), $_lc['lc_id']); } } if ($src === 1 && defined('PSKB_TEST_MODE')) { $lc = new pskb_lc(json_encode($_lc)); $lc->id = $_lc['lc_id']; $lc->state = 'cover'; $test = new pskb_server(); $test->set($lc); } include_once $_SERVER['DOCUMENT_ROOT'] . "/sbr/employer/tpl.pskb-cards-income.php";
public static function listenRequest($src) { global $DB; $log = new log("pskb_listen/{$src}-" . SERVER . '-%d%m%Y.log', 'a', '%d.%m.%Y %H:%M:%S : '); ob_start(); var_dump(file_get_contents('php://input')); $out = ob_get_clean(); $log->writeln(iconv('utf8', 'cp1251', $out)); switch ($src) { case 'superCheck': $request = json_decode(file_get_contents('php://input')); if ($request) { $pskb = new pskb(); foreach ($request as $k => $pskb_req) { $pskb_req = new pskb_lc(json_encode($pskb_req)); $row = $pskb->getLCbyLCId($pskb_req->id); if ($pskb_req->history) { foreach ($pskb_req->history as $pskb_lc) { if (!$pskb_lc->id) { continue; } // Пытаемся определить uid если он пустой, подходит только для одноэтапной сделки // @todo с многоэтапными тоже что-то придумать надо if ($pskb_lc->uid == '' || $pskb_lc->uid == null) { $sql = "SELECT s.id FROM pskb_lc pl\n INNER JOIN sbr s ON s.id = pl.sbr_id\n WHERE pl.lc_id = ? AND stages_cnt = 1"; // Запрос делаем что-бы точно проверить что этап в сделке один единственный $sbr_id = $DB->val($sql, $pskb_req->id); if ($sbr_id > 0) { $pskb_lc->uid = "{$sbr_id}-1"; } } if ($DB->val("SELECT id FROM pskb_lc_supercheck WHERE lc_id = ? AND uid = ? AND state = ? AND date = ? AND target = ?b", $pskb_req->id, "{$pskb_lc->uid}", $pskb_lc->state, $pskb_lc->date, $pskb_lc->target ? true : false) > 0) { continue; // В базе уже есть идентичная запись } $insert = array('lc_id' => $pskb_req->id, 'state' => $pskb_lc->state, 'date' => date('c', strtotime($pskb_lc->date)), 'uid' => "{$pskb_lc->uid}", 'target' => $pskb_lc->target ? true : false, 'sum' => $pskb_lc->sum, 'account' => $pskb_lc->account, 'ps' => $pskb_lc->ps); $DB->insert('pskb_lc_supercheck', $insert); continue; /** * @deprecated Пока все что ниже работать не должно просто пишем в базу историю которую возвращают */ $stg = sbr_meta::getStatePayout(explode('-', $pskb_lc->uid)); if ($pskb_lc->state == $stg['state']) { continue; } switch ($pskb_lc->state) { case self::PAYOUT_END: // отправлено по реквизитам // отправлено по реквизитам case self::PAYOUT_ERR: // зачислено в ВК // выплачено $sbr = new sbr($stg['emp_id']); $stage = $sbr->getStage($stg['stage_id']); $stage->getArbitrage(false, false); if ($stage->arbitrage && $stage->arbitrage['resolved']) { $emp_percent = abs(sbr::EMP - $stage->arbitrage['frl_percent']); $frl_percent = abs(sbr::FRL - $stage->arbitrage['frl_percent']); } else { $frl_percent = 1; } $frl_payout = true; $emp_payout = true; if ($frl_percent > 0) { $frl_payout = !$stage->payoutAgnt($stg['frl_id'], new pskb($stage->sbr->data['id']), $pskb_lc); } if ($emp_percent > 0) { $emp_payout = !$stage->payoutAgnt($stg['emp_id'], new pskb($stage->sbr->data['id']), $pskb_lc); } if (!$frl_payout && !$emp_payout) { continue; } break; } $lc = $pskb_req; if (!$lc->id || $lc->state == $row['state']) { continue; } switch ($lc->state) { case self::STATE_COVER: case self::STATE_END: if ($lc->state == self::STATE_END) { $up_data['ended'] = $pskb_lc->date; } break; case self::STATE_ERR: break; default: continue; } $up_data['state'] = $lc->state; $up_data['stateReason'] = $lc->stateReason; $pskb->upLC($up_data, $row['lc_id']); } } } } break; default: break; } return true; }