摘要:
微信公众号网页使用微信jsapi支付... 微信公众号网页使用微信jsapi支付提示缺少total_fee,有很多种原因,总结原因有三
1.后端在预支付下单那块没有传入total_fee,或者下单那块total_fee没有转换成分并且保持正整形数据
2.后端返回预支付交易会话标识prepay_id默认2小时已经失效
3.前端使用js支付宝时候没有正确获取package值。正确的值应该类似于package=prepay_id=up_wx21201855730335ac86f8c43d1889123400
正确的前端书写格式应该为
var appid,timeStamp,nonceStr,package,paySign;
//Ajax获取业务参数
$.get('/wx/pay/jsapi.do',{},function(rs){
appid = ''+rs.data.appid;
package = ''+rs.data.package;
...
//唤起支付function
...
});当然如果定义参数的时候赋初始值,比如:var package="";这样就不需要在ajax回调函数赋值的时候加上 ( ""+ );
唤起JSAPI支付方法
function onBridgeReady() {
WeixinJSBridge.invoke('getBrandWCPayRequest', { "appId": "wx2421b1c4370ec43b", //公众号ID,由商户传入
"timeStamp": "1395712654", //时间戳,自1970年以来的秒数
"nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串
"package": "prepay_id=up_wx21201855730335ac86f8c43d1889123400", "signType": "RSA", //微信签名方式:
"paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名 }, function(res) { if (res.err_msg == "get_brand_wcpay_request:ok") { // 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 }
});
}if (typeof WeixinJSBridge == "undefined") { if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}此篇文章由DurkBlue博客申请发布,转载吧请注明来处 


