java微信公众号 js调用微信支付报错 errMsg:chooseWXPay:fail

fire_in_java 2015-08-29 04:06:13
下面是我的js,不清楚到底是什么原因导致的,各位大神帮忙给解决下吧;具体报错:config签名啥的是OK的,但是在调用chooseWXPay的时候,就失败了 报错errMsg:chooseWXPay:fail 没有别的提示信息,不清楚失败原因
$('#pay_sub_btn').on(touchType, function(){
var _this = $(this);
var payType = $('#pay_type').val();
var orderId = $('#J_payOrder_id').val();
var orderSn = $('#J_payOrder_sn').val();
var payFee = $('#J_payOrder_card_no').val();
var fieldLabel = $('#fieldLabel').val();
var date = $('#date').val();
var orderTimes = $('#orderTimes').val();
var gymName = $('#gymName').val();
var path = $('#basePath').val();
hideError();
lock = true;
_this.text('支付中...');
if(payType == 13){
//支付宝支付

}else{
$.ajax({
url:path+"/orders/OrdersPayForWx.do?orderId="+orderId
}).done(function(data){
var obj = eval('(' + data + ')');
if(parseInt(obj.agent)<5 && obj.agent != "false"){
alert("您的微信版本低于5.0无法使用微信支付,请升级之后再操作!~");
return;
}else if(obj.agent == "false"){
alert("请使用微信浏览器操作!~");
return;
}
if(obj.code == "0"){
alert("登陆已经过期,请重新登录!~");
window.location.href = path+'/login.jsp';
}
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: obj.appId, // 必填,公众号的唯一标识
timestamp: obj.contime, // 必填,生成签名的时间戳
nonceStr: obj.constr, // 必填,生成签名的随机串
signature: obj.consign,// 必填,签名,见附录1
jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function(){
wx.chooseWXPay({
"timestamp": obj.paytime, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
"nonceStr": obj.paystr, // 支付签名随机串,不长于 32 位
"package": obj.paypack, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
"signType": obj.paysigntype, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
"paySign": obj.paysign, // 支付签名
success: function (res) {
// 支付成功后的回调函数
alert(res.err_msg);
_this.text('支付');
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
_this.text('支付');
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
window.location.href = path + '/orders/GetOrders.do?page=1&pageSize=10&orderStatus=0';
}else{
alert(res.errMsg);
alert(res.err_msg);
_this.text('支付');
return false;
}
}
});
});
wx.error(function(res){
alert(res.err_msg);
_this.text('支付');
return false;
});
});
}
});
...全文
35700 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24193915 2019-01-15
  • 打赏
  • 举报
回复
刚刚遇到这个问题,刚好解决,说下可能性,及解决办法: 1.签名问题,排查timestamp,nonceStr请注意大小写,MD5填写大写,在前端调用的时候,打包签名必须有序prepay_id,在微信统一下单后返回,必须要有。或者去微信校验你签名是否正确。 2.支付授权目录必须与你的当前使用的url一致。www.xxx.com/pay是当前支付页面,则支付授权也要写www.xxx.com/pay/ 必须有备案的地址,可用内网穿透。 3.必须要在真机上测试,工具不支持支付测试。在工具测试不管配置是否成功,会报chooseWXPay:fail
qq_24193915 2019-01-15
  • 打赏
  • 举报
回复
刚刚遇到这个问题,刚好解决,说下可能性,及解决办法
潇潇暮雨_ 2017-06-12
  • 打赏
  • 举报
回复
1. 确保配置的支付授权目录是发起支付页面所在URL的最后一级目录 比如商品支付页面链接为 http://www.XXX.com.cn/pay/payorder/a.html 需要配置为 www.XXX.com.cn/pay/payorder/ 2. 确保 chooseWXPay 的签名参数,实际上是这样的: appId=%s&nonceStr=%s&package=%s&signType=%s×tamp=%s&key=%s 不要忘记这个 key !! 参考: http://www.cnblogs.com/imluzhi/p/4836216.html http://www.cnblogs.com/xueranzp/p/5287691.html
jtxmagic 2016-12-20
  • 打赏
  • 举报
回复
我们的三个支付目录满了 现在想的办法的是将人家的支付页面映射到我们页面 让我们的页面能够发起支付 但是一直报 choosewxpay fail 万分急 快上线了 求解答
fire_in_java 2016-11-03
  • 打赏
  • 举报
回复
不好意思,忘了回复大家,问题解决了,具体怎么解决的忘了. 这个最好用iphone手机进行调试,苹果手机对错误的提示是很友好的,一下就能看出具体错误了
任忠锋 2016-10-20
  • 打赏
  • 举报
回复
我就是因为支付目录不是设置到了最底层,才报的错,所以一定要检查一下支付目录,微信公众号-微信支付-开发配置,进行一下设置
kobeonline 2016-06-29
  • 打赏
  • 举报
回复
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"; 第二步:拼接API密钥: stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d" sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" 亲~~注意第二步要把key拼上哦
qq_33737687 2016-05-22
  • 打赏
  • 举报
回复
你好,你能贴一下你的MD5里正确的string吗?我一直报这个错
石野 2016-05-11
  • 打赏
  • 举报
回复
搞了一天,也是一直报这个错误errMsg:chooseWXPay:fail ,总算解决了。 1. 签名时候字段是驼峰的,一定要注意大小写 2. md5签名后一定要转换成大写 3. 报这个错基本就是签名问题了,仔细找签名哪里出错吧!!! 总结,微信的文档实在有点恶心!!!隔音的不行
qq_31645197 2015-12-03
  • 打赏
  • 举报
回复
楼上的步骤很是标准,顶一个。 今天搞这个支付,查了半天时间,哪个环节都没问题,愣是一直弹出chooseWXPay:fail, 后来切换了一下公众号,一切正常了, 原因太坑了,我用订阅号的测试号,通过服务号作支付,怎么着都正常不了, 后来改用订阅号的正式号,正常了。
lnkToKing 2015-11-16
  • 打赏
  • 举报
回复
我也来踩一下微信的狗P文档,狗P文档狗P文档狗P文档,重要的事情说3次。 折腾了一了一天,终于把这个狗P支付弄成功了 我主要遇到两个问题,给大家参考一下: 1.生成签名的时间戳参数名timestamp的s大小写问题 js参数是小写的timestamp

wx.chooseWXPay({
    timestamp: "1234567890",
    ....
}
});
生成签名时是大写的timeStamp paySign=MD5("timeStamp=1234567890&...").toUpperCase(); 2.微信支付授权目录设置 注意这里所指的是目录,所以一定要以左斜杠“/”结尾,不是设置支付的url网址 例如设置的是:http://www.newfms.com/order/pay/ 那么真正支付url是 http://www.newfms.com/order/pay/ http://www.newfms.com/order/pay/1 如果是这样的支付url就会报错:http://www.newfms.com/order/pay
m652917605 2015-11-02
  • 打赏
  • 举报
回复
哎,我也是,这狗B的文档!
wangxinchao66 2015-10-15
  • 打赏
  • 举报
回复
大哥,解决了没有呢?我现在也是java在这儿遇到问题了,求帮助!
t00 2015-09-30
  • 打赏
  • 举报
回复
我也遇到这个问题,你解决了么
jlcbj_cn 2015-09-14
  • 打赏
  • 举报
回复
微信这垃 圾,文档弄成狗屎样,出了问题都没头绪。
luangel 2015-09-07
  • 打赏
  • 举报
回复
大哥,解决了没.
Mr_Zhang_ZD 2015-09-06
  • 打赏
  • 举报
回复
我也是同样问题,有解决吗?

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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