一、文档说明

1. 写在前面2. 错误代码表

二、安全认证与签名

1. 签名方法2. AES加解密

三、结算公司和资金余额

1. 资金池余额查询2. 税源地公司信息查询

四、实时发放

1. 接口使用流程2. 实时发放数据上报3. 查询实时发放数据4. 实时发放回调通知5. 申请实时发放业务账单6. 查询实时发放业务账单申请状态7. 申请实时发放业务回单

五、业务级错误代码

1. 实时发放接口错误代码2. 数据格式正则校验失败code

六、枚举类型

1. 证件类型2. 支付宝支付交易失败code3. 交易状态4. 导出状态
4. 实时发放回调通知
  • 系统会根据业务异步通知地址,通过 POST 请求的形式将支付结果通知到合作方平台系统。

  • 当理账狮SaaS接收到上报订单后,会把相关处理结果发送给商户,商户需要接收处理,并返回应答。

  • 通知url必须为直接可访问的url,可以携带GET参数。 示例:notifyUrl:“https://xxx.com/notify”

  • 接口正常处理完通知后必须输出 http 响应 200 且包体body 为 “success”。(不包含引号且小写)

  • 如果理账狮SaaS收到商户的应答不是 “success” ,理账狮SaaS认为通知失败,理账狮SaaS会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但理账狮SaaS不保证通知最终能成功 通知频率为:10s/30s/1h/2h/8h,共5次

  • 注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。

推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

约定规范

  1. 通知采用 POST 方式发送,消息体格式为 application/json
  2. 请求包体的业务参数 content 经过 AES加密,请参考 AES加解密

通知请求参数

参数 类型(长度) 是否必填 描述
content string 不可空 业务参数集加密后的字符串
以下为解密后的JSON业务参数
outerTradeNo string(32) 不可空 商户业务订单号
empNum string(32) 可空 自定义员工编号 商户系统中用户唯一编号
empName string(32) 不可空 收款人户名
empPhone string(11) 不可空 收款人手机号 税务局报税要求必填)`
licenseType string(10) 不可空 收款人证件类型
licenseId string(32) 不可空 收款人证件号码
settleType string(10) 不可空 交易类型
payAccount string(32) 不可空 收款账号,交易类型为支付宝时,为支付宝账号
bankName string(32) 可空 收款人银行名称 (无需细到支行名称)
payAmount Number(12) 不可空 交易金额(实际到账金额)
tradeStatus string(10) 不可空 交易状态]
tradeTime string(32) 可空 交易时间
frontLogNo string(32) 可空 银行交易流水号
tradeFailCode string(10) 可空 交易失败code

响应示例

正常

{
  "data": {
      "content":"AES加密后的Base64字符串"
  }
}
对应解密后的JSON格式:

{
  "outerTradeNo": "f2cb9c91f3c3637fb41ea5b647836dfe",
  "empName": "aloqog7355",
  "empPhone": "18801270000",
  "licenseType": "ID_CARD",
  "licenseId": "990809198508017900",
  "settleType": "alipay",
  "payAccount": "aloqog7355@sandbox.com",
  "positionName": "音视频服务费",
  "payAmount": 10.01,
  "tradeStatus": "success",
  "tradeTime": "2020-11-11 11:11:11",
  "frontLogNo": "232748927498434343"
}