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 相关文章推荐
PHP生成带有雪花背景的验证码
Oct 09 PHP
php mysql数据库操作类
Jun 04 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
PHP内置的Math函数效率测试
Dec 01 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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 file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
巴西购物网站:Estrela10
2018/12/13 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
简述数组与指针的区别
2014/01/02 面试题
文案策划岗位职责
2015/02/11 职场文书
财务部岗位职责范本
2015/04/14 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
2019广播稿怎么写
2019/04/17 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android