ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 支付接口签名算法文档 ## 签名生成的通用步骤如下: ### 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 ### 特别注意以下重要规则: ~~~ 1.◆ 参数名ASCII码从小到大排序(字典序); 2.◆ 如果参数的值为空不参与签名; 3.◆ 参数名区分大小写; ~~~ ### 第二步,在stringA最后拼接上 \*\*商户密钥 \*\*得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 ~~~ ◆ **商户密钥 ** 在后台商户配置里面 例子: 假设传送的参数如下 appid:          wxd930ea5d5a258f4f mch_id: 10000100 device_info: 1000 body: test nonce_str: ibuaiVcKdpRxkhJA ~~~ #### 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如 ~~~ $stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"; ~~~ #### 第二步:拼接\*\*商户密钥 \*\*: ~~~ $stringSignTemp = $stringA . "&key=192006250b4c09247ec02edce69f6a2d"; // 拼接商户密钥 $sign = md5($stringSignTemp); // md5加密 ~~~ 最后把加密后的字符串全部转成大写,得到的就是签名串 PHP签名函数 /\*\* * @author LvGang * @Note 生成签名 * @param $data 参与签名的数据 * @return string \*/ public function makeSign($data) { // 去空 $data = array\_filter($data); //签名步骤一:按字典序排序参数 ksort($data); $string\_a = http\_build\_query($data); $string\_a = urldecode($string\_a); //签名步骤二:在string后加入KEY $config = $this->config; $string\_sign\_temp = $string\_a . "&key=" . $config\['KEY'\]; //签名步骤三:MD5加密 $sign = md5($string\_sign\_temp); // 签名步骤四:所有字符转为大写 $result = strtoupper($sign); return $result; }