1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: admin
  5. * Date: 2017/8/16
  6. * Time: 09:16
  7. */
  8. namespace app\admin\model;
  9. use think\Model;
  10.  
  11. class Config extends Model
  12. {
  13. public function alipay_config(){
  14. $alipay_config = array(
  15. 'partner' => '',
  16.  
  17. //收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
  18. 'seller_id' =>'',
  19.  
  20. // MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
  21. 'key' => '',
  22.  
  23. // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=>123这类自定义参数,必须外网可以正常访问
  24. 'notify_url' => "",
  25.  
  26. // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=>123这类自定义参数,必须外网可以正常访问
  27. 'return_url' => "",
  28.  
  29. //签名方式
  30. 'sign_type' => strtoupper('MD5'),
  31.  
  32. //字符编码格式 目前支持 gbk 或 utf-8
  33. 'input_charset'=> strtolower('utf-8'),
  34.  
  35. //ca证书路径地址,用于curl中ssl校验
  36. //请保证cacert.pem文件在当前文件夹目录中
  37. 'cacert' => getcwd().'\\cacert.pem',
  38.  
  39. //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
  40. 'transport' => 'http',
  41. // 支付类型 ,无需修改
  42. 'payment_type'=> "1",
  43.  
  44. // 产品类型,无需修改
  45. 'service'=> "create_direct_pay_by_user",
  46.  
  47. //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  48. //↓↓↓↓↓↓↓↓↓↓ 请在这里配置防钓鱼信息,如果没开通防钓鱼功能,为空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  49.  
  50. // 防钓鱼时间戳 若要使用请调用类文件submit中的query_timestamp函数
  51. 'anti_phishing_key' => "",
  52. // 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1
  53. 'exter_invoke_ip' => "",
  54. );
  55. return $alipay_config;
  56. }
  57. public function parameter(){
  58. $config = new Config();
  59. $alipay_config = $config->alipay_config();
  60. $parameter = array(
  61. "service" => $alipay_config['service'],
  62. "partner" => $alipay_config['partner'],
  63. "seller_id" => $alipay_config['seller_id'],
  64. "payment_type" => $alipay_config['payment_type'],
  65. "notify_url" => $alipay_config['notify_url'],
  66. "return_url" => $alipay_config['return_url'],
  67.  
  68. "anti_phishing_key"=>$alipay_config['anti_phishing_key'],
  69. "exter_invoke_ip"=>$alipay_config['exter_invoke_ip'],
  70. "out_trade_no" => '',
  71. "subject" => '',
  72. "total_fee" => '',
  73. "body" => '',
  74. "_input_charset" => trim(strtolower($alipay_config['input_charset']))
  75. //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kiX33I&treeId=62&articleId=103740&docType=1
  76. //如"参数名"=>"参数值"
  77.  
  78. );
  79. return $parameter;
  80. }
  81.  
  82. }
    -------------------------------------------------
  1. Controller控制器层
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Controller; //使用控制器
  4. use app\admin\model\Submit;
  5. use app\admin\model\Corefunction;
  6. use app\admin\model\Md5function;
  7. use app\admin\model\Notify;
  8. use app\admin\model\Config;
  9. use think\Db;//引入控制器
  10. use think\Session;//引入控制器
  11.  
  12. class pay extends Controller
  13. {
  14. public function pay(){
  15. vendor('Alipay.Corefunction');
  16. vendor('Alipay.Md5function');
  17. vendor('Alipay.Notify');
  18. vendor('Alipay.Submit');
  19. $out_trade_no = $_POST['WIDout_trade_no'];//订单名称,必填
  20. $subject = $_POST['WIDsubject'];///商品描述,可空
  21. $total_fee = $_POST['WIDtotal_fee'];//付款金额,必填
  22. $body = $_POST['WIDout_trade_no'];
  23. $config = new Config();
  24. $alipay_config = $config->alipay_config();
  25. $parameter = $config->parameter();
  26. $parameter['out_trade_no'] = $out_trade_no;
  27. $parameter['subject'] = $subject ;
  28. $parameter['total_fee'] = $total_fee ;
  29. $parameter['body'] = $body;
  30. session::set("money",$total_fee);//将金额存入session
  31. $alipaySubmit = new Submit($alipay_config);
  32. $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
  33.  
  34. return $html_text;
  35. }
  36. public function notify_url(){
  37. $config = new Config();
  38. $alipay_config = $config->alipay_config();
  39. $alipayNotify = new Notify($alipay_config);
  40. $verify_result = $alipayNotify->verifyNotify();
  41.  
  42. if($verify_result) {//验证成功
  43. //商户订单号
  44. $out_trade_no = $_POST['out_trade_no'];
  45. //支付宝交易号
  46. $trade_no = $_POST['trade_no'];
  47. //交易状态
  48. $trade_status = $_POST['trade_status'];
  49. if($_POST['trade_status'] == 'TRADE_FINISHED') {
  50. //判断该笔订单是否在商户网站中已经做过处理
  51. }
  52. else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
  53. //判断该笔订单是否在商户网站中已经做过处
  54. }
  55. echo "success"; //请不要修改或删除
  56. }
  57. else {
  58. //验证失败
  59. echo "fail";
  60. /* 调试用,写文本函数记录程序运行情况是否正常
  61. logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");*/
  62. }
  63. return $this->fetch('autoinvest');
  64. }
  65. public function return_url(){
  66. $config = new Config();
  67. $alipay_config = $config->alipay_config();
  68. $alipayNotify = new Notify($alipay_config);
  69. $verify_result = $alipayNotify->verifyReturn();
  70. if($verify_result) {//验证成功
  71. //商户订单号
  72. $out_trade_no = $_GET['out_trade_no'];
  73. //支付宝交易号
  74. $trade_no = $_GET['trade_no'];
  75. //交易状态
  76. $trade_status = $_GET['trade_status'];
  77. if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
  78. //判断该笔订单是否在商户网站中已经做过处理
  79. }
  80. else {
  81. echo "trade_status=".$_GET['trade_status'];
  82. }
  83.  
  84. }
  85. else {
  86. //验证失败
  87. //如要调试,请看alipay_notify.php页面的verifyReturn函数
  88.  
  89. }
  90.  
  91. }
  92. }
  1. model层的文件均是 支付宝 的类库 修改而成 里面没有大的变动 只是加上TP5model固定模式写法
  2.  
  3. 版权声明:本文为原创文章,转载请注明出处。

TP5 中实现支付宝支付 利用model层调用支付宝类库的更多相关文章

  1. Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝支付)

    最近一直在接触第三方,刚接入完支付宝的API做一下总结,个人能力薄弱有不对的地方望指教.  做的是一个小型电商项目,所以会接入第三方的支付和登入功能, 第一次接入第三方撸了很多官方文档. 进入主题, ...

  2. Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)

    上一篇写到支付宝的支付,这代码copy下来就能直接用了,   我写学习文档时会经常贴 官方参数文档的案例地址, 因为我觉得 请求参数,响应参数说明 官方文档整理的很好,毕竟官方不会误导大家. 我学一个 ...

  3. Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)

    上次分享了支付宝订单退款的代码,今天分享一下支付宝转账的操作.  现在是有一个余额提现的功能,本来是打算做提现到银行卡的,但是客户嫌麻烦不想注册银联的开放平台账户,就说先提现到支付宝就行,二期再做银行 ...

  4. asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付

    下完订单之后到支付宝付款,成功之后再返回来修改订单状态.由于只是测试,所以就没有真正的连接到支付宝,用的是一个模拟支付宝的程序 下载地址:支付宝模拟程序 这是一个vs2010的项目,本来网上找了一个模 ...

  5. APP支付宝支付接入

    1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...

  6. H5 网站支付宝支付(前端部分)包含微信浏览器中的处理方法。

    手机网站唤起支付宝支付: H5 网站实现支付宝支付是一个很常见的需求: 实现方式主要是在后台配置和预支付, 前端需要做的就是唤起 支付宝App 然后就可以输入密码支付. 这个其实难度很低, 主要就是在 ...

  7. ThinkPHP5.0 实现 app支付宝支付功能

    前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...

  8. yii2 支付宝支付教程 [ 2.0 版本 ]

    yii2 支付宝支付教程 [ 2.0 版本 ] 支付宝支付流程个人理解大致就这三步1.前台页面将支付信息数据通过立即支付按钮 ajax提交到订单处理层2.在订单处理层引用支付宝的接口 将支付数据写入 ...

  9. iOS - AliPay 支付宝支付

    1.支付宝支付申请 支付宝支付官方签约集成指引 支付宝APP支付官方集成指引 蚂蚁金服开放平台 1.1 支付宝 APP 支付申请步骤 APP 支付:APP 支付是商户通过在移动端应用 APP 中集成开 ...

随机推荐

  1. C语言中static关键字的用法

    C记得还是大一时学的,现在觉得好久没用了,又捧起来看看.今天刚看到有关static关键字,仔细地看了一遍<C和指针>这本书中的解释,现在觉得清楚多了. 首先,我们将static关键字,修饰 ...

  2. 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例

    一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...

  3. Head First设计模式之原型模式

    一.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式是一种比较简单的模式,也非常容易理解,实现一个接口,重写一个方法即完成了原型模式.在实际应用中,原型模式很少单独出现 ...

  4. 如何用Python在豆瓣中获取自己喜欢的TOP N电影信息

    一.什么是 Python Python (蟒蛇)是一门简单易学. 优雅健壮. 功能强大. 面向对象的解释型脚本语言.具有 20+ 年发展历史, 成熟稳定. 具有丰富和强大的类库支持日常应用. 1989 ...

  5. 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作

    前端自动化(三)   合并压缩css.压缩js.添加时间戳.打包上线操作 此文在前两篇基础上对比参考,会很方便理解 gulp.task("delete",function(){ r ...

  6. (笔记):组合and继承之访问限制(二)

    上篇简单介绍了public与private的基本使用.private的访问限制相对复杂.针对这种访问属性,我们会想到有没有一种方式可以无视这种属性.答案是:有.我们可以通过friend的方式(可以破解 ...

  7. mysql之数据操作

    一 介绍 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现 ...

  8. git命令记录

    1, clone 远程分支 git clone 命令默认的只会建立master分支,如果你想clone指定的某一远程分支(如:dev)的话,可以如下: A. 查看所有分支(包括隐藏的)  git br ...

  9. 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. ...

  10. 跟我一起读postgresql源码(十)——Executor(查询执行模块之——Scan节点(下))

    接前文跟我一起读postgresql源码(九)--Executor(查询执行模块之--Scan节点(上)) ,本篇把剩下的七个Scan节点结束掉. T_SubqueryScanState, T_Fun ...