[坑]微信支付首次支付成功,第二次调用失败

展开阅读全文

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

05-12

微信支付已经能拿到预支付订单了,但是js在调用的时候就一直返回:"get_brand_wcpay_request:fail",rnres返回的结果:err_code=2 err_desc="支付签名验证失败",我测试了我的签名和微信提供的签名验证工具结果是一样的rn,参数配置也没问题。rn搞不懂:求解,rn[code=csharp]rn rn var paySignReqHandler = new RequestHandler(HttpContext);rn paySignReqHandler.setParameter("appId", PayConfig.AppId);rn paySignReqHandler.setParameter("timeStamp", TimeStamp);rn paySignReqHandler.setParameter("nonceStr", NonceStr);rn paySignReqHandler.setParameter("package", Package);rn paySignReqHandler.setParameter("signType", "MD5");rn PaySign = paySignReqHandler.CreateMd5Sign("key", PayConfig.AppKey);rn rn var result = newrn rn orderBasic = orderBasic,rn WxConfig = newrn rn appId = PayConfig.AppId, //公众号名称,由商户传入rn timeStamp = TenpayUtil.getTimestamp(), //时间戳rn nonceStr = TenpayUtil.getNoncestr(), //随机串rn package = Package, //扩展包rn paySign = PaySignrn rn ;rnrn return Success(result);[/code]rnrn[code=javascript]rn$.post("/Order/PayOrder?id=@Model.OrderBasic.Id",,function(data)rn if(data.Success)rn rn alert(typeof WeixinJSBridge);rn WeixinJSBridge.invoke('getBrandWCPayRequest', rn "appId": data.Data.WxConfig.appId, //公众号名称,由商户传入rn "timeStamp": data.Data.WxConfig.timeStamp, //时间戳rn "nonceStr": data.Data.WxConfig.nonceStr, //随机串rn "package": data.Data.WxConfig.package, //扩展包rn "signType": "MD5", //微信签名方式:1.sha1rn "paySign": data.Data.WxConfig.paySign//微信签名rn ,rn function(res) rn rn if (res.err_msg == "get_brand_wcpay_request:ok") rn alert("微信支付成功!");rn else if (res.err_msg == "get_brand_wcpay_request:cancel") rn alert("用户取消支付!");rn else rn alert(res.err_msg);rn alert("支付失败!");rn rn // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。rn //因此微信团队建议,当收到ok返回时,向商户后台询问是否收到交易成功的通知,若收到通知,前端展示交易成功的界面;若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前状态,并反馈给前端展示相应的界面。rn );rn rn );rn[/code] 论坛

微信支付支付验证签名失败!

10-27

php代码结构如下:rnif($msg == "OK")rn $result['appId'] = $this->appid;rn $result["timeStamp"] = time();rn $result["nonceStr"] = md5(time() . mt_rand(0,1000));; rn $result["package"] = "prepay_id=".$postObj->prepay_id;rn $result["signType"] = "MD5";rn rn ksort($result);rn $paySignStr = '';rn foreach ($result as $k=>$v)rn rn $paySignStr .= $k.'='.$v.'&';rn rn $paySignStr = $paySignStr ."key=".$this->apikey;rn rn $result["paySign"] = strtoupper(MD5($paySignStr));rn $this->ajaxReturn(array(rn 'result' => $result,rn 'status' => 1rn ));rn rnrn这个$msg自然是上边统一支付订单得到的数据,也就是说用同样方式的签名统一支付订单是没问题的.rnrnjs代码如下:rnif(data.status==1)rn wx.chooseWXPay(rn timeStamp: data.result.timeStamp, rn nonceStr: data.result.nonceStr, rn package: data.result.package, rn signType: data.result.signType, rn paySign: data.result.paySign, rn rn success: function (res) rn var str = JSON.stringify(res);rn alert(str);rn if(res.errMsg == "chooseWXPay:ok")rn alert("支付成功!");rn elsern alert("支付失败!");rn rn rn ); rn rn这些都是写在ajax回调函数里的rn然后一直返回"errMsg":"chooseWXPay:fail" 支付验证签名失败rn用的是已认证的服务号,检查了目录,测试授权目录写的:www.xxx.com/pay/.我的实际支付目录写的是www.xxx.com/pay/pay/rn也将自己的微信号添加上了白名单.rn参数检查也没有错误,以上签名方式应该也不会错(和统一支付订单一种签名),rn实在检查不出来到底哪里出了问题.求论坛的大神帮个忙. 论坛

没有更多推荐了,返回首页