微信支付完成后执行回调DEMO

集成支付并不是一件多难的事情,难的是支付流程,

本文就当做我们已经有了一个完整支付流程的网站,只剩下集成微信支付了。

能够正常支付并不是微信支付的终点,因为我们还要执行回调

当我们支付成功之后微信会向我们指定的回调方法发送请求,这个请求的路径我们已经在上面的代码块中指定

$input->SetNotify_url("http://www.\*\*\*\*.com/index.php/index/Order/notify");

具体回调方法如下:

//微信回调
    public function notify()
    {
        $data=$GLOBALS['HTTP_RAW_POST_DATA'];
        $result=xmlToArray($data);
        $outTradeTo = $result['out_trade_no'];
        if($result['return_code'] == 'FAIL'){
            $failResult="
                <xml>
                    <return_code><![CDATA[FAIL]]></return_code>
                    <return_msg><![CDATA[OK]]></return_msg>
                </xml>
            ";
            echo $failResult;
            exit;
        }else{
            if($result['result_code'] == 'FAIL'){
 
            }else{
                 db('order')->where(array('out_trade_no'=>$outTradeTo))->update(['pay_status'=>1]);
            }
        }
 
        $failResult="
                <xml>
                    <return_code><![CDATA[FAIL]]></return_code>
                    <return_msg><![CDATA[OK]]></return_msg>
                </xml>
            ";
            echo $failResult;
            exit;
 
    }

回调方法的目的就接到微信的通知后告诉微信我们知道处理结果了。
这里还没完

再有最后一步就是支付成功或者失败的时候,我们要动态的提示给扫码的用户,这个一般的做法就是ajax异步访问,查询微信订单,但是我在做这个的时候总是才坑,所以就自己写了一个方法,ajax怎么异步访问我想没有必要贴出代码了吧,我们已经做过太多次,

贴出我自己改的查询订单状态的代码

//查询订单
    public function orderQuery(){
        $out_trade_no=input('out_trade_no');
        $orders=db('order')->where(array('out_trade_no'=>$out_trade_no))->find();
        if($orders['pay_status']==1){
            return 'SUCCESS';
        }else{
            return 'ERROR';
        }
    }

ajax得到返回的结果为success就提示支付成功,error就提示失败。至此就完成了微信支付。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容