ThinkPHP微信扫码支付接口
2016-03-28 18:03
513 查看
最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下一.将有用的官方lib文件和使用的相关文件放置到vendor当中二.调用同一支付接口WechatController
//调用同一支付接口 publicfunctionnative($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();}三.生成二维码
三.微信支付生成二维码 publicfunctionqrcode(){ error_reporting(E_ERROR); vendor('Wxpay.phpqrcode.phpqrcode'); $url=$_GET["data"]; \QRcode::png($url); } 四.异步处理 具体处理流程和方式按个人需求
//微信异步查询订单机制 publicfunctionQueryorder($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") { returntrue; } returnfalse; } 五.再来个form表单展示二维码
<formaction=""method="post"id="myForm-table"> <h2>订单信息</h2> <divclass="orderNumber"> <pclass="a">订单号:"{$v_oid}"</p> <pclass="b"> <spanclass="left">应付金额:<strong><em>{$v_amount}</em>元</strong></span> <spanclass="right">付款后,飞行之翼客服会与您联系,如有问题请咨询24小时飞行热线400-700-2016</span> </p> </div> <h2>微信支付</h2> <imgsrc="{:U('qrcode')}?data={$data}"alt="微信扫码"> <divclass="order-submit"><ahref="javascript:history.go(-1);"class="submitOrderOrder">返回其他支付方式</a></div> </form> 成功的图就不附上了,这是我遇到的问题,由于要重构,所以比较乱,无效代码也比较多,需要整理,记录下来,分享一二
相关文章推荐
- MAC上配置阿里云PHP开发环境
- MTK TP驱动移植
- PHP日期和时间处理
- thinkphp 3.2 整合PHPEXCEL
- PHP使用smtp发送邮件
- yii2 随笔(七)依赖注入——(4)服务定位器
- VS2010将标准输出信息输出到output中
- yii2 随笔(七)依赖注入——(3)yii2的依赖注入
- yii2 随笔(七)依赖注入——(2)php依赖注入的简单实现
- PullToRefresh之代理模式-LoadingLayoutProxy源码剖析
- 隐藏index.php - ThinkPHP完全开发手册 - 3.1
- 编译安装php Cannot find MySQL header files under /usr/include/mysql.
- yii2 随笔(七)依赖注入——(1)什么是依赖注入
- PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
- 54点提高PHP编程效率 引入缓存机制提升性能
- 3.1 Zend_Db_Adapter
- php学习日记2
- ubuntu升级php版本
- PHP常见报错解析
- php_mysql、php_mysqli 与 pdo_mysql 的区别与选择