我决定用一个很NB的标题--让ThinkPHP和支付宝天人合一

浏览:4337 发布日期:2013/05/18 分类:技术分享 关键字: 支付宝
ThinkPHP 支付宝扩展 双向接口及应用案例
接口其实没什么技术含量,但是想起当初自己要用的时候还是整得挺费劲的,思路和水平都跟不上,而且一直到现在都似乎没有人发布过更好的方案。姑且把自己用的放出来。要用的童鞋添加下业务逻辑就可以使用,也让需要的童鞋有个参考吧。
代码注释很完整,所以这里不详述。就是一个整合了支付宝原接口的扩展类,一个ThinkPHP控制器(接口使用的参考案例)。
我的应用环境都是URL优化的,如果 xxx.com/index.php/aaa/bbb等未隐藏入口文件的童鞋使用有问题请自行修改,并找解决办法。ThinkPHP的扩展性真的很好,最近又用行为扩展的方式,实现了 默认语言 '/xxx/xxx',其它语言 '/其它语言/xxx/xxx' 的URL优化,好HAPPY;还有用动态配置的方式实现前台和后台使用不同的URL模式等等。

接口部分代码<?php
// +----------------------------------------------------------------------
// | ThinkPHP Alipay 支付宝 扩展类 默认担保交易
// +----------------------------------------------------------------------
// | 本接口诞生目的是将支付宝与用ThinkPHP写的项目进行订单的付款和发货信息同步对接
// +----------------------------------------------------------------------
// | 没有什么技术含量,只是将支付宝本身的接口中独立的类和函数全部调整到本类中
// +----------------------------------------------------------------------
// | 所以要问我与支付宝本身的接口有什么不同的话,那我只能说,就是独立的交叉引用类和一个整合类的区别而已,甚至绝大部分注释都是原接口的,JUST COPY AND PASTE!
// | 只有,第508行,是基于项目实际经验的修改,修改说明看 507行 注释,本着低碳环保的精神,这里不重复
// +----------------------------------------------------------------------
// | Author: lttest <不要来找我@天朝.com>
// +----------------------------------------------------------------------
// $Version$  V0.01    2012-03-10
class Alipay extends Think {
    protected $alipay_config = array(
        //合作身份者id,以2088开头的16位纯数字
        'partner'     => '8888888888888888',
        //安全检验码,以数字和字母组成的32位字符
        'key'         => 'zctx3n19s2l1cdrwbsb5n9dbccdou52o',
        //签约支付宝账号或卖家支付宝帐户
        'seller_email'=> 'xxxxxxxx@hotmail.com',
        //页面跳转同步通知页面路径,要用 http://格式的完整路径,不允许加?id=123这类自定义参数
        //return_url的域名不能写成http://localhost/trade_create_by_buyer_php_utf8/return_url.php ,否则会导致return_url执行无效
        'return_url'  => 'http://127.0.0.1/ali/return_url.php',
        //服务器异步通知页面路径,要用 http://格式的完整路径,不允许加?id=123这类自定义参数
        'notify_url'  => 'http://www.xxx.com/trade_create_by_buyer_php_utf8/notify_url.php',
        //签名方式 不需修改
        'sign_type'   => 'MD5',
        //字符编码格式 目前支持 gbk 或 utf-8
        'input_charset'=>'utf-8',
        //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
        'transport'   => 'https'
    );
注释说是默认担保交易,实际示例类中用了标准双接口,直接套用的TPer请把 do_pay(1) 改成 do_pay('')就是担保交易。
完整代码请下载附件

附件 Lib.rar ( 10.05 KB 下载:518 次 )

最佳答案
评论( 相关
后面还有条评论,点击查看>>