javascript - 微信支付:H5调起支付API,直接说支付失败

查看:286
本文介绍了javascript - 微信支付:H5调起支付API,直接说支付失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

  1. 我在使用java开发微信的公众号支付功能,使用的是公众号内部支付功能

第一步,统一下单接口已经调通,可以获取prepay_id(下面会有代码贴出),可是在通过JS调起支付的API的时候,直接返回的就是失败,页面有调用微信支付的窗口闪动一下,其实根本没调起来支付控件,也不知道哪里出了问题,只能在手机上调用查看,也无法进行跟踪调查,alert出来的数据直接就是失败,具体的JS代码如下

function onBridgeReady(){
    
    var param = {};
    param.openid = openid;
    param.orderAmount = 11;
    param.stageid = 2007;
    
    console.log(param);
    
    //通过下面接口获取统一下单接口参数
    var url = puburl + "/wxpay/createOrderinfo";
    var data = ajaxUtil.ajaxJson(url, JSON.stringify(param));
    console.log(data);
    if(data.code != 0) {
        console.log(data);
        return false;
    }
    
    var result = data.data;
    alert(JSON.stringify(result));
    
    //上面接口已经获取接口需要的数据,
    //根据微信官方提供的demo就是通过下面方式进行参数赋值
    WeixinJSBridge.invoke(
       'getBrandWCPayRequest', {
           "appId":result.appId,
           "timeStamp":result.timeStamp,
           "nonceStr":result.nonceStr,
           "package":result.prepay_id,     
           "signType":result.signType,     
           "paySign":result.paySign
        }, function(res){
               
               //可是程序走到这一步
               //打印出 res.err_msg的结果直接就是:get_brand_wcpay_request:fail
               //只能在手机上调试,无法查看具体错误原因
               alert(res.err_msg);
            // 使用以上方式判断前端返回,
            //微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,
            //但并不保证它绝对可靠。
            if(res.err_msg == "get_brand_wcpay_request:ok" ) {
                alert("支付成功!")
            } else if(res.err_msg == "get_brand_wcpay_request:cancel") {
                alert("支付取消!");
            } else if(res.err_msg == "get_brand_wcpay_request:fail") {
                alert("支付失败!");
            }
        }
    );
}

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();
}

希望各位大神看看有什么问题,具体如果那里没有描述清楚,请指出来我给解释或者贴代码

补充:配置的支付授权目录和支付页面的路径是一直的,这个是经过仔细确认一直的,没有任何问题!

解决方案

各位大佬,弄出来了,不好意思,忘记上来关闭问题了。
是加密不一致的问题
我在java中使用加密的时候,参数传递的竟然是prepay_id,实际必须使用package当参数的key的,所以导致跟微信的加密结果不一致,微信也是大坑,竟然使用package这样一个关键字。

这篇关于javascript - 微信支付:H5调起支付API,直接说支付失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆