转自:http://www.zioor.com/view/1668

在此感谢那些爱奉献的人...

给客户开发网站时需要用到支付宝在线付款功能,小云到thinkphp网站溜了一圈,代码是有,可是都不怎么全,因此这篇文章诞生了!
本篇文章讲解了三个类的实现,担保交易、即时到账、双功能收款(该功能支付宝已下线,可给之前已申请过的站长短时间内的使用)
类文件在附件类,请自行下载文章主要讲解如何使用本类
文件下载后解压得到 PayBuy 将本文件夹放到 Think\Library\Vendor 目录下
然后在 config.php中配置一下信息

'ALIPAY_PARTNER'            =>     '8888888888888888',//合作身份者id,以2088开头的16位纯数字
'ALIPAY_SELLER_EMAIL'        =>     'xxxxxxxxxx@163.com',//收款账号
'ALIPAY_KEY'                =>     'xxxxxxxxxxxxxxxxxxxxxxxx',//安全检验码,以数字和字母组成的32位

在  function.php  构造付款函数
第一个付款订单生成函数:

function pay($data){$data['expenses']    = isset($data['expenses']) && $data['expenses'] ? $data['expenses'] : "0.00";$data['express']    = isset($data['express']) && $data['express'] ? $data['express'] : 'EXPRESS';$data['payment']    = isset($data['payment']) && $data['payment'] ? $data['payment'] : 'BUYER_PAY';Vendor('PayBuy.AliPay');     $pay = new AliPay(); //实例化$pay->partner             =    C('ALIPAY_PARTNER');        //合作身份者id,以2088开头的16位纯数字$pay->seller_email         =    C('ALIPAY_SELLER_EMAIL');    //收款账号$pay->paykey             =    C('ALIPAY_KEY');            //安全检验码,以数字和字母组成的32位字符$pay->notify_url        =    $data['notify_url'];        //服务器异步通知页面路径,不带参数$pay->return_url        =    $data['return_url'];        //服务器同步通知页面路径,不带参数$pay->orderid            =    $data['orderid'];            //必填,订单id$pay->subject            =    $data['subject'];            //必填商品名称$pay->price                =    $data['price'];                //必填,价格$pay->expenses            =    $data['expenses'];            //必填,运费$pay->express            =    $data['express'];            //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)$pay->payment            =    $data['payment'];            //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)$pay->message            =    $data['message'];            //订单描述$pay->show_url            =    $data['show_url'];            //商品展示地址$pay->receive_name        =    $data['receive_name'];        //收货人姓名$pay->receive_address    =    $data['receive_address'];    //收货地址$pay->receive_zip        =    $data['receive_zip'];        //邮编$pay->receive_phone        =    $data['receive_phone'];        //收货人座机$pay->receive_mobile    =    $data['receive_mobile'];    //收货人手机$pay->waitword            =    $data['waitword'];            //收货人手机return $pay->AliPay();
}

第二个检查订单状态函数:

function checkpayorder($data=''){$alipay_config['partner']        = C('ALIPAY_PARTNER');$alipay_config['seller_email']    = C('ALIPAY_SELLER_EMAIL');$alipay_config['key']            = C('ALIPAY_KEY');$alipay_config['sign_type']    = strtoupper('MD5');$alipay_config['input_charset']= strtolower('utf-8');$alipay_config['transport']    = 'http';Vendor('PayBuy.AliPay');$alipayNotify = new AlipayNotify($alipay_config);$verify_result = $alipayNotify->verifyReturn();if($verify_result) {$out_trade_no = $data['out_trade_no'];$trade_no = $data['trade_no'];$trade_status = $data['trade_status'];return $data['trade_status'];}else {return "error";}
}

第三函数集:(这几个函数是支付宝自带函数,请直接复制粘贴到 function.php 内)

/*支付宝接口函数开始*/function createLinkstring($para) {$arg  = "";while (list ($key, $val) = each ($para)) {$arg.=$key."=".$val."&";}//去掉最后一个&字符$arg = substr($arg,0,count($arg)-2);//如果存在转义字符,那么去掉转义if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}return $arg;}function createLinkstringUrlencode($para) {$arg  = "";while (list ($key, $val) = each ($para)) {$arg.=$key."=".urlencode($val)."&";}//去掉最后一个&字符$arg = substr($arg,0,count($arg)-2);//如果存在转义字符,那么去掉转义if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}return $arg;}function paraFilter($para) {$para_filter = array();while (list ($key, $val) = each ($para)) {if($key == "sign" || $key == "sign_type" || $val == "")continue;else    $para_filter[$key] = $para[$key];}return $para_filter;}function argSort($para) {ksort($para);reset($para);return $para;}function logResult($word='') {$fp = fopen("log.txt","a");flock($fp, LOCK_EX) ;fwrite($fp,"执行日期:".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");flock($fp, LOCK_UN);fclose($fp);}function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {if (trim($input_charset) != '') {$url = $url."_input_charset=".$input_charset;}$curl = curl_init($url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果curl_setopt($curl,CURLOPT_POST,true); // post传输数据curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据$responseText = curl_exec($curl);//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容curl_close($curl);return $responseText;}function getHttpResponseGET($url,$cacert_url) {$curl = curl_init($url);curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址$responseText = curl_exec($curl);//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容curl_close($curl);return $responseText;}function charsetEncode($input,$_output_charset ,$_input_charset) {$output = "";if(!isset($_output_charset) )$_output_charset  = $_input_charset;if($_input_charset == $_output_charset || $input ==null ) {$output = $input;} elseif (function_exists("mb_convert_encoding")) {$output = mb_convert_encoding($input,$_output_charset,$_input_charset);} elseif(function_exists("iconv")) {$output = iconv($_input_charset,$_output_charset,$input);} else die("sorry, you have no libs support for charset change.");return $output;}function charsetDecode($input,$_input_charset ,$_output_charset) {$output = "";if(!isset($_input_charset) )$_input_charset  = $_input_charset ;if($_input_charset == $_output_charset || $input ==null ) {$output = $input;} elseif (function_exists("mb_convert_encoding")) {$output = mb_convert_encoding($input,$_output_charset,$_input_charset);} elseif(function_exists("iconv")) {$output = iconv($_input_charset,$_output_charset,$input);} else die("sorry, you have no libs support for charset changes.");return $output;}function md5Sign($prestr, $key) {$prestr = $prestr . $key;return md5($prestr);}function md5Verify($prestr, $sign, $key) {$prestr = $prestr . $key;$mysgin = md5($prestr);if($mysgin == $sign) {return true;}else {return false;}}
/*支付宝接口函数结束*/<span style="color:#ff0000;">
</span>

完成以上步骤之后 恭喜你,你可以在网站任何位置 通过  pay($data) 来调用支付宝付款了!

最近在做支付功能,看到好点的文章就转载喽!

记录 “Thinkphp 3.2及以上版本实现支付宝担保交易、即时到账接口类、函数和使用方法”相关推荐

  1. Thinkphp 3.2及以上版本实现支付宝担保交易、即时到账接口类、函数和使用方法

    给客户开发网站时需要用到支付宝在线付款功能,小云到thinkphp网站溜了一圈,代码是有,可是都不怎么全,因此这篇文章诞生了! 本篇文章讲解了三个类的实现,担保交易.即时到账.双功能收款(该功能支付宝 ...

  2. 支付宝担保交易接口 php,ThinkPHP实现支付宝接口功能(担保交易)

    ThinkPHP实现支付宝接口功能(担保交易),(即时交易)@托米,已经有人发过了.这个不是我写的,是在csdn上看到的,顺便转载过来,有什么问题,可以到原作者博客提问http://blog.csdn ...

  3. ThinkPHP整合支付宝担保交易

    ThinkPHP整合支付宝担保交易本代码参考大神 http://www.thinkphp.cn/code/240.html 的思路 1.登陆支付宝后台,下载担保交易的集成包. 2.下载完成后的文件说明 ...

  4. thinkphp整合支付宝担保交易接口

    第一步: 先下载支付宝担保交易的demo(php utf-8). 第二步: 首先在项目Lib目录下简历自己的lib库,比如thlib: 将alipay_notify.class.php.alipay_ ...

  5. ThinkPHP 3.2 支付宝即时到账接口开发

    前言: 一.支付流程 构造请求参数 向支付宝网关发送请求 生成支付宝页面 支付宝交易结果 二.构建支付类 1.官方即时到账文档地址: https://doc.open.alipay.com/doc2/ ...

  6. 支付宝担保交易接口 php,2015 thinkphp支付宝担宝交易接口源码示例

    先到支付宝官网下载,担宝交易程序,然后集成thinkphp class PayAction extends Action{ public function doalipay(){ require_on ...

  7. 【网站支付PHP篇】thinkPHP集成支付宝支付(担保交易)

    目录 系列说明 开发环境 部署支付宝 支付请求 支付宝返回处理 系列说明 最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家有用.这个系列会讲以下第三方支付平台的集成: ...

  8. ThinkPHP集成支付宝担保支付

    概述 支付宝担保支付 ThinkPHP集成支付宝担保交易 1.准备工作 2.自定义Action类 3.代码下载 概述 现在的网站功能越来越全乎了,很多网站都需要做支付功能,而且很多大平台都提供了各式各 ...

  9. php lts版本,官宣:ThinkPHP发布首个LTS版本

    ### 2018 年 10 月 22 日 发布 `5.1`版本自2018年元旦正式发布以来,在团队和社区的共同努力下,经过近十个月的迭代更新,共计发布了26个版本(更新记录[查看这里](https:/ ...

最新文章

  1. 卷积学习与图像识别的技术发展
  2. ECSHOP头部调用会员的消费积分
  3. 4、自定义部分国家语言代号对照表
  4. 报告解读丨细数万亿企服市场发展史,揭秘行业发展新趋势
  5. 离散化+树状数组求逆序数
  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 6丨统计各专业学生人数【难度中等】
  7. 拜登政府撤销对Tik Tok和Wechat禁令 启动对外国应用审查
  8. poj 2182 给你每个数前面有几个数比他小让你输出次数的编号
  9. mysql数据库优化面试redis持久化_【大厂面试06期】谈一谈你对Redis持久化的理解?...
  10. 新书 | Kevin P. Murphy《概率机器学习:进阶》PDF开放下载
  11. Android 上专为视屏直播打造的轻量级弹幕库(100 多 kb)
  12. 天锐绿盾加密软件支持什么操作系统?
  13. 【转载】20款密码破解工具
  14. 【有源汇上下界可行流】ACM-ICPC 2018 沈阳赛区网络预赛 - F - Fantastic Graph
  15. Kafka ETL 之后,我们将如何定义新一代实时数据集成解决方案?
  16. 大乘起信论别记(本)
  17. java-net-php-python-jsp网络工程师在线测试系统计算机毕业设计程序
  18. STM32输出PWM波形以及实现LED呼吸灯
  19. 发力区块链,百度险中求胜 |链捕手
  20. PHP如何开发订单通知短信。

热门文章

  1. 服务器报错c.a.druid.pool.DruidAbstractDataSource : discard long time none received connection.
  2. 海湾gst5000协议号_海湾JB-QG/T-GST5000型火灾报警控制器(联动型)01
  3. uni-app 微信小程序 支付宝小程序(alipay) 百度小程序(baidu),预览pdf(链接和base64) 及下载(仅微信),window.open uni.downloadFile
  4. 铭瑄主板u盘启动装系统
  5. 车床数控系统的主轴转速浮动避震功能
  6. MYSQLDUMP参数详解 --all-databases
  7. IOS清除APP角标
  8. 个人见解:从瀑布到敏捷——漫画解读软件开发模式变迁史
  9. 【Python游戏】pygame模块制作飞机大战、贪吃蛇(多模式)含源码
  10. java代码画樱花飘落_樱花的季节,教大家用canvas画出飞舞的樱花树