private function parse_rpc_request($request) { $sign = $request['sign']; unset($request['sign']); $app_id = $request['app_id']; if ($app_id) { $app_id = substr($app_id, strpos($app_id, '.') + 1, strlen($app_id)); } if ($request["direct"] == 'true') { $sign_check = base_certificate::gen_sign($request); } else { if (!base_shopnode::token($app_id)) { $sign_check = base_certificate::gen_sign($request); } else { $sign_check = base_shopnode::gen_sign($request, $app_id); } } if ($sign != $sign_check) { //trigger_error('sign error',E_USER_ERROR); $this->send_user_error('4003', 'sign error'); return false; } $system_params = array('app_id', 'method', 'date', 'format', 'certi_id', 'v', 'sign', 'node_id'); foreach ($system_params as $name) { $call[$name] = $request[$name]; unset($request[$name]); } //api version control 20120627 mabaineng $system_params_addon = array('from_node_id', 'from_api_v', 'to_node_id', 'to_api_v'); foreach ($system_params_addon as $name) { if ($request[$name]) { self::$api_info[$name] = $request[$name]; unset($request[$name]); } } //if method request = 'aaa.bbb.ccc.ddd' //then: object_service = api.aaa.bbb.ccc, method=ddd if (isset($call['method'][2])) { if ($p = strrpos($call['method'], '.')) { $service = substr($call['method'], 0, $p); self::$api_info['api_name'] = $service; $service = 'api.' . $service; $method = substr($call['method'], $p + 1); } } else { //trigger_error('error method',E_ERROR); $this->send_user_error('4001', 'error method'); return false; } if ($call['node_id']) { self::$node_id = $call['node_id']; } return array($service, $method, $request); }
private function parse_rpc_request($request) { $sign = $request['sign']; unset($request['sign']); $sign_check = base_certificate::gen_sign($request); if ($sign != $sign_check) { //trigger_error('sign error',E_USER_ERROR); $this->send_user_error('4003', 'sign error'); return false; } $system_params = array('app_id', 'method', 'date', 'format', 'certi_id', 'v', 'sign', 'node_id'); foreach ($system_params as $name) { $call[$name] = $request[$name]; unset($request[$name]); } //if method request = 'aaa.bbb.ccc.ddd' //then: object_service = api.aaa.bbb.ccc, method=ddd if (isset($call['method'][2])) { if ($p = strrpos($call['method'], '.')) { $service = 'api.' . substr($call['method'], 0, $p); $method = substr($call['method'], $p + 1); } } else { //trigger_error('error method',E_ERROR); $this->send_user_error('4001', 'error method'); return false; } if ($call['node_id']) { self::$node_id = $call['node_id']; } return array($service, $method, $request); }