企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则: ◆ 参数名ASCII码从小到大排序(字典序); ◆ 如果参数的值为空不参与签名; ◆ 参数名区分大小写; ◆ 验证调用返回或建业支付平台主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 ◆ 文中涉及md5均为小写32位,sign=md5(key),比如:md5(jyzz2019) 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算(结果是小写),得到sign值signValue。 ◆ key获取路径:测试数据请参考[测试账户](https://www.kancloud.cn/zzkpay/jyzzpay/1036054),生产数据请联系业务人员获取。 举例: 假设传送的业务参数如下: ``` appId: ea5d5a258f mchId: 1111 orderAmount: 1000 body: test nonceStr: ibuaiVcKdpRxkhJA ``` 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: ``` stringA="appId=ea5d5a258f&body=test&mchId=10000100&nonceStr=ibuaiVcKdpRxkhJA&orderAmount=1000"; ``` 第二步:拼接API密钥,获取sign: ``` stringSignTemp=stringA+"&key=md5(key)"//注:key为支付平台分发的密钥key sign=md5(stringSignTemp)="96e79218965eb72c92a549dd5a330112"//注:md5签名方式 ``` 最终获得JSON字符串: ``` {"appid":"ea5d5a258f","mch_id":10000100,"orderAmount":10000,"nonce_str":"ibuaiVcKdpRxkhJA","sign":"96e79218965eb72c92a549dd5a330112"} ``` 第三步:业务参数JSON加密,获取最终上送数据: 对JSON串进行3des加密,如3des(JSON,desKey) desKey :3des加密所需key ``` {"data":"e3ceb5881a0a1fdaad01296d#m0a1fdaad01296d#m0a1fdaad01296d#m0a1fdaad01296d#mM"} ```