爱程序网

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

来源: 阅读:

目录

  1. 系列说明
  2. 开发环境
  3. 部署支付宝
  4. 支付请求
  5. 支付宝返回处理

系列说明

最近在帮朋友的系统安装支付模块(兑换网站积分),现在总结一些开发心得,希望对大家有用。这个系列会讲以下第三方支付平台的集成:

以后有更新其他平台也会写出来。

这次的支付系统是用来网站的积分充值。为了简化,这里采用的是1元RMB=1个网站积分的兑换。

这里,不会描述怎么申请支付平台的收款帐号。

开发环境

ThinkPHP 3.1.2 (我用的是标准版)

win7 + Apache2

mysql 5.1

这里说一下数据库的设计。

部署支付宝

我用的是支付宝担保交易(即时到账的门槛有点高=.=).先从支付宝网站下载担保交易的demo(要注意编码,我用的是utf-8)。

前往ThinkPHP目录下的Extend,找到Vendor目录(这个目录是第三方类库的存放目录,如果没有,手动创建一个,要标准版本里面是没有的),然后在Vendor下创建Alipay目录存在支付宝相关的文件。目录结构如下:

接着修改 alipay.config.php 文件:

支付请求

配置好支付宝后,就可以进行支付请求了。支付宝的示例代码很是详细,很多可以直接用。

首先,创建OrderAction.class.php 来处理订单相关的业务操作。

定义pay方法:

  /**  * 支付订单  */ public function pay(){ $this->checkLogin();  header('Content-type: text/html; charset=utf-8');  $id = args("id", 0);  $DAO = new OrderModel(); $order = $DAO->where("id=".$id)->find();  $error = ""; if(!isset($order)){ $error = "订单不存在"; }else if($order['status'] == 1){ $error = "此订单已经完成,无需再次支付!"; } else if($order['status'] == 2){ $error = "此订单已经取消,无法支付,请重新下单!"; } if($error != ""){ $this->_FAIL("系统错误",$error,$this->getErrorLinks()); return ; }  //支付宝 if($order['payment'] == 'alipay'){ $this->payWithAlipay($order); } else if($order['payment'] == 'ecpss'){ $this->payWithEcpss($order); } else if($order['payment'] == 'dinpay'){ $this->payWithDinpay($order); } }