Thinkphp和onethink实现微信支付插件


Posted in PHP onApril 13, 2016

thinkPHP和微支付实现的微信支付插件,在微信中调用微信jssdk实现支付,这里有详细的代码和教程,具体看这里:

//实现的Wxpay钩子方法
    public function Wxpay($param){
      require './Addons/Wxpay/WxPayPubHelper/WxPayPubHelper.php';
      $jsApi = new \JsApi_pub(); 
       
      //=========步骤1:网页授权获取用户openid============
      if (!isset($_GET['code']))
      {
        //触发微信返回code码
        $url = $jsApi->createOauthUrlForCode(\WxPayConf_pub::JS_API_CALL_URL.'/order_id/'.$param['order_id']);
        Header("Location: $url");
      }else
      {
        $order_id = $param['order_id'];
        $info = M('Order')->where('id='.$order_id)->find();
        if(empty($info) || $info['is_pay'] == 1){
          dump('该订单不存在或已支付'.$order_id);
          exit();
        }
        $this->assign('info', $info);
        $a = $info['money'];
        $b = 100;
        $c = $a * $b;
         
        //获取code码,以获取openid
        $code = $_GET['code'];
        $jsApi->setCode($code);
        $openid = $jsApi->getOpenId();
      }
       
      //=========步骤2:使用统一支付接口,获取prepay_id============
      //使用统一支付接口
      $unifiedOrder = new \UnifiedOrder_pub();
       
      $unifiedOrder->setParameter("openid","$openid");//商品描述
      $unifiedOrder->setParameter("body","在线预订");//商品描述
      //自定义订单号,此处仅作举例
      $timeStamp = time();
//       $out_trade_no = \WxPayConf_pub::APPID."$timeStamp";
      $out_trade_no = $info['ordersn'];
      $unifiedOrder->setParameter("out_trade_no", "$out_trade_no");//商户订单号
      $unifiedOrder->setParameter("total_fee", "$c");//总金额
      $unifiedOrder->setParameter("notify_url",\WxPayConf_pub::NOTIFY_URL.'/order_id/'.$param['order_id']);//通知地址
      $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
       
      $prepay_id = $unifiedOrder->getPrepayId();
      //=========步骤3:使用jsapi调起支付============
      $jsApi->setPrepayId($prepay_id);
      $jsApiParameters = $jsApi->getParameters();
      $this->assign('jsApiParameters', $jsApiParameters);
 
      $this->display('pay');
    }

以上就是本文的全部内容,希望对大家学习PHP程序设计有所帮助。

PHP 相关文章推荐
PHP5 安装方法
Oct 09 PHP
PHP学习之PHP变量
Oct 09 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
PHP数组操作类实例
Jul 11 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
php生成带logo二维码方法小结
Apr 08 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
微信小程序和php的登录实现
Apr 01 PHP
PHP MSSQL 分页实例
Apr 13 #PHP
php构造方法中析构方法在继承中的表现
Apr 12 #PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 #PHP
ThinkPHP框架里隐藏index.php
Apr 12 #PHP
PHP 绘制网站登录首页图片验证码
Apr 12 #PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 #PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 #PHP
You might like
PHP如何抛出异常处理错误
2011/03/02 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Saltstack快速入门简单汇总
2016/03/01 Python
python 类详解及简单实例
2017/03/24 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Django的models模型的具体使用
2019/07/15 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
函授自我鉴定
2013/11/06 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
运动会方阵解说词
2014/02/12 职场文书
股份转让协议书范本
2015/01/27 职场文书
小石潭记导游词
2015/02/03 职场文书
步步惊心观后感
2015/06/12 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP