ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串 stringA。 第二步,在stringA最后拼接上key得到stringSign字符串,并对stringSign进行MD5运算,再将得到的字符串所有字符转换为大写。 **交易提交时签名Demo( php代码示例,其它编程语言仅做参考 )** ```php <?php $ArrayField = [ 'version' => '1.0.0', 'memberid' => '10001', 'orderid' => "1000120200202202020", 'amount' => '100', 'orderdatetime' => "", 'notifyurl' => 'http://xxx.xxx.com/notifyurl.php', 'paytype' => 'WXGZH', 'signmethod' => 'md5', ]; ksort($ArrayField); //按照参数名ASCII码从小到大排序 $md5key = '2JXQBG13TAUNKRYVME'; //md5密钥 $stringA = ""; foreach($ArrayField as $key => $value){ $stringA .= $key."=".$value."&"; } $stringA = substr($stringA,0,-1); //去掉最后一个 & 字符 $ArrayField["sign"] = strtoupper(md5($stringA.$md5key)); //拼接密钥后,md5加密后转为大写 ?> ``` **交易回调时签名Demo( php代码示例,其它编程语言仅做参考 )** > 回调里的所有参数,只要存在,不论值是否为空都要参与签名 ```php <?php $ArrayField = $_POST; $sign = $ArrayField["sign"]; unset($ArrayField["sign"]); $md5key = '2JXQBG13TAUNKRYVME'; //密钥 ksort($ArrayField); //按照参数名ASCII码从小到大排序 $stringA = ""; foreach($ArrayField as $key => $value){ $stringA .= $key."=".$value."&"; } $stringA = substr($stringA,0,-1); //去掉最后一个 & 字符 $signValue = strtoupper(md5($stringA.$md5key)); //拼接密钥后,md5加密后转为大写 ?> ``` **查询提交时签名Demo( php代码示例,其它编程语言仅做参考 )** ```php $ArrayField = [ 'version' => '1.0.0', //固定值 'memberid' => '10001', //商户编号 'orderid' => "2020022637021582687627", //要查询的订单号 'notifyurl' => 'http://xxx.xxx.com/notifyurl.php', 'signmethod' => 'md5', //加密方式 固定值 ]; ksort($ArrayField); //按照参数名ASCII码从小到大排序 $md5key = '2JXQBG13TAUNKRYVME'; //md5密钥 $stringA = ""; foreach($ArrayField as $key => $value){ $stringA .= $key."=".$value."&"; } $stringA = substr($stringA,0,-1); //去掉最后一个 & 字符 $ArrayField["sign"] = strtoupper(md5($stringA.$md5key)); //拼接密钥后,md5加密后转为大写 ``` **查询响应/回调时签名Demo( php代码示例,其它编程语言仅做参考 )** > 回调里的所有参数,只要存在,不论值是否为空都要参与签名 ```php <?php $ArrayField = $_POST; //查询回调时获取回调参数 // $json = 响应回的JSON字符串 ; // $ArrayField = json_decode($json,true) //查询响应时获取回调参数, json字符串转换为数组 $sign = $ArrayField["sign"]; unset($ArrayField["sign"]); $md5key = '2JXQBG13TAUNKRYVME'; //密钥 ksort($ArrayField); //按照参数名ASCII码从小到大排序 $stringA = ""; foreach($ArrayField as $key => $value){ $stringA .= $key."=".$value."&"; } $stringA = substr($stringA,0,-1); //去掉最后一个 & 字符 $signValue = strtoupper(md5($stringA.$md5key)); //拼接密钥后,md5加密后转为大写 ?> ```