本帖最后由 路人甲 于 2015-1-24 10:29 编辑 [DC] 通用支付 API 调用指南
版本号:v1.0.1
------------------------------------------------------------------------------------------------------------------------------------------------------
1、文档说明
为其他第三方 DISCUZ X!提供在线支付调用接口,从而不必再自己开发在线支付功能。用户可统一管理支付接口参数的设置。
面向具有一定的开发 DISCUZ X插件能力的开发、维护和管理人员。
2、调用说明
在需要使用在线支付(RMB支付)时,引用核心调用文件
(payment.lib.class.php)。
第三方插件引用代码
require_once DISCUZ_ROOT.'./source/plugin/dc_pay/payment.lib.class.php';
或者
require_once '../ dc_pay/payment.lib.class.php';
引用时注意文件路径
3、文件详解
文件代码存在两个类:PayHook、PayMent。
- 3.1、PayHook支付服务注册类(static)
该静态类主要用于支付服务的注册、卸载。
核心作用是在用户支付完成后,在向
服务器发送已公益免费通知时,根据服
务注册的信息通知第三方插件处理业务。(详见 4、回调说明)
$phr = array(
'plugin'=>'dc_paydemo', //插件标识符
'include'=>'paydemo.class.php', //注册类文件
'class'=>'paydemo', //注册类名称
'return'=>'doreturn', //注册页面跳转同步通知方法
'notify'=>'donotify', //注册
服务器异步通知方法
);
PayHook::Register($phr); //注册
注册服务项建议放置在插件的安装文件中,另建议在插件的安装检测文
件(check.php)中检测是否已安装本插件,否则在注册服务时会出错。 PayHook::UnRegister('dc_paydemo'); //卸载
卸载服务项建议放置在插件的卸载文件中
- 3.2、PayMent支付服务核心类(dynamic)
1、__construct构造函数
参数
参数 说明 必须
plugin 第三方插件标识符 必
如:$pay = new PayMent(‘dc_paydemo’);
2、GetPayType获取可用支付类型
如:$pay-> GetPayType ();
返回:
array(‘alipay’,’tenpay’)
3、GetPayInfo获取指定支付类型的名称及 logo
参数
参数 说明 必须
pt 支付类型标识码,如:alipay 必
如:$pay-> GetPayInfo(‘alipay’);
返回:
array(
‘title’=>’支付宝’ ,
’logo’=>’

’
)
4、SetPayType设置支付类型
参数
参数 说明 必须
pt 支付类型标识码,如:alipay 必
可多次设置支付类型
如:$pay-> SetPayType(‘alipay’); $pay-> SetPayType(‘tenpay);
5、SetOrder设置订单
参数
参数 说明 必须
orderid 订单 ID,可留空 非
price 总价格,可保留两位小数 必
subject 订单名称 必
body 订单描述 非
showurl 商品页面 非
如:$pay-> SetOrder(
‘2011112313’,
’10.00’,
‘商品标题’,
‘商品描述’,
‘
http://www.xxxx.com/show.php?id=xxx’
);
返回:订单号
注:建议 orderid留空,留空会自动创建一个新订单号,使用返回的订单号
写入到贵方插件的订单系统中。
6、GetPayUrl获取支付链接
如:$pay-> GetPayUrl();
返回:支付链接数组,具体由 SetPayType决定
如:array(
‘alipay’=>’http://xxxxxxxxx’,
‘tenpay’=>’http://xxxxxxxxx’
)
7、GetPayForm获取支付表单
参数
参数 说明 必须
button_name 表单按钮名称 非
button_style 表单按钮样式 非
method 表单提交方法 GET OR POST 非
如:$pay-> GetPayForm(‘提交’,’width:80px;’,’get’);
返回:支付表单数组,具体由 SetPayType决定
如:array(
‘alipay’=>’表单代码’,
‘tenpay’=>’代码’
)
4、公益免费通知回调
1、回调流程
支付平台 → 本支付API插件 → 实际调用插件
该回调需使用前置注册的支付服务信息,通过该注册信息通知实际需要
使用的插件,完成该笔公益免费的业务处理。
如果未注册服务,则本支付 API即无法正确通知实际插件,造成该笔付
款无法处理业务。
2、回调处理演示代码(paydemo.class.php)
class paydemo{
public function donotify($orderid){ //支付成功后,
服务器异步通知,$orderid为订单号
///////////业务处理/////////////
//不得输出任何字符,不得跳转页面,不得终止代码执行
//根据返回的订单号,处理该订单的信息
//
}
public function doreturn($orderid){//支付成功后,页面跳转同步通知,$orderid为订单号
///////////业务处理/////////////
//业务处理完成后,请跳转到一个支付成功的页面
//dheader('location:
http://www.xxx.com/plugin.php?id=dc_paydemo:payok');
global $_G;
dheader('location:'.$_G['siteurl'].'plugin.php?id=dc_paydemo:payok');
}
}
3、更多代码,详见
站长窝VIP群文件共享提供的演示插件代码(dc_paydemo)
[backcolor=rgb(255, 0, 255)]
站长窝实际应用演示效果图:[/backcolor]
[backcolor=rgb(255, 0, 255)]
[DC] 通用支付API 调用指南适用于:[/backcolor]
[DC]VIP中心 专业版v1.2.5 DZ建站学习研究分享
http://bbs.zhanzhangwo.com/thread-11322-1-1.html
(出处:
站长窝)
支付宝分享用户组 商业版--------下载地址
http://bbs.zhanzhangwo.com/thread-5928-1-1.html
(出处:
站长窝)