摘要:
微信公众号网页使用微信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发布,写作不易转载请注明来处