微信JSAPI支付提示“调用支付JSAPI缺少参数:total_fee”

 

1、问题分析

首先核实需要的参数是否有值,其次核实JSAPI唤起支付方法的参数类型是否有效(经试验这个问题会导致多个错误,比如:(1)调用支付JSAPI缺少参数:timeStamp;(2)商户传入的appid参数不正确,请联系商户处理),怀疑苹果手机的微信内置浏览器有转义,比如:package=rs.data.package;实际上传给唤起支付JS的参数类型是int,也就是说我们赋值的时候需要加上 '',将int转string类型,代码如下:

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回调函数赋值的时候加上 ( ""+ );

2、唤起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();
}

3、微信支付-QA文档

https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/faq/chapter2_15.shtml?index=2#menu11

posted @ 2021-11-22 23:11  七月的枫丶  阅读(6579)  评论(0编辑  收藏  举报