基于PHP的微信支付教程 互动版

在JavaScript处理支付结果

在发起支付请求后,我们需要如果可以通过下面两种方式来判断是否支付成功。第一种是在JavaScript回调函数中处理。

jsapi.php文件的下面有几个JavaScript函数,他们分别是jsApiCall(),callpay(),editAddress()

editAddress()的功能是获取用户的位置信息,具体表现是,当用户进入支付页面,如果调用这个函数,那么就会调起选择地址的界面,等用户选择完成后,才返回进入下一步,对于它,我们默认即可

//获取用户地址
    function editAddress()
    {
        WeixinJSBridge.invoke(
            'editAddress',
            <?php echo $editAddress; ?>,
            function(res)
            {
                var value1 = res.proviceFirstStageName;
                var value2 = res.addressCitySecondStageName;
                var value3 = res.addressCountiesThirdStageName;
                var value4 = res.addressDetailInfo;
                var tel = res.telNumber;
                alert(value1 + value2 + value3 + value4 + ":" + tel);
            }
        );
    }

callpay()的功能是在确保WeixinJSBridge对象存在的情况下再进入jsApiCall()函数,此时把支付接口返回的数据进行解析并回调支付结果,在这里我们就能大致判断下用户支付是否成功,为什么是大致判断呢,因为微信团队告知了我们,在这里处理支付结果不可靠!切记。

调起支付官网文档

//调用微信JS api 支付
function jsApiCall()
{
    WeixinJSBridge.invoke(
        'getBrandWCPayRequest',
        <?php echo $jsApiParameters; ?>,
        function(res){
            WeixinJSBridge.log(res.err_msg);
            alert(res.err_code+res.err_desc+res.err_msg);
            // 使用以上方式判断前端返回,微信团队郑重提示:
            // res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
            if(res.err_msg == "get_brand_wcpay_request:ok" ) {
                // 支付成功
            }else if((res.err_msg =="get_brand_wcpay_request:fail"){
                // 支付失败
            }else if((res.err_msg =="get_brand_wcpay_request:cancel"){
                // 支付过程中用户取消
            }
        }
    );
}

结合我们前面讲到过的课程,在支付回调时能否结合 某个 查询来确保订单支付成功呢?