qq_28467831 2019-01-15 16:50 采纳率: 100%
浏览 2113
已采纳

手机测试 wx.config 无反应,愿意发微信红包, 求大佬帮忙分析解决

我在微信开发工具测试, wx.config 显示ok ,

wx.chooseWXPay.没有此SDK或暂不支持此SDK模拟

问题出在, 我用手机测试 (ios,android) wx.config无反应, erro和ready均不进入
wx.chooseWXPay也无法用,

我在https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
验证了签名是一毛一样的,

求教大佬, 我这代码是出了啥毛病

<!doctype html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html lang="zh-cn">

    <head>
        <%@include file="/pc/inc/commoncontent.inc"%>
        <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
        <script src="<%=contextPath%>/m/smartHotel/script/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">




        </script>    
        <title>订单-支付</title>
        <span class="disb picNum padTB30"><i class="disib iconPic"  onClick="openPic(this);" >3532rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr张</i></span>
    </head>
<body>
    <script type="text/javascript">

        var appId1,timeStamp1,nonceStr1,packageStr1,signType1,paySign1; 

        $(document).ready(function () {
            $.ajax({
            url : contextPath+ "/weixin/hotelorder/wxPay.action",
            type:"post",
            dataType:'json', //接受数据格式 
            async: false,
            data:{url:window.location.href.split('#')[0].replace(/\&/g,"%26")},//传参,建议使用json
                //1:手机号, 2:房间数.3单价4总价 5: 当前bedid 6 :入住人 姓名 7 发票8 入住日离开日
            error:function(data){//请求失败时处理
                 // alert(data);
                window.location.href = '<%=contextPath%>/m/smartHotel/html/yysb.html'/*预订失败页*/
            },
            success:function(data)
            {

                if( data)
                    {
                        appId1 = data.pay.appId;
                        timeStamp1 = data.pay.timeStamp;
                        nonceStr1 = data.pay.nonceStr;
                        packageStr1 = data.pay.package;
                        signType1 = data.pay.signType;
                        paySign1 = data.pay.paySign;

                    }

                wx.config({
                            debug:false,             // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                            appId:data.pay.appId,   // 必填,公众号的唯一标识
                            timestamp:data.config.timestamp, // 必填,生成签名的时间戳
                          nonceStr:data.config.noncestr, // 必填,生成签名的随机串
                            signature:data.config.configSign, // 必填,签名,见附录1
                            jsApiList:['chooseWXPay','closeWindow']
                        });
                    wx.error(function(res){
                    alert("error enter");

                    });
                    wx.ready(function(){
                        alert("ready enter");

                    pay();

                });
            //onBridgeReady();
             // alert("success inter");

        }
    });
    });
    function pay()  { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

    console.log(appId1 +" / "+ timeStamp1+" / " + nonceStr1+" / "+packageStr1 +" / "+ signType1+" / "+paySign1);
        wx.chooseWXPay({

            timestamp:timeStamp1, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
            nonceStr:nonceStr1, // 支付签名随机串,不长于 32 位
            package:packageStr1,  // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
            signType:signType1, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
            paySign:paySign1, // 支付签名
            success:function(res) {
                alert("8888888888888");
                alert(res);
                alert(res.errMsg);
                console.log(res.errMsg);
                // 支付成功后的回调函数
                if (res.errMsg == "chooseWXPay:ok") {
                    //支付成功
                    alert('支付成功');
                } else {
                    alert(res.errMsg);
                }
            }
        });
}  


function onBridgeReady(){
            alert("进入了onbridgeready");
            WeixinJSBridge.log("889");
               WeixinJSBridge.invoke(
                   'getBrandWCPayRequest', {
                       "appId":appId1,     //公众号名称,由商户传入     
                       "timeStamp":timeStamp1,         //时间戳,自1970年以来的秒数     
                       "nonceStr":nonceStr1, //随机串     
                       "package":packageStr1,     
                       "signType":"MD5",         //微信签名方式:     
                       "paySign":paySign1 //微信签名 
                   },
                   function(res){
                     WeixinJSBridge.log(res);
                    alert("进入了success");
                        alert(res.errorMsg);
                    // 使用以下方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 
                        if(res.errMsg == "get_brand_wcpay_request:ok") {
                           alert("支付成功");
                           // window.location.href = "${pageContext.request.contextPath}/wx/success?orderId=${orderId}";
                       }else if(res.errMsg == "get_brand_wcpay_request:fail"){
                            alert('支付失败');
                        }else if(res.errMsg == "get_brand_wcpay_request:cancel"){
                            alert('支付取消');
                        }else{
                            alert(res.errMsg);
                        }
                   }
               ); 
}

function openPic()
{
    pay();
    //wx.closeWindow();
    }

    //调用模拟 回调

//  $.ajax({
//      url : contextPath+ "/weixin/hotelorder/moniWXPay.action",
//      type:"post",
//      dataType:'json', //接受数据格式 
//      async: false,
//      data:{parm1:getQueryString2("orderId")},//传参,建议使用json
//      error:function(data){//请求失败时处理
             // alert(data);
//      },
//      success:function(data)
//      {
//          if(data.result =="success")
//          {
//              window.location.href = '<%=contextPath%>/m/smartHotel/html/yycg.jsp?orderId='+getQueryString2("orderId");
//          }
//          
//      }
//  });   
    function getQueryString2(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg);
        if(r != null) return decodeURI(r[2]);
        return null;
    }
    </script>
</body>
</html>

  • 写回答

2条回答 默认 最新

  • qq_28467831 2019-01-15 17:27
    关注

    求大佬帮忙分析解决!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?