网站首页 语言 会计 互联网计算机 医学 学历 职场 文艺体育 范文
当前位置:学识谷 > 计算机 > php语言

ThinkPHP实现支付宝接口功能实例

栏目: php语言 / 发布于: / 人气:6.48K

ThinkPHP实现支付宝接口功能的方法,实例讲述了支付宝接口的下载及二次开发方法,以及对应的ThinkPHP开发技巧,需要的朋友可以参考下.

ThinkPHP实现支付宝接口功能实例

最近做系统,需要实现在线支付功能,毫不犹豫,选择的是支付宝的接口支付功能,这里我用的是即时到帐的接口,具体实现的步骤如下:

  一、下载支付宝接口包

下载地址:

具体如何下载,我就不在罗嗦了~~

  二、重新整理接口包文件,这一步应该算是比较关键的(个人认为),下载下来的接口包文件有很多语言的源码

我们选择 create_direct_pay_by_user-PHP-UTF-8 这个名称的接口文件,里面包括如下文件:

images文件里是支付宝相关的一些标志的图片,我们暂不管他,lib文件很重要,是整个接口的核心类文件;

是相关参数的配置文件

是支付宝接口入口文件

notify_ 是服务器异步通知页面文件;

return_ 是页面跳转同步通知文件;

在ThinkPHP的框架文件下,找到Extend 进入,再进入Vendor,在Vendor文件夹下,新建文件夹Alipay,把支付宝作为第三方类库引入,然后,复制支付宝接口文件包中lib文件里的所有文件,一共4个文件,如下:

现在对以上文件进行重命名.

alipay_重命名为:;

alipay_重命名为:;

alipay_重命名为:;

alipay_重命名为:;

然后,打开文件,把以下代码去掉;

require_once("alipay_");

require_once("alipay_");同样,打开文件,把以下两段代码去掉require_once("alipay_");

require_once("alipay_");为什么要去掉以上两个文件中的这两段代码,因为在项目中调用接口文件的时候,我把所有4个核心文件都通过vendor来进行引入。所以,这不再需要导入。

到此,支付宝接口包相关核心类库的整理基本完成。现在开始在项目中调用;

  三、在项目中调用支付宝接口

调用分两步:

1、在配置文件中Conf/文件中对支付宝相关参数进行配置

复制代码 代码如下:

//支付宝配置参数

'alipay_config'=>array(

'partner' =>'20********50', //这里是你在成功申请支付宝接口后获取到的PID;

'key'=>'9t***********ie',//这里是你在成功申请支付宝接口后获取到的Key

'sign_type'=>strtoupper('MD5'),

'input_charset'=> strtolower('utf-8'),

'cacert'=> getcwd().'',

'transport'=> 'http',

),

//以上配置项,是从接口包中 文件中复制过来,进行配置;

'alipay' =>array(

//这里是卖家的支付宝账号,也就是你申请接口时注册的支付宝账号

'seller_email'=>&#',

//这里是异步通知页面url,提交到项目的Pay控制器的notifyurl方法;

'notify_url'=>'',

//这里是页面跳转通知url,提交到项目的Pay控制器的returnurl方法;

'return_url'=>'',

//支付成功跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参payed(已支付列表)

'successpage'=>'User/myorder?ordtype=payed',

//支付失败跳转到的页面,我这里跳转到项目的User控制器,myorder方法,并传参unpay(未支付列表)

'errorpage'=>'User/myorder?ordtype=unpay',

),

  2、新建一个PayAction控制器代码如下

复制代码 代码如下:

<?php

class PayAction extends Action{

//在类初始化方法中,引入相关类库

public function _initialize() {

vendor('function');

vendor('5function');

vendor('fy');

vendor('it');

}

//doalipay方法

public function doalipay(){

// require_once("");

// require_once("lib/alipay_");

//这里我们通过TP的C函数把配置项参数读出,赋给$alipay_config;

$alipay_config=C('alipay_config');

$payment_type = "1"; //支付类型 //必填,不能修改

$notify_url = C('fy_url'); //服务器异步通知页面路径

$return_url = C('rn_url'); //页面跳转同步通知页面路径

$seller_email = C('er_email');//卖家支付宝帐户必填

$out_trade_no = $_POST['trade_no'];//商户订单号 通过支付页面的表单进行传递,注意要唯一!

$subject = $_POST['ordsubject']; //订单名称 //必填 通过支付页面的表单进行传递

$total_fee = $_POST['ordtotal_fee']; //付款金额 //必填 通过支付页面的表单进行传递

$body = $_POST['ordbody']; //订单描述 通过支付页面的表单进行传递

$show_url = $_POST['ordshow_url']; //商品展示地址 通过支付页面的表单进行传递

$anti_phishing_key = "";//防钓鱼时间戳 //若要使用请调用类文件submit中的query_timestamp函数

$exter_invoke_ip = get_client_ip(); //客户端的IP地址

//构造要请求的参数数组,无需改动

$parameter = array(

"service" => "create_direct_pay_by_user",

"partner" => trim($alipay_config['partner']),

"payment_type" => $payment_type,