微信支付返回支付签名验证失败

虎虎0369 2016-05-12 09:41:49
微信支付已经能拿到预支付订单了,但是js在调用的时候就一直返回:"get_brand_wcpay_request:fail",
res返回的结果:err_code=2 err_desc="支付签名验证失败",我测试了我的签名和微信提供的签名验证工具结果是一样的
,参数配置也没问题。
搞不懂:求解,


var paySignReqHandler = new RequestHandler(HttpContext);
paySignReqHandler.setParameter("appId", PayConfig.AppId);
paySignReqHandler.setParameter("timeStamp", TimeStamp);
paySignReqHandler.setParameter("nonceStr", NonceStr);
paySignReqHandler.setParameter("package", Package);
paySignReqHandler.setParameter("signType", "MD5");
PaySign = paySignReqHandler.CreateMd5Sign("key", PayConfig.AppKey);

var result = new
{
orderBasic = orderBasic,
WxConfig = new
{
appId = PayConfig.AppId, //公众号名称,由商户传入
timeStamp = TenpayUtil.getTimestamp(), //时间戳
nonceStr = TenpayUtil.getNoncestr(), //随机串
package = Package, //扩展包
paySign = PaySign
}
};

return Success(result);



$.post("/Order/PayOrder?id=@Model.OrderBasic.Id",{},function(data){
if(data.Success)
{
alert(typeof WeixinJSBridge);
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": data.Data.WxConfig.appId, //公众号名称,由商户传入
"timeStamp": data.Data.WxConfig.timeStamp, //时间戳
"nonceStr": data.Data.WxConfig.nonceStr, //随机串
"package": data.Data.WxConfig.package, //扩展包
"signType": "MD5", //微信签名方式:1.sha1
"paySign": data.Data.WxConfig.paySign//微信签名
},
function(res) {

if (res.err_msg == "get_brand_wcpay_request:ok") {
alert("微信支付成功!");
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
alert("用户取消支付!");
} else {
alert(res.err_msg);
alert("支付失败!");
}
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
//因此微信团队建议,当收到ok返回时,向商户后台询问是否收到交易成功的通知,若收到通知,前端展示交易成功的界面;若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前状态,并反馈给前端展示相应的界面。
});
}
});
...全文
14850 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
HomSir0506 2018-01-04
  • 打赏
  • 举报
回复
就是这个原因。WXPay默认用了HMACSHA256,改回MD5就可以了
引用 6 楼 www17374677039 的回复:
终于解决了 ,如果用的微信java的sdk ,默认用的是HMACSHA256编码 ,这个会导致jssdk中支付验证签名失败 ,我被耨捏死了
qq_29439685 2018-01-03
  • 打赏
  • 举报
回复
3楼说的对,,,,,,,,,,,,,,,,,,,,,,,,,
子虚君 2017-08-08
  • 打赏
  • 举报
回复
有可能是后台的问题,注意大小写
sz-hewei 2017-07-15
  • 打赏
  • 举报
回复
终于解决了 ,如果用的微信java的sdk ,默认用的是HMACSHA256编码 ,这个会导致jssdk中支付验证签名失败 ,我被耨捏死了
huobing123456789 2017-07-03
  • 打赏
  • 举报
回复
楼主解决没?
WXG_xiaoyan 2017-02-06
  • 打赏
  • 举报
回复
如果之前没有成功的交互,首先检查程序是否错误 1. 使用微信的在线签名工具检查签名是否和程序生成的一致 https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 选择自定义,然后填入所有参数和密钥 2. 如果和微信的在线签名工具一致,说明程序没有错误,确定是API密钥错误(被别人改动或者记错了) 在商户平台的账户信息中更改API密钥(账户设置-安全设置-API安全), 15分钟后生效 3. 如果和微信的在线签名工具不一致,说明程序有错误,常见的错误可能是: 3.1: 编码问题,确保所有的都是utf-8的. 如果有中文, 可以先把中文改成英文重新签名,看是否签名错误,如果英文不会错中文才会错,基本肯定是编码问题 3.2: 消息中字段大小写和文档中完全一致 3.3: XML中标签不能有空格
PersonSky 2016-12-14
  • 打赏
  • 举报
回复
参数要保证绝对正确 第二次签名的时候
PersonSky 2016-12-13
  • 打赏
  • 举报
回复
楼主解决了吗?
我爱罗lmt 2016-10-17
  • 打赏
  • 举报
回复
楼主解决了吗,我也是这个问题

3,143

社区成员

发帖
与我相关
我的任务
社区描述
微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,通过二次开发可以将公众账号由一个媒体型营销工具转化成提供服务的产品。
社区管理员
  • 微信开发
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧