コード例 #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
ファイル: onlinedengi.php プロジェクト: Nikitian/fl-ru-damp
 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;
     }
 }
コード例 #3
0
ファイル: pscb.php プロジェクト: Nikitian/fl-ru-damp
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";
コード例 #4
0
ファイル: pskb.php プロジェクト: uadev/fl-ru-damp
 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;
 }