最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下
一.将有用的官方lib文件和使用的相关文件放置到vendor当中
二.调用同一支付接口
WechatController
//调用同一支付接口 public function native($v_oid='',$v_amount=''){ ini_set('date.timezone','Asia/Shanghai'); error_reporting(E_ERROR); //添加相关的类文件 vendor('Wxpay.WxPayApi'); vendor('Wxpay.log'); vendor('Wxpay.NativePay'); //初始化日志 $logHandler= new \CLogFileHandler("../logs/".date('Y-m-d').'.log'); $log = \Log::Init($logHandler, 15); //接受订单信息 if(trim($v_oid)<>"") //判断是否有传递订单号 { $v_oid = trim($v_oid); } else { $this->error('订单号为空',U('User/index')); exit; } $v_amount = trim($v_amount*100); //支付金额 //调用同一支付接口 $notify = new \NativePay(); $input = new \WxPayUnifiedOrder(); //商品描述----------------------------需要参数传递/统一信息 $input->SetBody("商品描述位置"); //附加数据 $input->SetAttach("附加数据位置"); //商户订单号 $input->SetOut_trade_no($v_oid); //总金额 $input->SetTotal_fee($v_amount); //开始时间 $input->SetTime_start(date("YmdHis")); //结束时间 $input->SetTime_expire(date("YmdHis", time() + 600)); //商品标记 $input->SetGoods_tag("商品标记位置"); //异步通知地址,不能携带任何参数 $input->SetNotify_url(U('NotifyProcess')); //交易类型 $input->SetTrade_type("NATIVE"); //商品id $input->SetProduct_id("123456789"); //获取同一支付接口结果 $result = $notify->GetPayUrl($input); $url2 = $result["code_url"]; $this->assign('data',urlencode($url2)); $this->assign('v_oid',$v_oid); $this->assign('v_amount',$v_amount/100); $this->display();}三.生成二维码
三.微信支付生成二维码 public function qrcode(){ error_reporting(E_ERROR); vendor('Wxpay.phpqrcode.phpqrcode'); $url = $_GET["data"]; \QRcode::png($url); } 四.异步处理 具体处理流程和方式按个人需求
//微信异步查询订单机制 public function Queryorder($transaction_id) { $input = new \WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); $result = \WxPayApi::orderQuery($input); \Log::DEBUG("query:" . json_encode($result)); if(array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") { return true; } return false; } 五.再来个form表单展示二维码
成功的图就不附上了,这是我遇到的问题,由于要重构,所以比较乱,无效代码也比较多,需要整理,记录下来,分享一二