小程序
小游戏
企业微信
微信支付
扫描小程序码分享
微信支付异步通知,返回的是数据流,将其转换成map,当做参数,WXPayUtil.isSignatureValid用该方法验证签名,失败,请问可能是什么原因,另外,支付使用什么方式加密签名,返回也是什么方式加密签名是吗?
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
去掉返回的sign,其余的参数来算出签名 与 微信的sign作对比
文档里根本没有提 只能猜
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
使用非沙箱环境时,支付OK,异步回调提示眼前失败,这与默认的签名方式有关,请求统一下单是非沙箱模式,但是使用的 “HMACSHA256”加密方式;而异步回调的时候没有“sign_type”字段,默认使用MD5加密方式,因此验证签名失败,这里把非沙箱改为MD5就可以了。我这边用的是java代码,修改下com.github.wxpay.sdk.WXPay的java类中非沙箱模式为默认的MD5就可以了。支付文档好久了,也不更新,坑了一个个支付对接的人,这里给说明下,帮助大家躲过坑。
if (useSandbox) { this.signType = SignType.MD5; // 沙箱环境 } else { this.signType = SignType.HMACSHA256; }
这个确实是个问题,下单时是HMAC-SHA25,但是,异步通知返回结果时是MD5
1、在统一下单unifiedorder接口中,确认下配置的notify_url,找到程序的代码2、修改代码增加签名验证:取支付通知中的参数和自己的密钥算出签名,用这个签名和支付通知中参数的签名做比较,如果完全一样,则验证通过,否则验证不通过。算签名的方法:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_33.签名校验工具:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
去掉返回的sign,其余的参数来算出签名 与 微信的sign作对比
文档里根本没有提 只能猜
使用非沙箱环境时,支付OK,异步回调提示眼前失败,这与默认的签名方式有关,请求统一下单是非沙箱模式,但是使用的 “HMACSHA256”加密方式;而异步回调的时候没有“sign_type”字段,默认使用MD5加密方式,因此验证签名失败,这里把非沙箱改为MD5就可以了。我这边用的是java代码,修改下com.github.wxpay.sdk.WXPay的java类中非沙箱模式为默认的MD5就可以了。支付文档好久了,也不更新,坑了一个个支付对接的人,这里给说明下,帮助大家躲过坑。
if (useSandbox) { this.signType = SignType.MD5; // 沙箱环境 } else { this.signType = SignType.HMACSHA256; }
这个确实是个问题,下单时是HMAC-SHA25,但是,异步通知返回结果时是MD5
1、在统一下单unifiedorder接口中,确认下配置的notify_url,找到程序的代码
2、修改代码增加签名验证:取支付通知中的参数和自己的密钥算出签名,用这个签名和支付通知中参数的签名做比较,如果完全一样,则验证通过,否则验证不通过。
算签名的方法:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
3.签名校验工具:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1