💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 签名及验签 (1)请求签名 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对(不进行urlencode转码,原值拼装)的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 特别注意以下重要规则: ◆ 参数名ASCII码从小到大排序(字典序); ◆ 如果参数的值为空不参与签名; ◆ 参数名区分大小写; ◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 第二步,在stringA最后拼接上ticket得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 举例: 假设传送的参数如下: appid: ZF000000000000000001 device_info: 1000 body: test nonce_str: ibuaiVcKdpRxkhJA 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&nonce_str=ibuaiVcKdpRxkhJA"; 第二步:拼接 ticket: stringSignTemp=stringA+"&ticket=123” MD5签名方式 sign= strtoupper (md5 (stringSignTemp)); (2)回调签名 签名规则 与 请求签名规则相同,只是将上述第二步中 拼接 ticket 变为应用appSecret。 举例: 假设传送的参数如下: payTime: 1587878343 amount: 100 buyerId: ajsdfkdshfksdjhfj nonce_str: ibuaiVcKdpRxkhJA 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: stringA="amount=100&buyerId=ajsdfkdshfksdjhfj&nonce_str=ibuaiVcKdpRxkhJA&payTime=1587878343"; 第二步:拼接 商户secret:假设应用appSecret = 2sajhd stringSignTemp=stringA+"&ticket=2sajhd” 注意: 按 key=value 格式,此处ticket使用appScrect的值,而不改变key; MD5签名方式 sign= strtoupper (md5 (stringSignTemp));