最近做系统,需要实现在线支付功能,毫不犹豫,选择的是支付宝的接口支付功能。这里我用的是即时到帐的接口,具体实现的步骤如下: 一、下载支付宝接口包 下载地址: https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash 具体如何下载,我就不在罗嗦了~~ 很多人反映,用支付宝的接口到最后面会出现验证错误。其实,这里需要对接口程序进行一下改造。需要添加几个自定义函数。为了让大家以后避免出现同样的问题,我把我改造好的支付宝接口程序上传了( --> 猛戳这里下载附件 )。大家可以下载下来,解压后放到框架的 Vendor 目录中即可~ 二、重新整理接口包文件,这一步应该算是比较关键的(个人认为) 下载下来的接口包文件有很多语言的源码, 我们选择 create_direct_pay_by_user-PHP-UTF-8 这个名称的接口文件。里面包括如下文件: images 文件里是支付宝相关的一些标志的图片,我们暂不管他,lib 文件很重要,是整个接口的核心类文件; alipay.config.php 是相关参数的配置文件 alipayapi.php 是支付宝接口入口文件 notify_url.php 是服务器异步通知页面文件; return_url.php 是页面跳转同步通知文件; 在 ThinkPHP 的框架文件下,找到 Extend 进入,再进入 Vendor, 在 Vendor 文件夹下,新建文件夹 Alipay,把支付宝作为第三方类库引入。然后,复制支付宝接口文件包中 lib 文件里的所有文件。一共 4 个文件,如下: 现在对以上文件进行重命名, alipay_core.function.php 重命名为:Corefunction.php; alipay_md5.function.php 重命名为:Md5function.php; alipay_notify.class.php 重命名为:Notify.php; alipay_submit.class.php 重命名为:Submit.php; 然后,打开 Submit.php 文件,把以下代码去掉;
- 1require_once("alipay_core.function.php");2require_once("alipay_md5.function.php");
同样,打开 Notify.php 文件,把以下两段代码去掉
- 1require_once("alipay_core.function.php");2require_once("alipay_md5.function.php");
为什么要去掉以上两个文件中的这两段代码,因为在项目中调用接口文件的时候,我把所有 4 个核心文件都通过 vendor 来进行引入。所以,这不再需要导入。 到此,支付宝接口包相关核心类库的整理基本完成。现在开始在项目中调用; 三、在项目中调用支付宝接口 调用分两步: 1、在配置文件中 Conf/Config.php 文件中对支付宝相关参数进行配置:
- //支付宝配置参数'alipay_config'=>array('partner' =>'20********50',//这里是你在成功申请支付宝接口后获取到的PID;'key'=>'9t***********ie',//这里是你在成功申请支付宝接口后获取到的Key'sign_type'=>strtoupper('MD5'),'input_charset'=>strtolower('utf-8'),'cacert'=>getcwd().'\\cacert.pem','transport'=>'http',),//以上配置项,是从接口包中alipay.config.php 文件中复制过来,进行配置;'alipay' =>array(//这里是卖家的支付宝账号,也就是你申请接口时注册的支付宝账号'seller_email'=>[email protected],//这里是异步通知页面url,提交到项目的Pay控制器的notifyurl方法;'notify_url'=>'http://www.xxx.com/Pay/notifyurl',//这里是页面跳转通知url,提交到项目的Pay控制器的returnurl方法;'return_url'=>'http://www.xxx.com/Pay/returnurl',//支付成功跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参payed(已支付列表)'successpage'=>'User/myorder?ordtype=payed',//支付失败跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参unpay(未支付列表)'errorpage'=>'User/myorder?ordtype=unpay',
- ),
参考网址 : http://www.thinkphp.cn/code/240.html
来源: http://www.bubuko.com/infodetail-2077143.html