接入必读
- 接入接口分为支付类接口、退款类接口、交易对账类接口。
- 支付类接口包括统一下单、交易查询、交易结果后台通知、交易结果前台通知等接口,这些接口都是必须要接入的。
- 退款类接口包括退款、退款结果查询、退款结果通知等接口,这些接口都是必须要接入的。
- 交易对账类接口主要是对账的下载,通过申请SFTP下载对账单等。
- 接口请求报文包括设置HTTP请求头、公共请求参数、业务请求参数等。
公共部分
环境请求地址
HTTP请求响应头
设置HTTP请求或响应头信息:
- Content-Type:text/plain;charset=utf-8
- signature:签名值
报文规范
- 报文格式:使用JSON作为数据交互的格式。
- 字符编码:统一采用UTF-8字符编码。
- 签名算法:用基于非对称密钥的SHA256-RSA的数字签名算法(SHA256WithRSA)。
- 签名要求:请求和响应均需要校验签名。
- 提交方式:采用POST方法提交。
安全机制
要求商户对请求报文进行签名,并在收到商户请求后进行签名的验证。如果签名验证不通过,将会拒绝处理请求。在应答的HTTP头和异步通知请求的HTTP头中包括签名,要求商户必须验证签名,以确保回调是由平台发送,如果商户未正确验证签名,会存在潜在的风险,商户自行承担因此而产生的所有损失。
报文签名机制
1)将请求报文的所有字段作为待签名串,不需要排序。
2)使用商户私钥对待签名串进行SHA256WithRSA签名,并对签名结果进行Base64编码得到签名值。
3)将签名值放到HTTP请求头中,请求头name为signature。request.setHeader("signature","xxxxx...");
报文验签机制
商户在收到平台响应和异步通知请求,需要验证签名,以确保是由平台发送的。步骤如下:
1)从HTTP应答头或者异步通知请求头中,获取签名值,签名值的字段名为signature,response.getHeader("signature");
2)将获取的应答报文体或者异步通知请求体作为待验证签名串。
3)使用平台公钥对待验证签名串和签名值进行SHA256WithRSA签名验证。
报文数据类型定义
String(m,n):代表可变长度型字符串类型,长度从m到n可变。
String(m):代表固定长度型字符串类型。
Number(m,n):代表带精度数值类型,m代表数值位数长度为1~m,n代表小数点后位数。
Number(m):代表整型数值类型,m代表数值位数长度为1~m。
提示
m、n都为整型数值。
符号约定
在下文中出现的具体报文格式描述中,“出现要求”列包含的值的含义如下表所示:
符号 | 请求方约束 | 服务方约束 |
---|---|---|
M | 必须包含该域 | 必须校验该域是否存在和内容的合法性 |
C | 如果条件符合则必须包含该域 | 当条件满足时,必须校验该域是否存在当该域存在时,必须检查其内容的合法性 |
O | 该域可选 | 当该域存在时,必须检查其内容的合法性 |