thinkphp 3.2 微信支付 返回结果get_brand_wcpay_request:fail

浏览:3740 发布日期:2016/11/12 分类:求助交流 关键字: thinkphp3.2微信支付 get_brand_wcpay_request:fail
假如域名为:www.wcc.com 服务器是CentOS 7.2 项目在html/nihao中,域名指向直接指向nihao下;
thinkphp 中 Home/OrderController/order为微信支付方法;
微信端支付配置对应下面的三个图:



1.JS接口安全域名:www.wcc.com
2.支付授权目录为:www.wcc.com/index.php/Home/Order/order
3.网页授权域名为:www.wcc.com

微信支付配置:

OrderController/order方法如下://使用jsapi接口
            $jsApi = new \JsApi_pub();

            //=========步骤1:网页授权获取用户openid============
            //通过code获得openid
            
            if (!isset($_GET['code'])){
                //触发微信返回code码
                $urlsss = \WxPayConf_pub::JS_API_CALL_URL;
                $rUrl=urlencode($urlsss.'/id/'.$_GET[id]);
                /*注意一下这个 id 是为了可以成功的传个 id值才这样写  如果你不需要的话也可以直接写成
                 $rUrl=urlencode(C('WxConfig.JS_API_CALL_URL'));
            
                 $this->redirect('WxJsAPI/jsApiCall',array('id' =>55),0, '页面跳转中...');
                 我是这样穿这个id过来的值得你们也可以自己改成其他的来传这个id 或是删除他不要
                */
                $url = $jsApi->createOauthUrlForCode($rUrl);
            
                Header("Location: $url");
            }else{
                //获取code码,以获取openid
                $code = $_GET['code'];
                $jsApi->setCode($code);
                $openid = $jsApi->getOpenId();//openid  这里是为了获取用户当前的openid 如果你有做微信登陆的话就可以无视他。
            }
            
            //=========步骤2:使用统一支付接口,获取prepay_id============
            //使用统一支付接口

            $jsApi = new \JsApi_pub();
            $unifiedOrder = new \UnifiedOrder_pub();
            
            //此处做数据库的查询  这里操作数据库把产品信息显示出来
            
            //此处做数据库的查询  这里操作数据库把产品信息显示出来
            
            
            //设置统一支付接口参数
            //设置必填参数
            //appid已填,商户无需重复填写
            //mch_id已填,商户无需重复填写
            //noncestr已填,商户无需重复填写
            //spbill_create_ip已填,商户无需重复填写
            //sign已填,商户无需重复填写
            //
               $NOTIFY_URL="www.wcc.com/index.php/Home/WxJsAPI/notify";
            
            $unifiedOrder->setParameter("openid",$openid);//openid
            $unifiedOrder->setParameter("body",'青岛大虾');//商品描述
            $unifiedOrder->setParameter("out_trade_no",'123456789');//商户订单号
            $unifiedOrder->setParameter("total_fee",0.01*100);//总金额 微信的钱1*100等于1
            $unifiedOrder->setParameter("notify_url",$NOTIFY_URL);//通知地址
             
            
            $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
            //非必填参数,商户可根据实际情况选填
            //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号
            //$unifiedOrder->setParameter("device_info","XXXX");//设备号
            //$unifiedOrder->setParameter("attach","XXXX");//附加数据
            //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
            //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间
            //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记
            //$unifiedOrder->setParameter("openid","XXXX");//用户标识
            //$unifiedOrder->setParameter("product_id","XXXX");//商品ID
             
            
            $prepay_id = $unifiedOrder->getPrepayId();

            // echo $prepay_id;exit();
            //=========步骤3:使用jsapi调起支付============
            $jsApi->setPrepayId($prepay_id);
            
            $jsApiParameters = $jsApi->getParameters();
            
            $WEB_HOST='www.wcc.com';//填写的话 如 http://nicaicai.imwork.net 最后面不用加 /
            $this->assign('HOSTS',$WEB_HOST);
            
            $this->assign('jsApiParameters',$jsApiParameters);
            

            dump($jsApiParameters);exit;
dump打印出来的数据经过整理如下:
"appId":"wx4***************2b4",
"timeStamp":"147********",
"nonceStr":"u8wtg******************9tlvu9z8",
"package":"prepay_id=wx20161111111111**********",
"signType":"MD5",
"paySign":"5AA03B1******************E06A2B35"

微信支付js 调用如下:function jsApiCall() {
    var jsapi = '{$jsApiParameters}';
    WeixinJSBridge.invoke(
        'getBrandWCPayRequest',
        jsapi,
        function(res) {
            WeixinJSBridge.log(res.err_msg);
            alert(res.err_msg);
            if (res.err_msg == "get_brand_wcpay_request:ok") {
                alert("支付成功");
                window.location.href = '__URL__/success_pay?id={$order_no}';
            } else {
                alert("支付失败");
                window.location.href = '__APP__/';
            }
        }
    );
}
function callpay() {
    if (typeof WeixinJSBridge == "undefined") {
        if (document.addEventListener) {
            document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
        } else if (document.attachEvent) {
            document.attachEvent('WeixinJSBridgeReady', jsApiCall);
            document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
        }
    } else {
        jsApiCall();
    }
}
    </script>
最后点击支付的时候返回get_brand_wcpay_request:fail
请问大神们,我的错在什么地方啊???我找了好久都没有发现错在什么地方。。是不是我微信支付配置错了。。我在网上找了好久,上面大家都是这么配置的。请求帮助。
最佳答案
评论( 相关
后面还有条评论,点击查看>>