Ejemplo n.º 1
0
 function run($params = array())
 {
     $this->check_params = $params;
     $return = array();
     $totalScore = 0;
     $allow_install = true;
     $func_prefix = ECAE_MODE ? 'ecae_' : 'test_';
     foreach (get_class_methods($this) as $func) {
         if (substr($func, 0, 5) == $func_prefix) {
             $score = 0;
             $result = $this->{$func}($score);
             if ($result['items']) {
                 $group[$result['group']]['type'] = $result['type'];
                 $group[$result['group']]['items'] = array_merge($group[$result['group']['items']] ? $group[$result['group']['items']] : array(), $result['items']);
                 if ($allow_install && isset($result['allow_install'])) {
                     $allow_install = $result['allow_install'];
                 }
                 if ($result['key']) {
                     $return[$result['key']] =& $group[$result['group']]['items'];
                 }
             }
             $totalScore += $score;
         }
     }
     $score = floor($totalScore / 100) + 1;
     $rank = min($score, $this->maxLevel + 1);
     $level = array('E', 'D', 'C', 'B', 'A', 'S');
     $return['data'] = $group;
     $return['score'] = $totalScore;
     $return['level'] = $level[$rank - 1];
     $return['rank'] = $rank;
     $return['allow_install'] = $allow_install;
     $return['path_info'] = kernel::request()->get_path_info();
     return $return;
 }
Ejemplo n.º 2
0
 public static function end($source = null)
 {
     if (!self::isExtension()) {
         die("没有xhprof扩展!");
     }
     // 可以return掉 则不影响正常程序
     $xhprof_data = xhprof_disable();
     $oXHProf = app::get("serveradm")->model("xhprof");
     //$run_id = $oXHProf->write_data($xhprof_data);
     include_once dirname(__FILE__) . "/../vendor/xhprof_lib/utils/xhprof_lib.php";
     include_once dirname(__FILE__) . "/../vendor/xhprof_lib/utils/xhprof_runs.php";
     $xhprof_runs = new XHProfRuns_Default();
     $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof");
     $aData = array('source' => 'xhprof', 'run_id' => $run_id, 'request_uri' => kernel::request()->get_request_uri(), 'app' => $_GET['app'], 'ctl' => $_GET['ctl'], 'act' => $_GET['act'], 'wt' => $xhprof_data["main()"]["wt"], 'mu' => $xhprof_data["main()"]["mu"], 'pmu' => $xhprof_data["main()"]["pmu"], 'addtime' => time());
     $oXHProf->save($aData);
 }
Ejemplo n.º 3
0
 public function index()
 {
     $this->_response->set_header('Cache-Control', 'no-store');
     $_index = $this->_request->get_param(0);
     $o_sitemaps = base_kvstore::instance('site_sitemaps');
     $o_sitemaps->fetch($_index, $arr);
     if (empty($arr)) {
         kernel::single('site_router')->http_status(404);
         return;
     } else {
         $this->pagedata['sitemaps'] = $arr;
         $this->pagedata['base_url'] = kernel::request()->get_port() == 443 ? str_replace('http', 'https', $this->app->res_url) : $this->app->res_url;
         $this->_response->set_header('Content-type', ' application/xml');
         $this->page('sitemaps/index.xml', true);
     }
 }
Ejemplo n.º 4
0
 function dispatch($query)
 {
     $query_args = explode('/', $query);
     $action = array_shift($query_args);
     $action = $action ? $action : 'index';
     $params = $query_args;
     $controller = $this->app->controller('default');
     kernel::request()->set_params($params);
     if (!in_array($action, get_class_methods($controller))) {
         die('not good really');
     }
     if (is_array($params)) {
         call_user_func_array(array($controller, $action), $params);
     } else {
         $controller->{$action}();
     }
 }
Ejemplo n.º 5
0
 function dispatch($query)
 {
     $query_args = explode('/', $query);
     $controller = array_shift($query_args);
     $action = array_shift($query_args);
     if ($controller == 'index.php') {
         $controller = '';
     }
     foreach ($query_args as $i => $v) {
         if ($i % 2) {
             $k = $v;
         } else {
             $params[$k] = $v;
         }
     }
     $controller = $controller ? $controller : 'default';
     $action = $action ? $action : 'index';
     $controller = $this->app->controller($controller);
     kernel::request()->set_params($params);
     $controller->{$action}();
 }
Ejemplo n.º 6
0
 private function gen_id()
 {
     return md5(kernel::request()->get_request_uri());
 }
Ejemplo n.º 7
0
 function __construct(&$app)
 {
     $this->app = $app;
     $this->params = kernel::request()->request_params;
     $this->pagedata =& base_render::$_vars;
 }
Ejemplo n.º 8
0
 /**
  * 提交支付信息的接口
  * @param array 提交信息的数组
  * @return mixed false or null
  */
 public function dopay($payment)
 {
     $return_url = strtolower(kernel::request()->get_schema() . '://' . kernel::request()->get_host()) . app::get('wap')->router()->gen_url(array('app' => 'b2c', 'ctl' => 'wap_paycenter', 'act' => 'result_pay', 'args' => array($payment['payment_id'])));
     $this->callback_url = $return_url;
     $mer_id = trim($this->getConf('mer_id', __CLASS__));
     $mer_key = trim($this->getConf('mer_key', __CLASS__));
     $seller_account_name = trim($this->getConf('seller_account_name', __CLASS__));
     $subject = isset($payment['subject']) && $payment['subject'] ? $payment['subject'] : $payment['account'] . $payment['payment_id'];
     $subject = str_replace("'", '`', trim($subject));
     $subject = str_replace('"', '`', $subject);
     $subject = str_replace(' ', '', $subject);
     $merchant_url = '';
     $subject_tmp = $subject;
     $price = number_format($payment['cur_money'], 2, ".", "");
     $pms_0 = array("_input_charset" => $this->_input_charset_GBK, "sign_type" => $this->sec_id, "service" => $this->Service_Paychannel, "partner" => $mer_id, "out_user" => '');
     $result = $this->mobile_merchant_paychannel($pms_0, $mer_key);
     // if($result != "验签失败"){
     // 调用alipay_wap_trade_create_direct接口,并返回token返回参数
     $pms_1 = array("req_data" => '<direct_trade_create_req><subject>' . $subject_tmp . '</subject><out_trade_no>' . $payment['payment_id'] . '</out_trade_no><total_fee>' . $price . "</total_fee><seller_account_name>" . $seller_account_name . "</seller_account_name><notify_url>" . $this->notify_url . "</notify_url><out_user>" . '' . "</out_user><merchant_url>" . $merchant_url . "</merchant_url><cashier_code>" . '' . "</cashier_code>" . "<call_back_url>" . $this->callback_url . "</call_back_url></direct_trade_create_req>", "service" => $this->Service1, "sec_id" => $this->sec_id, "partner" => $mer_id, "req_id" => date("Ymdhis"), "format" => $this->format, "v" => $this->v);
     $token = $this->alipay_wap_trade_create_direct($pms_1, $mer_key);
     // if($token != '签名不正确'){
     // 验证和发送信息与跳转手机支付宝收银台.
     $req_data = '<auth_and_execute_req><request_token>' . $token . '</request_token></auth_and_execute_req>';
     $pms2 = array("req_data" => $req_data, "service" => $this->Service2, "sec_id" => $this->sec_id, "partner" => $mer_id, "call_back_url" => $this->callback_url, "format" => $this->format, "v" => $this->v);
     $parameter = $this->para_filter($pms2);
     $mysign = $this->build_mysign($this->arg_sort($parameter), $mer_key, $this->sec_id);
     $this->add_field('req_data', $req_data);
     $this->add_field('service', $this->Service2);
     $this->add_field('sec_id', $this->sec_id);
     $this->add_field('partner', $mer_id);
     $this->add_field('call_back_url', $this->callback_url);
     $this->add_field('format', $this->format);
     $this->add_field('v', $this->v);
     $this->add_field('sign', urlencode($mysign));
     $payhtml = $this->get_html();
     $date = date('Y-m-d');
     $file = 'payment/pay' . $payment['payment_id'] . '.html';
     $fh = fopen($file, 'w');
     fwrite($fh, $payhtml);
     fclose($fh);
     return 'http://pinzhen.qsit.com.cn/' . $file;
     exit;
     //     }else{
     //         echo '签名不正确';
     //         return false;
     //     }
     // }else{
     //     return false;
     // }
 }
Ejemplo n.º 9
0
 /**
  * 支付返回后的同意支付处理
  * @params array - 页面参数
  * @return null
  */
 public function parse($params = '')
 {
     // 取到内部系统参数
     $arr_pathInfo = explode('?', $_SERVER['REQUEST_URI']);
     $pathInfo = substr($arr_pathInfo[0], strpos($arr_pathInfo[0], "parse/") + 6);
     $objShopApp = $this->getAppName($pathInfo);
     $innerArgs = explode('/', $pathInfo);
     $class_name = array_shift($innerArgs);
     $class_name = array_shift($innerArgs);
     $method = array_shift($innerArgs);
     $arrStr = array();
     $arrSplits = array();
     $arrQueryStrs = array();
     // QUERY_STRING
     if (isset($arr_pathInfo[1]) && $arr_pathInfo[1]) {
         $querystring = $arr_pathInfo[1];
     }
     if ($querystring) {
         $arrStr = explode("&", $querystring);
         foreach ($arrStr as $str) {
             $arrSplits = explode("=", $str);
             $arrQueryStrs[urldecode($arrSplits[0])] = urldecode($arrSplits[1]);
         }
     } else {
         if ($_POST) {
             $arrQueryStrs = $_POST;
         }
     }
     $payments_bill = new $class_name($objShopApp);
     $ret = $payments_bill->{$method}($arrQueryStrs);
     // 支付结束,回调服务.
     if (!isset($ret['status']) || $ret['status'] == '') {
         $ret['status'] = 'failed';
     }
     $obj_payments = app::get('ectools')->model('payments');
     $sdf = $obj_payments->dump($ret['payment_id'], '*', '*');
     if ($sdf) {
         $sdf['account'] = $ret['account'];
         $sdf['bank'] = $ret['bank'];
         $sdf['pay_account'] = $ret['pay_account'];
         $sdf['currency'] = $ret['currency'];
         $sdf['trade_no'] = $ret['trade_no'];
         $sdf['t_payed'] = $ret['t_payed'];
         $sdf['pay_app_id'] = $ret['pay_app_id'];
         $sdf['pay_type'] = $ret['pay_type'];
         $sdf['memo'] = $ret['memo'];
     }
     switch ($ret['status']) {
         case 'succ':
         case 'progress':
             if ($sdf && $sdf['status'] != 'succ') {
                 $is_updated = false;
                 $obj_payment_update = kernel::single('ectools_payment_update');
                 $is_updated = $obj_payment_update->generate($ret, $msg);
                 $obj_pay_lists = kernel::servicelist("order.pay_finish");
                 foreach ($obj_pay_lists as $order_pay_service_object) {
                     // 防止重复充值
                     if ($is_updated) {
                         $db = kernel::database();
                         $transaction_status = $db->beginTransaction();
                         $is_updated = $order_pay_service_object->order_pay_finish($sdf, $ret['status'], 'font', $msg);
                         if (!$is_updated) {
                             kernel::log(app::get('ectools')->_('支付失败') . " " . $msg . "\n");
                             $db->rollback();
                         } else {
                             $db->commit($transaction_status);
                             // 支付扩展事宜 - 如果上面与中心没有发生交互,那么此处会发出和中心交互事宜.
                             if (method_exists($order_pay_service_object, 'order_pay_finish_extends')) {
                                 $order_pay_service_object->order_pay_finish_extends($sdf);
                             }
                         }
                     }
                 }
                 //支付成功给支付网关显示支付信息
                 if (method_exists($payments_bill, 'ret_result')) {
                     $payments_bill->ret_result($ret['payment_id']);
                 }
             }
             break;
         case 'REFUND_SUCCESS':
             // 退款成功操作
             if ($sdf) {
                 unset($sdf['payment_id']);
                 $obj_refund = app::get('ectools')->model('refund');
                 $sdf['refund_id'] = $obj_refund->gen_id();
                 $ret['status'] = 'succ';
                 if ($obj_refund->insert($sdf)) {
                     //处理单据的支付状态
                     $obj_refund_finish = kernel::service("order.refund_finish");
                     $obj_refund_finish->order_refund_finish($sdf, $ret['status'], 'font', $msg);
                 }
             }
             break;
         case 'PAY_PDT_SUCC':
             $ret['status'] = 'succ';
             // 无需更新状态.
             break;
         case 'failed':
         case 'error':
         case 'cancel':
         case 'invalid':
         case 'timeout':
             $is_updated = false;
             $obj_payment_update = kernel::single('ectools_payment_update');
             $is_updated = $obj_payment_update->generate($ret, $msg);
             break;
     }
     // Redirect page.
     if ($sdf['return_url']) {
         header('Location: ' . strtolower(kernel::request()->get_schema() . '://' . kernel::request()->get_host()) . $sdf['return_url']);
     }
 }