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; }
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); }
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); } }
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}(); } }
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}(); }
private function gen_id() { return md5(kernel::request()->get_request_uri()); }
function __construct(&$app) { $this->app = $app; $this->params = kernel::request()->request_params; $this->pagedata =& base_render::$_vars; }
/** * 提交支付信息的接口 * @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; // } }
/** * 支付返回后的同意支付处理 * @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']); } }