TP5 中实现支付宝支付 利用model层调用支付宝类库
- <?php
- /**
- * Created by PhpStorm.
- * User: admin
- * Date: 2017/8/16
- * Time: 09:16
- */
- namespace app\admin\model;
- use think\Model;
- class Config extends Model
- {
- public function alipay_config(){
- $alipay_config = array(
- 'partner' => '',
- //收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
- 'seller_id' =>'',
- // MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
- 'key' => '',
- // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=>123这类自定义参数,必须外网可以正常访问
- 'notify_url' => "",
- // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=>123这类自定义参数,必须外网可以正常访问
- 'return_url' => "",
- //签名方式
- 'sign_type' => strtoupper('MD5'),
- //字符编码格式 目前支持 gbk 或 utf-8
- 'input_charset'=> strtolower('utf-8'),
- //ca证书路径地址,用于curl中ssl校验
- //请保证cacert.pem文件在当前文件夹目录中
- 'cacert' => getcwd().'\\cacert.pem',
- //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
- 'transport' => 'http',
- // 支付类型 ,无需修改
- 'payment_type'=> "1",
- // 产品类型,无需修改
- 'service'=> "create_direct_pay_by_user",
- //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
- //↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- // 防钓鱼时间戳 若要使用请调用类文件submit中的query_timestamp函数
- 'anti_phishing_key' => "",
- // 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1
- 'exter_invoke_ip' => "",
- );
- return $alipay_config;
- }
- public function parameter(){
- $config = new Config();
- $alipay_config = $config->alipay_config();
- $parameter = array(
- "service" => $alipay_config['service'],
- "partner" => $alipay_config['partner'],
- "seller_id" => $alipay_config['seller_id'],
- "payment_type" => $alipay_config['payment_type'],
- "notify_url" => $alipay_config['notify_url'],
- "return_url" => $alipay_config['return_url'],
- "anti_phishing_key"=>$alipay_config['anti_phishing_key'],
- "exter_invoke_ip"=>$alipay_config['exter_invoke_ip'],
- "out_trade_no" => '',
- "subject" => '',
- "total_fee" => '',
- "body" => '',
- "_input_charset" => trim(strtolower($alipay_config['input_charset']))
- //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kiX33I&treeId=62&articleId=103740&docType=1
- //如"参数名"=>"参数值"
- );
- return $parameter;
- }
- }
-------------------------------------------------
- Controller控制器层
- <?php
- namespace app\admin\controller;
- use think\Controller; //使用控制器
- use app\admin\model\Submit;
- use app\admin\model\Corefunction;
- use app\admin\model\Md5function;
- use app\admin\model\Notify;
- use app\admin\model\Config;
- use think\Db;//引入控制器
- use think\Session;//引入控制器
- class pay extends Controller
- {
- public function pay(){
- vendor('Alipay.Corefunction');
- vendor('Alipay.Md5function');
- vendor('Alipay.Notify');
- vendor('Alipay.Submit');
- $out_trade_no = $_POST['WIDout_trade_no'];//订单名称,必填
- $subject = $_POST['WIDsubject'];///商品描述,可空
- $total_fee = $_POST['WIDtotal_fee'];//付款金额,必填
- $body = $_POST['WIDout_trade_no'];
- $config = new Config();
- $alipay_config = $config->alipay_config();
- $parameter = $config->parameter();
- $parameter['out_trade_no'] = $out_trade_no;
- $parameter['subject'] = $subject ;
- $parameter['total_fee'] = $total_fee ;
- $parameter['body'] = $body;
- session::set("money",$total_fee);//将金额存入session
- $alipaySubmit = new Submit($alipay_config);
- $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
- return $html_text;
- }
- public function notify_url(){
- $config = new Config();
- $alipay_config = $config->alipay_config();
- $alipayNotify = new Notify($alipay_config);
- $verify_result = $alipayNotify->verifyNotify();
- if($verify_result) {//验证成功
- //商户订单号
- $out_trade_no = $_POST['out_trade_no'];
- //支付宝交易号
- $trade_no = $_POST['trade_no'];
- //交易状态
- $trade_status = $_POST['trade_status'];
- if($_POST['trade_status'] == 'TRADE_FINISHED') {
- //判断该笔订单是否在商户网站中已经做过处理
- }
- else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
- //判断该笔订单是否在商户网站中已经做过处
- }
- echo "success"; //请不要修改或删除
- }
- else {
- //验证失败
- echo "fail";
- /* 调试用,写文本函数记录程序运行情况是否正常
- logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");*/
- }
- return $this->fetch('autoinvest');
- }
- public function return_url(){
- $config = new Config();
- $alipay_config = $config->alipay_config();
- $alipayNotify = new Notify($alipay_config);
- $verify_result = $alipayNotify->verifyReturn();
- if($verify_result) {//验证成功
- //商户订单号
- $out_trade_no = $_GET['out_trade_no'];
- //支付宝交易号
- $trade_no = $_GET['trade_no'];
- //交易状态
- $trade_status = $_GET['trade_status'];
- if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
- //判断该笔订单是否在商户网站中已经做过处理
- }
- else {
- echo "trade_status=".$_GET['trade_status'];
- }
- }
- else {
- //验证失败
- //如要调试,请看alipay_notify.php页面的verifyReturn函数
- }
- }
- }
- model层的文件均是 支付宝 的类库 修改而成 里面没有大的变动 只是加上TP5的model固定模式写法
- 版权声明:本文为原创文章,转载请注明出处。
TP5 中实现支付宝支付 利用model层调用支付宝类库的更多相关文章
- Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝支付)
最近一直在接触第三方,刚接入完支付宝的API做一下总结,个人能力薄弱有不对的地方望指教. 做的是一个小型电商项目,所以会接入第三方的支付和登入功能, 第一次接入第三方撸了很多官方文档. 进入主题, ...
- Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)
上一篇写到支付宝的支付,这代码copy下来就能直接用了, 我写学习文档时会经常贴 官方参数文档的案例地址, 因为我觉得 请求参数,响应参数说明 官方文档整理的很好,毕竟官方不会误导大家. 我学一个 ...
- Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)
上次分享了支付宝订单退款的代码,今天分享一下支付宝转账的操作. 现在是有一个余额提现的功能,本来是打算做提现到银行卡的,但是客户嫌麻烦不想注册银联的开放平台账户,就说先提现到支付宝就行,二期再做银行 ...
- asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付
下完订单之后到支付宝付款,成功之后再返回来修改订单状态.由于只是测试,所以就没有真正的连接到支付宝,用的是一个模拟支付宝的程序 下载地址:支付宝模拟程序 这是一个vs2010的项目,本来网上找了一个模 ...
- APP支付宝支付接入
1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...
- H5 网站支付宝支付(前端部分)包含微信浏览器中的处理方法。
手机网站唤起支付宝支付: H5 网站实现支付宝支付是一个很常见的需求: 实现方式主要是在后台配置和预支付, 前端需要做的就是唤起 支付宝App 然后就可以输入密码支付. 这个其实难度很低, 主要就是在 ...
- ThinkPHP5.0 实现 app支付宝支付功能
前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...
- yii2 支付宝支付教程 [ 2.0 版本 ]
yii2 支付宝支付教程 [ 2.0 版本 ] 支付宝支付流程个人理解大致就这三步1.前台页面将支付信息数据通过立即支付按钮 ajax提交到订单处理层2.在订单处理层引用支付宝的接口 将支付数据写入 ...
- iOS - AliPay 支付宝支付
1.支付宝支付申请 支付宝支付官方签约集成指引 支付宝APP支付官方集成指引 蚂蚁金服开放平台 1.1 支付宝 APP 支付申请步骤 APP 支付:APP 支付是商户通过在移动端应用 APP 中集成开 ...
随机推荐
- C语言中static关键字的用法
C记得还是大一时学的,现在觉得好久没用了,又捧起来看看.今天刚看到有关static关键字,仔细地看了一遍<C和指针>这本书中的解释,现在觉得清楚多了. 首先,我们将static关键字,修饰 ...
- 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例
一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...
- Head First设计模式之原型模式
一.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式是一种比较简单的模式,也非常容易理解,实现一个接口,重写一个方法即完成了原型模式.在实际应用中,原型模式很少单独出现 ...
- 如何用Python在豆瓣中获取自己喜欢的TOP N电影信息
一.什么是 Python Python (蟒蛇)是一门简单易学. 优雅健壮. 功能强大. 面向对象的解释型脚本语言.具有 20+ 年发展历史, 成熟稳定. 具有丰富和强大的类库支持日常应用. 1989 ...
- 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作
前端自动化(三) 合并压缩css.压缩js.添加时间戳.打包上线操作 此文在前两篇基础上对比参考,会很方便理解 gulp.task("delete",function(){ r ...
- (笔记):组合and继承之访问限制(二)
上篇简单介绍了public与private的基本使用.private的访问限制相对复杂.针对这种访问属性,我们会想到有没有一种方式可以无视这种属性.答案是:有.我们可以通过friend的方式(可以破解 ...
- mysql之数据操作
一 介绍 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现 ...
- git命令记录
1, clone 远程分支 git clone 命令默认的只会建立master分支,如果你想clone指定的某一远程分支(如:dev)的话,可以如下: A. 查看所有分支(包括隐藏的) git br ...
- centos perl: symbol lookup error: /usr/local/lib64/perl5/auto/DBD/mysql/mysql.so: undefined symbol: mysql_init
之前在安装天兔数据库监控工具lepus的时候,运行时一直报perl: symbol lookup error: /usr/local/lib64/perl5/auto/DBD/mysql/mysql. ...
- 跟我一起读postgresql源码(十)——Executor(查询执行模块之——Scan节点(下))
接前文跟我一起读postgresql源码(九)--Executor(查询执行模块之--Scan节点(上)) ,本篇把剩下的七个Scan节点结束掉. T_SubqueryScanState, T_Fun ...