微信扫码支付

1. 官网下载微信支付demo,把 lib 文件夹拿出来,放到tp5根目录 vendor 文件夹下,重命名为wxpay:php

2. 把 example 文件夹下的 WxPay.Config.php 拿出来,放到wxpay目录下,修改require_once,并配置支付参数:html

3. 修改 WxPay.Api.php 第二个require_once:  require_once "WxPay.Config.php";json

4. 微信

public function wx_pay($order_sn){

        header("Content-type:text/html;charset=utf-8");

        require VENDOR_PATH.'/wxpay/WxPay.Api.php'; //引入微信支付
        $input = new \WxPayUnifiedOrder();//统一下单
        $config = new \WxPayConfig();//配置参数

        //$paymoney = input('post.paymoney'); //支付金额
        $paymoney = 1; //测试写死
        $out_trade_no = 1000000002; //商户订单号(自定义)
        $goods_name = '扫码支付'.$paymoney.'元'; //商品名称(自定义)
        $input->SetBody($goods_name);
        $input->SetAttach($goods_name);
        $input->SetOut_trade_no($out_trade_no);
//        $input->SetTotal_fee($paymoney*100);//金额乘以100
        $input->SetTotal_fee($paymoney);//金额乘以100
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        $input->SetNotify_url("http://shop.bjxlxd.com/index/wxpay/wxpaynotifyurl"); //回调地址
        $input->SetTrade_type("NATIVE");
        $input->SetProduct_id("123456789");//商品id

        $result = \WxPayApi::unifiedOrder($config, $input);

        if($result['result_code']=='SUCCESS' && $result['return_code']=='SUCCESS') {
            $url = 'http://shop.bjxlxd.com/public/qrcode.php?data=' . $result["code_url"];
            $this->assign('url',$url);
        }else{
            $this->error('参数错误');
        }
        return view();
    }

 

// 微信回调
public function wxpaynotifyurl()
{
    $wxData = file_get_contents("php://input");
    $data = $this -> XMLDataParse($wxData);

    $where['order_sn'] = $data['out_trade_no'];

    $update['payment_time'] = time();
    $update['status'] = 1;
    Db::name('order') -> where($where) -> update($update);
}

 

//xml格式数据解析函数
public function XMLDataParse($data){
    $xml = simplexml_load_string($data,NULL,LIBXML_NOCDATA);
    $array=json_decode(json_encode($xml),true);
    return $array;
}

 

5. 前台要生成扫码支付的二维码。把demo中 example 文件夹下的 phpqrcode文件夹 和 qrcode.php 拿出来,我放到了项目根目录/public下面:函数

6. post

<img class="wxpay_img" src="{$url}" alt="扫码支付">