最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下

一.将有用的官方lib文件和使用的相关文件放置到vendor当中

二.调用同一支付接口

WechatController

  1. //调用同一支付接口
    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;
    }
  2.  
  3. $v_amount = trim($v_amount*100); //支付金额
  4.  
  5. //调用同一支付接口
    $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"];
  6.  
  7. $this->assign('data',urlencode($url2));
    $this->assign('v_oid',$v_oid); $this->assign('v_amount',$v_amount/100); $this->display();}三.生成二维码
  1. 三.微信支付生成二维码
    public function qrcode(){
    error_reporting(E_ERROR);
    vendor('Wxpay.phpqrcode.phpqrcode');
    $url = $_GET["data"];
    \QRcode::png($url);
    }
  2.  
  3. 四.异步处理
    具体处理流程和方式按个人需求
  1. //微信异步查询订单机制
    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;
    }
  2.  
  3. 五.再来个form表单展示二维码
  1. <form action="" method="post" id="myForm-table">
    <h2>订单信息</h2>
    <div class="orderNumber">
    <p class="a">订单号:"{$v_oid}"</p>
    <p class="b">
    <span class="left">应付金额:<strong><em>{$v_amount}</em></strong></span>
    <span class="right">付款后,飞行之翼客服会与您联系,如有问题请咨询24小时飞行热线 400-700-2016</span>
    </p>
    </div>
    <h2>微信支付</h2>
    <img src="{:U('qrcode')}?data={$data}" alt="微信扫码">
    <div class="order-submit"><a href="javascript:history.go(-1);" class="submitOrder Order">返回其他支付方式</a></div>
    </form>
  2.  
  3. 成功的图就不附上了,这是我遇到的问题,由于要重构,所以比较乱,无效代码也比较多,需要整理,记录下来,分享一二
  1.  
  1.  

ThinkPHP微信扫码支付接口的更多相关文章

  1. thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5

    前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了 ...

  2. 如何对接payjs的个人微信扫码支付接口

    在众多个人支付接口的产品中,要寻找一个稳定可靠的产品是比较难的,所幸遇到payjs,感觉逼格较高,非常满足自己的品味.推荐大家使用.下边是我在对接payjs的过程中的一些经验和技巧,分享给大家. 一. ...

  3. .NET MVC结构框架下的微信扫码支付模式二 API接口开发测试

    直接上干货 ,我们的宗旨就是为人民服务.授人以鱼不如授人以渔.不吹毛求疵.不浮夸.不虚伪.不忽悠.一切都是为了社会共同进步,繁荣昌盛,小程序猿.大程序猿.老程序猿还是嫩程序猿,希望这个社会不要太急功近 ...

  4. .NET微信扫码支付模式二API接口开发测试

    主要实现微信扫码支付,官网的SDKdemo 就不要使用 一直不能调试通过的,还是自己按照API接口文档一步一步来实现,吐槽下微信一点责任感都木有,能不能demo搞个正常的吗,不要坑惨了一大群码农们有点 ...

  5. MVC 微信扫码支付

    微信扫码支付有两种模式, 模式一和模式二, 两者具体的区别可参考官网文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 微 ...

  6. Net MVC微信扫码支付

    微信扫码支付+Asp.Net MVC 这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下. 一.准备工作 使用的微信API中的统一下单方法,关键的 ...

  7. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...

  8. php微信扫码支付

    一 概述 扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信"扫一扫"完成支付的模式.该模式适用于PC网站支付.实体店单品或订单支付.媒体广告支付等场景.前几天公司需要做 ...

  9. Thinkphp5整合微信扫码支付开发实例

    ThinkPHP框架是比较多人用的,曾经做过的一个Thinkphp5整合微信扫码支付开发实例,分享出来大家一起学习 打开首页生成订单,并显示支付二维码 public function index() ...

随机推荐

  1. 利用open live writer工具的Metaweblog技术API接口同步到多个博客。

    测试例子内容: hello world hello metaweblog hello open live writer

  2. input button 与 submit 的区别

    在表单中,我们会经常提交数据,通常使用<input type="submit" value="提交"/>进行提交数据, 另一种方式是使用<bu ...

  3. 然之协同系统6.4.1 SQL注入导致getshell

     前言 先知上一个大佬挖的洞,也有了简单的分析 https://xianzhi.aliyun.com/forum/topic/2135 我自己复现分析过程,漏洞的原理比较简单,但是漏洞的利用方式对我而 ...

  4. js脚本快速评课----中科大教务系统

    git地址:https://github.com/hzphzp/js_ustc_mis_teach 代码 for(var i = 1; i < document.getElementsByTag ...

  5. restframework类继承图

  6. LoadRunner简单培训相关笔记

    学校花了20万买了LoadRunner,因此作为幸运的一届,赶上了这场培训.以下为笔记以及培训后制作的简易思维导图. Loadrunner思维导图源码(Xmind): http://pan.baidu ...

  7. 已经不再使用的表为什么数据页还在SQLServer的内存缓存中

    1. 问题发现 在学习内存调优时,使用如下代码,查询目前内存缓冲区中生产数据库的每个对象缓存页计数 SELECT count(*)AS cached_pages_count ,name ,index_ ...

  8. centos yum升级php

    centos yum升级php5.3.3到最5.6.3 不要轻易升级,否则后果很严重! 注意事项: 1 升级后之前的php扩展不会丢失 自动会安装对应最新php的扩展2 升级后需重启下apache 才 ...

  9. C# 方法与参数 常见命名空间汇总 using的使用 main方法参数

    本文主要讲 C# 常见命名空间 using static 指令 && 调用静态方法 嵌套命名空间&&作用域 别名 Main() 方法 C# 常见命名空间 命名空间 作用 ...

  10. 沉淀再出发:Tomcat的实现原理

    沉淀再出发:Tomcat的实现原理 一.前言 在我们接触java之后,相信大家都编写过服务器程序,这个时候就需要用到Tomcat了.Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统 ...