微信点金计划 服务商校验 check_code MD5不一致
我们在微信 上提交了 1:特约商户号(sub_mch_id),2:商户订单号(out_trade_no),3:微信订单号”(transaction_id) 还有商家小票地址,提交后微信回调了商家的小票地址,在小票地址里得到的微信给的check_code值为啥和我自己做的md5值不一样?
下面附上开发文档的说明:
1) 通过商家小票链接获取用户订单信息:
点金计划页面打开时,页面上方的 iframe 框架会请求服务商填写的商家小票链接,会在链接后附 上:“特约商户号(sub_mch_id)”、“商户订单号(out_trade_no)”、“md5 校验码 (check_code)”三个字段的信息,方便服务商快速定位到具体订单的同时,也保证链接的可靠 性。
a) 增加参数后的链接格式为: 服务商链接?sub_mch_id=特约商户号&out_trade_no=商户订单号&check_code=
b) 举例:
若服务商配置的链接为 https://www.qq.com,特约商户号为 1234567,商户订单号为 ABCDEFG,则请求的链接为 https://www.qq.com?sub_mch_id=1234567&out_trade_no=ABCDEFG&check_code= 39f0876dd58e4eb61b66250f69d02705
2) 服务商校验 check_code 服务商获取到上述完整链接时,为了保证参数没有被篡改,需要做 MD5 校验。
a) 校验方式
通过链接上的“商户订单号”,到后台获取该订单对应的“微信订单号”,即 transaction_id, 并拼在原有链接后(需去除 check_code,即:服务商链接?sub_mch_id=特约商户号 &out_trade_no=商户订单号&transaction_id=),进行 MD5 计算。
b) 举例
若 transaction_id 为 abcdefg,则 MD5 值为:
String my_check_code = MD5(“https://www.qq.com?sub_mch_id=1234567&out_trade_no=ABCDEFG&transactio n_id=abcdefg”);
若 my_check_code 与最初链接参数中的 check_code 相等,说明该链接未被篡改,可正常跳转 到商家小票内容,否则服务商需展示错误提示页。
排了一下午,这6个人卡了1-2小时