function getSignVeryfy($para_temp, $sign, $isSort) { $para = paraFilter($para_temp); if ($isSort) { $para = argSort($para); } else { $para = $this->sortNotifyPara($para); } $prestr = createLinkstring($para); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case "RSA": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; case "0001": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; default: $isSgin = false; } return $isSgin; }
/** * 生成签名 * @param req 需要签名的要素 * @return 签名结果字符串 */ function buildSignature($req) { $prestr = createLinkstring($req, true, false); watchdog('back para', 'back para1111:<pre>@para</pre>', array('@para' => print_r($prestr, TRUE))); $prestr = $prestr . upmp_config::QSTRING_SPLIT . md5(upmp_config::$security_key); return md5($prestr); }
function buildMysign($sort_para, $key, $sign_type = "MD5") { $prestr = createLinkstring($sort_para); $prestr = $prestr . $key; $mysgin = sign($prestr, $sign_type); return $mysgin; }
/** * 生成要请求给支付宝的参数数组 * @param $para_temp 请求前的参数数组 * @return 要请求的参数数组字符串 */ function buildRequestParaToString($para_temp) { //待请求参数数组 $para = $this->buildRequestPara($para_temp); //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码 $request_data = createLinkstring($para); return $request_data; }
/** * 生成要请求给支付宝的参数数组 * @param $para_temp 请求前的参数数组 * @param $aliapy_config 基本配置信息数组 * @return 要请求的参数数组字符串 */ function buildRequestParaToString($para_temp, $aliapy_config) { //待请求参数数组 $para = $this->buildRequestPara($para_temp, $aliapy_config); //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $request_data = createLinkstring($para); return $request_data; }
/** * 生成签名结果 * @param $sort_para 要签名的数组 * @param $key 支付宝交易安全校验码 * @param $sign_type 签名类型 默认值:MD5 * return 签名结果字符串 */ function buildMysign($sort_para, $key, $sign_type = "MD5") { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($sort_para); //把拼接后的字符串再与安全校验码直接连接起来 $prestr = $prestr . $key; //把最终的字符串签名,获得签名结果 $mysgin = sign($prestr, $sign_type); return $mysgin; }
/** * 生成签名 * @param req 需要签名的要素 * @return 签名结果字符串 */ function buildSignature($req) { global $security_key; $secrutykey = $security_key ? $security_key : upmp_config::$security_key; $prestr = createLinkstring($req, true, false); $prestr = $prestr . upmp_config::QSTRING_SPLIT . md5($secrutykey); $file = "bank-" . date('y-m-d') . ".txt"; $filehandle = fopen($file, "a"); fwrite($filehandle, "<br>MD5前:<br>" . $prestr . "----------<br>"); fclose($filehandle); return md5($prestr); }
function buildRequestMysign($para_sort) { $prestr = createLinkstring($para_sort); $mysign = ""; switch (strtoupper(trim($this->llpay_config['sign_type']))) { case "MD5" : $mysign = md5Sign($prestr, $this->llpay_config['key']); break; default : $mysign = ""; } true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log","签名:".$mysign."\n", FILE_APPEND); return $mysign; }
function buildRequestMysign($para_sort) { $prestr = createLinkstring($para_sort); $mysign = ""; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $mysign = md5Sign($prestr, $this->alipay_config['key']); break; default: $mysign = ""; } return $mysign; }
/** * 生成签名结果 * @param $para_sort 已排序要签名的数组 * return 签名结果字符串 */ function buildRequestMysign($para_sort) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $mysign = ""; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "RSA": $mysign = rsaSign($prestr, $this->alipay_config['private_key_path']); break; default: $mysign = ""; } return $mysign; }
/** * 生成签名结果 * @param $para_sort 已排序要签名的数组 * return 签名结果字符串 */ function buildRequestMysign($para_sort) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $mysign = ""; switch (strtoupper(trim($this->jfb_config['sign_type']))) { case "MD5": $mysign = md5Sign($prestr, $this->jfb_config['key']); break; default: $mysign = ""; } return $mysign; }
public function getSignVeryfy($para_temp, $sign) { $para_filter = paraFilter($para_temp); $para_sort = argSort($para_filter); $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config["sign_type"]))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config["key"]); break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @return 签名验证结果 */ public function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值 $para = paraFilter($para_temp); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para); $MAC = base64_decode($sign); $fp = fopen(dirname(__FILE__) . "/99bill[1].cert.rsa.20140803.cer", "r"); $cert = fread($fp, 8192); fclose($fp); $pubkeyid = openssl_get_publickey($cert); $isSgin = false; $isSgin = openssl_verify($trans_body, $MAC, $pubkeyid); return $isSgin; }
/** * 生成签名结果 * @param $para_sort 已排序要签名的数组 * return 签名结果字符串 */ function buildRequestMysign($para_sort) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); // $prestr = 'partner="2088021351438614"&seller_id="*****@*****.**"&out_trade_no="120517540212075"&subject="测试的商品"&body="该测试商品的详细描述"&total_fee="0.01"¬ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&return_url="m.alipay.com"'; $mysign = ""; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "RSA": $mysign = rsaSign($prestr, $this->alipay_config['private_key_path']); break; default: $mysign = ""; } return $mysign; }
/** * 生成签名结果 * @param $para 要签名的数组 * return 签名结果字符串 */ public function buildRequestMysign($para) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para); $mysign = ""; ///////////// RSA 签名计算 ///////// 开始 // $fp = fopen(dirname(__FILE__) . "/pcarduser.pem", "r"); $priv_key = fread($fp, 123456); fclose($fp); $pkeyid = openssl_get_privatekey($priv_key); // compute signature openssl_sign($prestr, $signMsg, $pkeyid, OPENSSL_ALGO_SHA1); // free the key from memory openssl_free_key($pkeyid); $signMsg = base64_encode($signMsg); return $signMsg; }
/** * 获取请求签名 * @param $para_temp 请求的参数数组 * @return 签名 */ public function getSign($para_temp) { //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($para_temp); //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "RSA": $isSgin = rsaSign($prestr, trim($this->alipay_config['private_key_path'])); break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($para_temp); //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; default: $isSgin = false; } return $isSgin; }
/** * 生成签名结果 * @param $para_sort 已排序要签名的数组 * return 签名结果字符串 */ function buildRequestMysign($para_sort) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $mysign = ""; switch (strtoupper(trim($this->llpay_config['sign_type']))) { case "MD5": $mysign = md5Sign($prestr, $this->llpay_config['key']); break; case "RSA": $mysign = RsaSign($prestr); break; default: $mysign = ""; } file_put_contents("log.txt", "签名:" . $mysign . "\n", FILE_APPEND); return $mysign; }
/** * 生成签名 * @param req 需要签名的要素 * @return 签名结果字符串 */ function buildSignature($req) { $prestr = createLinkstring($req, true, false); $prestr = $prestr . upmp_config::QSTRING_SPLIT . md5(upmp_config::$security_key); return md5($prestr); }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @return 签名验证结果 */ public function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值和签名参数 if (strtoupper(trim($this->alipay_config['sign_type'])) == 'RSA') { $para_filter = paraFilter($para_temp, 3); //参数需要urldecode } else { $para_filter = paraFilter($para_temp); } //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case 'MD5': $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case 'RSA': $isSgin = rsaVerify($prestr, $this->alipay_config['alipay_public_key'], $sign); break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @param $isSort 是否对待签名数组排序 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign, $isSort) { //除去待签名参数数组中的空值和签名参数 $para = paraFilter($para_temp); //对待签名参数数组排序 if ($isSort) { $para = argSort($para); } else { $para = sortNotifyPara($para); } //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case "RSA": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; case "0001": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; default: $isSgin = false; } return $isSgin; }
function getSignVeryfy($para_temp, $sign) { $para_filter = paraFilter($para_temp); $para_sort = argSort($para_filter); $prestr = createLinkstring($para_sort); true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log", "原串:" . $prestr . "\n", FILE_APPEND); true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log", "sign:" . $sign . "\n", FILE_APPEND); $isSgin = false; switch (strtoupper(trim($this->llpay_config['sign_type']))) { case "MD5" : $isSgin = md5Verify($prestr, $sign, $this->llpay_config['key']); break; default : $isSgin = false; } return $isSgin; }
productdesc 商品描述 最长200位 可空 appcallbackurl 第3方平台异步通知地址 可空 appkey 应用id Sdk后台申请 不可空 sign 本系统签名 不可空 */ $key = "jz"; //干扰码:jz $notice_sn = $_REQUEST['apporderid']; $trade_no = $_REQUEST['order_id']; $sign = $_REQUEST['sign']; //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($_REQUEST); //对待签名参数数组排序 $para_sort = argSort($para_filter); //生成签名结果 $sign_str = createLinkstring($para_sort); $mysign = md5($sign_str . $key); /* $sign_str = $amount.$apporderid.$order_id; $mysign = md5($sing_str.$key); */ if ($sign == $mysign) { $apporderid = $_REQUEST['apporderid']; $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $notice_sn . "'"); require_once APP_ROOT_PATH . "system/libs/cart.php"; $rs = payment_paid($notice_sn, $trade_no); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $trade_no . "' where id = " . $payment_notice['id']); } $url = APP_ROOT . "/../wap/index.php?ctl=cart&act=pay_result&id=" . $payment_notice['id']; app_redirect($url);
function rsaSign($data) { $priKey = "-----BEGIN RSA PRIVATE KEY-----\n生成密钥时获取的私钥字符串,直接使用pem文件的完整字符串\n-----END RSA PRIVATE KEY-----"; $res = openssl_get_privatekey($priKey); openssl_sign($data, $sign, $res); openssl_free_key($res); $sign = base64_encode($sign); $sign = urlencode($sign); return $sign; } // 支付宝合作者身份ID,以2088开头的16位纯数字 $partner = "%支付宝PartnerID%"; // 支付宝账号 $seller_id = '%支付宝账号,通常为邮箱地址%'; // 商品网址 $base_path = urlencode('http://www.dcloud.io/helloh5/'); // 异步通知地址 $notify_url = urlencode('http://demo.dcloud.net.cn/payment/alipay/notify.php'); // 订单标题 $subject = 'DCloud项目捐赠'; // 订单详情 $body = 'DCloud致力于打造HTML5最好的移动开发工具,包括终端的Runtime、云端的服务和IDE,同时提供各项配套的开发者服务。'; // 订单号,示例代码使用时间值作为唯一的订单ID号 $out_trade_no = date('YmdHis', time()); $parameter = array('service' => 'mobile.securitypay.pay', 'partner' => $partner, '_input_charset' => 'UTF-8', 'out_trade_no' => $out_trade_no, 'subject' => $subject, 'payment_type' => '1', 'seller_id' => $seller_id, 'total_fee' => $total, 'body' => $body, 'it_b_pay' => '1d', 'notify_url' => $notify_url, 'show_url' => $base_path); //生成需要签名的订单 $orderInfo = createLinkstring($parameter); //签名 $sign = rsaSign($orderInfo); //生成订单 echo $orderInfo . '&sign="' . $sign . '"&sign_type="RSA"';
public function getOrderInfo($trans_no, $type = 'normal', $order_time = 0) { $query = $this->CI->db->get_where('recharge_order', array('order_no' => $trans_no)); $recharg = $query->row_array(); $post_data = array('dt_order' => date('YmdHis', strtotime($recharg['created'])), 'no_order' => $trans_no, 'oid_partner' => trim($this->llpay_config['oid_partner'])); $sign_data = $post_data; $sign_data['sign_type'] = strtoupper(trim($this->llpay_config['sign_type'])); $sign_data['key'] = trim($this->llpay_config['key']); $post_data['sign'] = md5(createLinkstring($sign_data)); $post_data['sign_type'] = strtoupper(trim($this->llpay_config['sign_type'])); $json_data = json_encode($post_data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->order_info_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($json_data))); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); $check_info = curl_exec($ch); curl_close($ch); $result_arr = json_decode($check_info, true); if ($type == 'normal') { //整理数据返回 $pay_status = 'N'; if (!isset($result_arr['result_pay'])) { $return_array = array('status' => '0', 'succMoney' => 0, 'TransID' => $trans_no, 'SuccTime' => 0, 'CheckResult' => 'N'); } else { switch ($result_arr['result_pay']) { case 'WAITING': $pay_status = 'P'; break; case 'PROCESSING': $pay_status = 'P'; break; case 'FAILURE': $pay_status = 'F'; break; case 'SUCCESS': $pay_status = 'Y'; break; case 'REFUND': $pay_status = 'R'; break; default: $pay_status = 'N'; break; } $return_array = array('status' => '1', 'succMoney' => $result_arr['money_order'], 'TransID' => $result_arr['no_order'] != '' ? $result_arr['no_order'] : $trans_no, 'SuccTime' => $result_arr['dt_order'], 'CheckResult' => $pay_status); } return $return_array; } else { if ($type == 'all') { return $result_arr; } } }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($para_temp); //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "RSA": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); /* $log_text = 'Prestr:'.$prestr.',Alipay_public_key_path:'.trim($this->alipay_config['ali_public_key_path']); logResult($log_text); */ break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @param $isSort 是否对待签名数组排序 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign, $isSort) { //除去待签名参数数组中的空值和签名参数 //file_put_contents("./alipaylog/getSignVeryfy_para_temp_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para_temp,true)); $para = paraFilter($para_temp); //file_put_contents("./alipaylog/getSignVeryfy_para1_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para,true)); //对待签名参数数组排序 if ($isSort) { $para = argSort($para); } else { $para = $this->sortNotifyPara($para); } //file_put_contents("./alipaylog/getSignVeryfy_para2_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para,true)); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para); //file_put_contents("./alipaylog/getSignVeryfy_prestr_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($prestr,true)); //echo $prestr; $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case "RSA": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; case "0001": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; default: $isSgin = false; } return $isSgin; }
public function actionChargeOrder() { // 检查参数 if (!isset($_REQUEST['uid']) || !isset($_REQUEST['pay_type']) || !isset($_REQUEST['token']) || !isset($_REQUEST['goods_id']) || !isset($_REQUEST['pay_type']) || !isset($_REQUEST['payment_type'])) { $this->_return('MSG_ERR_LESS_PARAM'); } $uid = Yii::app()->request->getParam('uid'); $token = trim(Yii::app()->request->getParam('token')); $pay_type = trim(Yii::app()->request->getParam('pay_type')); $app_id = trim(Yii::app()->request->getParam('app_id')); $payment_type = trim(Yii::app()->request->getParam('payment_type', 1)); $goods_id = Yii::app()->request->getParam('goods_id'); if (!Token::model()->verifyToken($uid, $token, $GLOBALS['__APPID'])) { $this->_return('MSG_ERR_TOKEN'); } if (!User::model()->isSetPassword($uid)) { $this->_return('MSG_ERR_UNSET_PASSWORD'); } $goods_info = Common::model()->getGoodsInfo($goods_id); if (!is_array($goods_info)) { $this->_return('MSG_ERR_FAIL_PARAM'); } // 支付订单创建 $out_trade_no = Pay::model()->createOrder($uid, $goods_info, $GLOBALS['__APPID'], $pay_type, $GLOBALS['__CHANNEL'], $GLOBALS['__PLATFORM']); if ($out_trade_no < 0) { $this->_return('MSG_ERR_UNKOWN'); } // 记录Log Log::model()->_pay_log($uid, 'CREATE_ORDER', date('Y-m-d H:i:s'), $out_trade_no); $data['out_trade_no'] = $out_trade_no; $config_arr = Yii::app()->params['alipay_config']; //支付宝充值返回支付宝前段签名 Yii::import('application.extensions.alipay.*'); require_once 'lib/alipay_notify.class.php'; $alipayNotify = new AlipayNotify($config_arr); $price = $goods_info['price'] / 100; $subject = $goods_info['name']; $body = $goods_info['name'] . ", 你值得拥有"; $price = '"' . $price . '"'; $subject = '"' . $subject . '"'; $body = '"' . $body . '"'; if ($app_id) { $app_id = '"' . $app_id . '"'; } /* if($extern_token){ $extern_token = '"'.$extern_token.'"'; } */ /* if($appenv){ $appenv = '"'.$appenv.'"'; } */ if ($payment_type) { $payment_type = '"' . $payment_type . '"'; } /* if($it_b_pay){ $it_b_pay = '"'.$it_b_pay.'"'; } */ /* if($show_url){ $show_url = '"'.urlencode($show_url).'"'; } */ $service = '"mobile.securitypay.pay"'; $partner = '"' . Yii::app()->params['partner'] . '"'; $charset = '"utf-8"'; $notify_url = '"' . urlencode(Yii::app()->params['notifyUrl']) . '"'; $out_trade_no = '"' . $out_trade_no . '"'; $seller_id = '"' . Yii::app()->params['partner'] . '"'; $sign_date = array('seller_id' => $seller_id, 'total_fee' => $price, 'service' => $service, 'partner' => $partner, '_input_charset' => $charset, 'notify_url' => $notify_url, 'out_trade_no' => $out_trade_no, 'subject' => $subject, 'app_id' => $app_id, 'payment_type' => $payment_type, 'body' => $body); $sign_date = paraFilter($sign_date); $sign_date = createLinkstring($sign_date); $private_key_url = '../extensions/alipay/' . $alipayNotify->alipay_config['private_key_path']; $data['sign'] = rsaSign($sign_date, $private_key_url); $data['url'] = $sign_date; $data['notifyUrl'] = Yii::app()->params['notifyUrl']; // 发送返回值 $this->_return('MSG_SUCCESS', $data); }
/** * 拼接保留域 * @param req 请求要素 * @return 保留域 */ static function buildReserved($req) { $prestr = "{" . createLinkstring($req, true, true) . "}"; return $prestr; }
function buildRequestMysign($para_sort, $md5) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $mysign = md5Sign($prestr, $md5); return $mysign; }