Thinkphp各大支付平台在线支付集成源码
用Thinkphp给客户开发网站的时候需要用到各大平台付款功能,下面就免费分享给大家,此类是个成熟类,网上down下来的,经过修改测试了(可以直接拿来使用,附带使用方法,有需要的朋友请拿走。),如果有需要安装的演示请登陆“二当家的”查看:http://www.erdangjiade.com/php/524.html
目前包含了支付宝pc版、支付宝wap版、palpay、yeepay、unionpay、kuaiqian、财付通tenpay等,这几个常用的支付平台,支付方式均为即时到账,不包含担保支付。
支付配置ThinkPay\Application\Common\Conf\config.php array( /* 支付设置 */ 'payment' => array( 'tenpay' => array( // 加密key,开通财付通账户后给予 'key' => 'e82573dc7e6136ba414f2e2affbe39fa', // 合作者ID,财付通有该配置,开通财付通账户后给予 'partner' => '1900000113' ), 'alipay' => array( // 收款账号邮箱 'email' => 'chenf003@yahoo.cn', // 加密key,开通支付宝账户后给予 'key' => 'aaa', // 合作者ID,支付宝有该配置,开通易宝账户后给予 'partner' => '2088101000137799' ), 'aliwappay' => array( // 收款账号邮箱 'email' => 'chenf003@yahoo.cn', // 加密key,开通支付宝账户后给予 'key' => 'aaa', // 合作者ID,支付宝有该配置,开通易宝账户后给予 'partner' => '2088101000137799' ), 'palpay' => array( 'business' => 'zyj@qq.com' ), 'yeepay' => array( 'key' => '69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl', 'partner' => '10001126856' ), 'kuaiqian' => array( 'key' => '1234567897654321', 'partner' => '1000300079901' ), 'unionpay' => array( 'key' => '88888888', 'partner' => '105550149170027' ) ) ); 支付生成订单 ThinkPay\ThinkPHP\Library\Think\Pay.class.php function buildRequestForm(Pay\PayVo $vo) { $this->payer->check(); //生成本地记录数据 $check = M("Pay")->add(array( 'out_trade_no' => $vo->getOrderNo(), 'money' => $vo->getFee(), 'status' => 0, 'callback' => $vo->getCallback(), 'url' => $vo->getUrl(), 'param' => serialize($vo->getParam()), 'create_time' => time(), 'update_time' => time() )); if ($check !== false) { return $this->payer->buildRequestForm($vo); } else { E(M("Pay")->getDbError()); } } 支付订单表 /** 数据库 CREATE TABLE `think_pay` ( `out_trade_no` varchar(100) NOT NULL, `money` decimal(10,2) NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '0', `callback` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, `param` text NOT NULL, `create_time` int(11) NOT NULL, `update_time` int(11) NOT NULL, PRIMARY KEY (`out_trade_no`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; */ alipay配置ThinkPay\ThinkPHP\Library\Think\Pay\Driver\Alipay.class.php protected $gateway = 'https://mapi.alipay.com/gateway.do'; protected $verify_url = 'http://notify.alipay.com/trade/notify_query.do'; protected $config = array( 'email' => '', 'key' => '', 'partner' => '' ); md5加密 public function buildRequestForm(\Think\Pay\PayVo $vo) { $param = array( 'service' => 'create_direct_pay_by_user', 'payment_type' => '1', '_input_charset' => 'utf-8', 'seller_email' => $this->config['email'], 'partner' => $this->config['partner'], 'notify_url' => $this->config['notify_url'], 'return_url' => $this->config['return_url'], 'out_trade_no' => $vo->getOrderNo(), 'subject' => $vo->gettitle(), 'body' => $vo->getBody(), 'total_fee' => $vo->getFee() ); ksort($param); reset($param); $arg = ''; foreach ($param as $key => $value) { if ($value) { $arg .= "$key=$value&"; } } $param['sign'] = md5(substr($arg, 0, -1) . $this->config['key']); $param['sign_type'] = 'MD5'; $sHtml = $this->_buildForm($param, $this->gateway, 'get'); return $sHtml; } 支付成功后回调地址ThinkPay\Application\Home\Controller\PublicController.class.php public function notify() { $apitype = I('get.apitype'); $pay = new \Think\Pay($apitype, C('payment.' . $apitype)); if (IS_POST && !empty($_POST)) { $notify = $_POST; } elseif (IS_GET && !empty($_GET)) { $notify = $_GET; unset($notify['method']); unset($notify['apitype']); } else { exit('Access Denied'); } //验证 if ($pay->verifyNotify($notify)) { //获取订单信息 $info = $pay->getInfo(); if ($info['status']) { $payinfo = M("Pay")->field(true)->where(array('out_trade_no' => $info['out_trade_no']))->find(); if ($payinfo['status'] == 0 && $payinfo['callback']) { session("pay_verify", true); $check = R($payinfo['callback'], array('money' => $payinfo['money'], 'param' => unserialize($payinfo['param']))); if ($check !== false) { M("Pay")->where(array('out_trade_no' => $info['out_trade_no']))->setField(array('update_time' => time(), 'status' => 1)); } } if (I('get.method') == "return") { redirect($payinfo['url']); } else { $pay->notifySuccess(); } } else { $this->error("支付失败!"); } } else { E("Access Denied"); } }
Thinkphp各大支付平台在线支付集成源码的更多相关文章
- java实现微信支付宝等多个支付平台合一的二维码支付(maven+spring springmvc mybatis框架)
首先申明,本人实现微信支付宝等支付平台合多为一的二维码支付,并且实现有效时间内支付有效,本人采用的框架是spring springmvc mybatis 框架,maven管理.其实如果支付,不需要my ...
- 点菜网---Java开源生鲜电商平台-系统架构图(源码可下载)
点菜网---Java开源生鲜电商平台-系统架构图(源码可下载) 1.点菜网-生鲜电商平台的价值与定位. 生鲜电商平台是一家致力于打造全国餐饮行业智能化.便利化.平台化与透明化服务的创新型移动互联网平台 ...
- vue集成cesium,webgis平台第一步(附源码下载)
vue-cesium-platform Vue结合Cesium的web端gis平台 初步效果 笔记本性能限制,运行Cesium温度飙到70度以上.所以平时开发时先开发界面,之后加载Cesium地球 当 ...
- Struts2SpringHibernate整合示例,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)
Struts2,Spring,Hibernate是Java Web开发中最为常见的3种框架,掌握这3种框架是每个Java Web开发人员的基本功. 然而,很多初学者在集成这3个框架的时候,总是会遇到各 ...
- 资深程序员教你如何实现API自动化测试平台!附项目源码!
原文链接: 1.平时测试接口,总是现写代码,对测试用例的管理,以及测试报告的管理持久化做的不够, 2.工作中移动端开发和后端开发总是不能并行进行,需要一个mock的依赖来让他们并行开发. 3.同时让自 ...
- jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法
我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...
- 集成源码深度剖析:Fescar x Spring Cloud
Fescar 简介 常见的分布式事务方式有基于 2PC 的 XA (e.g. atomikos),从业务层入手的 TCC( e.g. byteTCC).事务消息 ( e.g. RocketMQ Hal ...
- FlexPaper实现文档在线浏览(附源码)
园子里也有关于FlexPaper的文章,但都不怎么详细. 没有较全的参数说明.就连官方网站都没有.没法,最后只得将swf文件反编译后查看了源码才将里面的参数全部弄出来. 好了,废话不多说,开始正题. ...
- 16Aspx.com-书通网中小学生免费在线学习网站源码 带采集带手机版帝国cms内核
=============================================== 源码站长资源交易专业网-商业源码下载,VIP源码,程序交易,毕业设计交易,站长交易|- 16aspx.c ...
随机推荐
- async 和 await 的进阶
异常的捕获: static void Main(string[] args) { //继续我们的异步编程的使用嘀呀: //关于主线程是无法捕获我们子线程中的异常滴滴啊: var t = DoExcep ...
- 快速创建一个springboot项目
创建一个maven项目(springboot.mybatis-plus) 目标:可以访问ftl页面.对象(json字符串),可以进行单元测试 1.新建一个maven项目,选择模板maven-arche ...
- css3几个新属性
1.text-shadow 文字阴影 p{ text-shadow:2px 2px 10px #000; } 四个参数,依次: a:水平偏移 b:垂直偏移 c:阴影程度 d:阴影颜色 2.word- ...
- SQLite - TRUNCATE TABLE
https://www.tutorialspoint.com/sqlite/sqlite_truncate_table.htm Unfortunately, no TRUNCATE TABLE in ...
- Single Responsibility Principle 单一职责原则
- pypi上传库
把程序打包上传到PyPi版本库中 转自 1 首先必须要按照以下文件结构 ├── douban │ ├── cli.py │ ├── douban.py │ ├── douban_token ...
- html页面定位
对于css中的position:relative;我始终搞不明白它是什么意思,有什么作用? 对于position的其它几个属性,我都搞懂了 引用 static : 无特殊定位,对象遵循HTML定位规则 ...
- IIS无法加载字体文件(*.woff,*.svg)的解决办法
在编写前端代码的过程中经常会遇到使用特定的字体(*.woff,*.svg),此时在加载字体时请求会被返回 Failed to load resource: the server responded w ...
- deepin linux 安装 mysql
一:安装mysql 打开deepin terminal: 在此过程中会提示输入两次密码,就是输入 root 账号密码,两次输入密码一样就可以了.然后一路Y安装成功. 一旦安装成功,MySql服务器会自 ...
- 关于java写进mysql中文乱码问题
Eclipse windows-preferences-general-workspace选择为UTF-8 Mysql 创建时选择UTF-8 URL = "jdbc:mysql://12 ...