自定义支付接口

通过接口版本与控制器机制,为整个平台或单个客户定制"一套专属于自己"的接口规范。适用于有定制开发能力的服务商团队。

接口版本号控制器类签名验签参数转换ThinkPHP

1 新建接口方案

在 管理后台 > 系统设置 > 接口设置 栏目里新增一条记录。

  • 接口版本号:用来区分不同的支付接口方案。例如:v1.0.1
  • 控制器名称:支付接口方案对应的控制器类名。例如:Defaultversion
注意:版本号、控制器名称不可重复。

2 新建控制器类文件

/Application/Version/Controller/ 目录下新建 DefaultversionController.class.php 文件,继承于 VersionController 父类:

namespace Version\Controller;
use Think\Controller;
class DefaultversionController extends VersionController{
}

3 定义全局变量

参数名数据类型说明
parameterarray数组提交时必填参数
encryptedFields数组参与加密验签的参数
protected $parameterarray = ['version','memberid','orderid','amount','orderdatetime','notifyurl','paytype','signmethod','sign'];
protected $encryptedFields = ['version','memberid','orderid','amount','orderdatetime','notifyurl','paytype','signmethod'];

4 实现核心方法

方法名作用参数返回值
CheckParameterCorrect检查收到的参数是否合法用户提交的所有参数合法返回 TRUE;不合法返回 FALSE,并将错误信息写入 $this->returnJson["msg"]
GetUserId通过通道用户提交过来的商户编号获取系统内用户 ID用户提交的所有参数系统内的用户 ID
GetSecretKey通过通道用户 ID 获取用户密钥数据用户 ID用户的密钥数据
DecryptData解密用户提交过来的加密参数所有参数、用户密钥数据解密后的所有用户提交参数
CheckSign验证数据签名所有参数、解密后参数、密钥数据签名合法返回 TRUE;不合法返回 FALSE 并写入错误信息
FormatData把自定义接口参数转换成系统标准参数用户提交的所有参数系统标准参数数组
ReturnData把系统返回的标准参数转换成自定义接口的自定义参数系统返回的标准参数自定义支付接口参数
callbackurl实现自定义的页面跳转回调业务逻辑
notifyurl实现自定义的异步回调业务逻辑,并返回收到的响应数据收到的响应数据

典型处理顺序:CheckParameterCorrect → GetUserId → GetSecretKey → DecryptData → CheckSign → FormatData → 业务受理;回调时经 ReturnData 还原为自定义接口参数,并交付 callbackurl / notifyurl 处理。

5 交易请求 · 系统标准参数

参数名说明
userid用户 ID
amount交易金额,单位:元
orderid用户提交的交易订单号
callbackurl页面跳转回调地址
notifyurl异步回调地址
orderdatetime交易订单提交时间
tongdao通道分类编码
bankcode银行编码
version自定义支付接口版本号
extend扩展字段
other回调时原样返回的数据,数据类型为数组

6 回调 · 系统标准参数

参数名说明
userid用户 ID
amount交易金额,单位:元
orderid用户提交的交易订单号
amount_trade交易手续费
datetime交易时间
tongdao通道分类编码
version自定义支付接口版本号
other回调时原样返回的数据,数据类型为数组
提示:如您的团队熟悉 ThinkPHP 控制器开发,可在此基础上快速扩展任意风格的支付接口方案。