1. 官网下载微信支付demo,把 lib 文件夹拿出来,放到tp5根目录 vendor 文件夹下,重命名为wxpay:
2. 把 example 文件夹下的 WxPay.Config.php 拿出来,放到wxpay目录下,修改require_once,并配置支付参数:
3. 修改 WxPay.Api.php 第二个require_once: require_once "WxPay.Config.php";
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.