最近作系统,须要实如今线支付功能,坚决果断,选择的是支付宝的接口支付功能。这里我用的是即时到账的接口,具体实现的步骤以下:
1、下载支付宝接口包
下载地址:
https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash
具体如何下载,我就不在罗嗦了~~
不少人反映,用支付宝的接口到最后面会出现验证错误。其实,这里须要对接口程序进行一下改造。须要添加几个自定义函数。为了让你们之后避免出现一样的问题,我把我改造好的支付宝接口程序上传了( --> 猛戳这里下载附件 )。你们能够下载下来,解压后放到框架的Vendor目录中便可~
2、从新整理接口包文件,这一步应该算是比较关键的(我的认为)
下载下来的接口包文件有不少语言的源码,
咱们选择 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文件,把如下代码去掉; php
1 require_once("alipay_core.function.php"); 2 require_once("alipay_md5.function.php");
一样,打开Notify.php文件,把如下两段代码去掉html
1 require_once("alipay_core.function.php"); 2 require_once("alipay_md5.function.php");
为何要去掉以上两个文件中的这两段代码,由于在项目中调用接口文件的时候,我把全部4个核心文件都经过vendor来进行引入。因此,这再也不须要导入。
到此,支付宝接口包相关核心类库的整理基本完成。如今开始在项目中调用;
3、在项目中调用支付宝接口
调用分两步:
一、在配置文件中Conf/Config.php文件中对支付宝相关参数进行配置: thinkphp
//支付宝配置参数 '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'=>'pay@xxx.com', //这里是异步通知页面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 api