三方网站调用微信扫码支付

第一步获取code_url,第二步生成支付二维码,第三回调函数修改数据

//购买产品展示支付二维码
    public function yijihuiyuan(){
        Loader::import("weixinpay.lib.WxPay", EXTEND_PATH, ".Api.php");
        Loader::import("weixinpay.example.log", EXTEND_PATH, ".php");
        Loader::import("weixinpay.example.WxPay", EXTEND_PATH, ".Config.php");
        $notify=new NativePay();
        //初始化日志
        //$logHandler= new \CLogFileHandler("../logs/".date('Y-m-d').'.log');
       // $logHandler= new \CLogFileHandler(EXTEND_PATH."weixinpay/logs/".date('Y-m-d').'.log');
       // $log = \Log::Init($logHandler, 15);
        $input = new \WxPayUnifiedOrder();
        $input->SetBody("第一次微信扫码支付");
        $input->SetAttach("测试");
        $input->SetOut_trade_no("swdkyj123456789".date("YmdHis"));
        $input->SetTotal_fee("1");
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        $input->SetNotify_url("http://test.gdzhisheng.top/index.php/index/mine/notify.html");
        $input->SetTrade_type("NATIVE");
        $input->SetProduct_id("12235413214070356458058");
       $result = $notify->GetPayUrl($input);
$url2 = $result["code_url"];
        $url=urlencode($url2);
        $this->assign("url",$url);
        return $this->fetch();
    }

前台页面获取到code_url后生成二维码

<img alt="模式二扫码支付" src="{:url('qrcode')}?data={$url}"/>

将后台配置好qrcode方法

  //生成二维码
    public function qrcode()
    {
        Loader::import("weixinpay.example.phpqrcode.phpqrcode", EXTEND_PATH, ".php");
        $url = urldecode($_GET["data"]);
        if(substr($url, 0, 6) == "weixin"){
            \QRcode::png($url);
        }else{
            header('HTTP/1.1 404 Not Found');
        }
    }

这时就会出现支付二维码,然后我们设置回调函数

//微信回调接口
public function notify(){
  //  $this->array= 3030;
    $post = $_REQUEST;
    if ($post == null) {
        $post = file_get_contents("php://input");
    }
    if ($post == null) {
        $post = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
    }
    if (empty($post) || $post == null || $post == '') {
        //阻止微信接口反复回调接口  文档地址 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_7&index=7,下面这句非常重要!!!
        $str='<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
        echo $str;
        exit('Notify 非法回调');
    }
    libxml_disable_entity_loader(true); //禁止引用外部xml实体
    $xml = simplexml_load_string($post, 'SimpleXMLElement', LIBXML_NOCDATA);//XML转数组
    $post_data = (array)$xml;
    //如果微信支付成功,添加一条订单信息

        $data['openid']=$post_data['openid'];
     $data['trade_type']=$post_data['trade_type'];
        $data['total_fee']=$post_data['total_fee'];
        $data['transaction_id']=$post_data['transaction_id'];
        $data['result_code']=$post_data['result_code'];
       $data['out_trade_no']=$post_data['out_trade_no'];
        $data['time_end']=$post_data['time_end'];
        $data['cash_fee']=$post_data['cash_fee'];
        $data['bank_type']=$post_data['bank_type'];
        $rel=Db("sw_order")->insert($data);
        if($rel){
            echo "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
            exit('Notify 非法回调');
        }
//    }
}

支付成功后微信服务器就会调用我们设置的回调地址返回一些参数,我们再根据参数修改数据库的数据。

猜你喜欢

转载自www.cnblogs.com/ql-smile/p/10159833.html