3.1 请求报文#
请求报文由两部分组成:请求报文头和请求报文体。其中请求报文头信息在报文头(head. 节点内,请求报文体信息 在报文体(body. 节点内。
报文头是每个交易都相同的。请求报文头信息的填写标准请参看JSON规范示例。
报文体根据每个交易的接口定义而各不相同。请求报文体的定义请参看“业务交易接口”章节。需按照每个交易的接 口定义组装和解析请求报文体。
客户端请求报文上送时,POST提交四个参数:merchantNo=平台代码;jsonEnc=报文密文;keyEnc=会话密钥密 文;sign=报文签名,其中merchantNo 为Easyloon为合作平台分配的商户号明文,jsonEnc参数的内容就是整个报文加 密以后的十六进制字符串,keyEnc参数为报文加密会话密钥的密文,sign参数的内容是本次报文的签名。
服务器端收到请求后按照HTTPS的方式获取参数后,按如下步骤处理:
步骤1:使用解密会话密钥
步骤2:对 密文报文解密,得到报文明文;
步骤3:验证签名,签名通过后在解析报文内容。报文加密、签名和校验方式请参看“加密及签名规范”章节交易报文遵循JSON规范。示例:
{
"head": {
"version": "1.0.0",
//--报文版本号
"tradeType": "00",
//--00请求报文
"tradeTime": "1551341750",
//--请求时间,10位unix时间戳
"tradeCode": "tp1001",
//–请求交易代码
"language": "cn"
//–语言
},
"body": {
//…
}
}
*注意:业务交易接口中定义的字段,无论其值是否为空都需要上送字段的json标签。
3.2 响应报文#
交易应答报文由两部分组成:应答报文头和应答报文体。其中应答报文头信息在报文头(head)节点内,应答报文体 信息在报文体(body)节点内。
报文头是每个交易都相同的。应答报文头信息的填写标准请参看JSON规范示例。
报文体根据每个交易的接口定义而各不相同。应答报文体的定义请参看"交易报文接口”章节。需按照每个交易的接口 定义组装和解析应答报文体。
交易成功时的应答报文,报文头的respCode为S00000,respDesc为"交易成功”,此时报文体(body)节点根据 实际业务需要为空也可以不为空。
交易错误时的应答报文,错误码和错误信息填写在报文头的respCode(返回码)和respDesc(返回信息描述)域 中;报文体(body)节点为空。
服务器端响应报文返回时,将商户号、报文密文、会话密钥和签名以标准json字符串返回 {"merchantNo”:"",jsonEnc":"","keyEnc":"","sign":""} ,然后将字符串的字节流写入http的返回对象。客户端收到服务器端的响应时将HTTP服务方返回的字节流按照相应格式的字符串进行报文和摘要参数的获取,参数获 取后,先要进行摘要校验,校验通过后在解析报文内容。
报文摘要生成和校验方式请参看"加密及签名规范”章节。交易报文遵循JSON规范。示例:
{
"head": {
"version": "1.0.0",
//--报文版本号
"tradeType": "01",
//--01响应报文
"tradeTime": "1551341750",
//--响应时间,10位unix时间戳
"tradeCode": "tp3001",
//--对应请求的交易代码
"respCode": "S00000",
//--请求返回码
"respDesc": "请求成功"
//--请求返回描述
},
"body": {
//…
}
}