Skip to content

交易接口规范

交易报文规范

交易报文遵循JSON规范。

请求报文

示例:

java
{
    "body":{

    },
    "head":{
        "merchantId":"451015200007",
        "tranCode":"TC1002",
        "tranDate":"20240930",
        "tranFlowid":"451015200007799290507578646821",
        "tranTime":"091752",
        "tranType":"01",
        "version":"1.1.0"

}
  • 请求报文由两部分组成:请求报文头(信息在head节点内)和请求报文体(信息在body节点内)。
  • 报文头是每个交易都相同的。请求报文头信息的填写标准请参看“交易公共报文”章节。
  • 根据每个交易接口定义的不同,请求报文体的定义请参看“业务交易接口”章节。需按照每个交易接口的定义组装请求报文。
  • 客户端请求报文上送时,HTTP POST提交五个参数:
java
merchant_id=商户号;
msg_enc=报文密文(16进制表示);
key_enc=会话密钥密文(16进制表示);
sign=报文签名(16进制表示);
mer_order_id=商户订单号(可与请求报文头的tranflowid一致);

服务器端收到请求后按照HTTP的方式获取参数后,按如下步骤处理:
步骤1:使用解密会话密钥
步骤2:对密文报文解密,得到报文明文;
步骤3:验证签名,签名通过后在解析报文内容。
报文加密、签名方式请参看“加密及签名规范”章节

响应报文

示例:

java
{
    "body":{

    },
    "head":{
        "merchantId":"451015200007",
        "respCode":"S0000000",
        "respDesc":"交易成功",
        "tranCode":"TC1002",
        "tranDate":"20240930",
        "tranFlowid":"451015200007799290507578646821",
        "tranTime":"091752",
        "tranType":"02",
        "version":"1.1.0"
    }     
}
  • 交易应答报文由两部分组成:应答报文头(信息在head节点内)和应答报文体(信息在body节点内)。
  • 报文头是每个交易都相同的。应答报文头信息的填写标准请参看“交易公共报文”章节。
  • 根据每个交易接口定义的不同,应答报文体的定义请参看“业务交易接口”章节。需按照每个交易接口的定义解析应答报文。
  • 响应报文Http返回的字符串格式,请参看“交易公共报文/http参数格式”章节
  • 服务器端响应报文返回时,处理步骤:
    • 将商户号、报文密文、会话密钥和签名解析出来,分隔符“&”,
    • 解密会话密钥
    • 对密文报文解密,得到报文明文
    • 验证签名,签名通过后在解析报文内容
    • 报文解密、验签方式请参看“加密及签名规范”章节。

接口响应码说明

  • 对于交易接口和查询接口respCode的意义是不同的
  • 业务接口中respCode与报文体内tranState直接代表交易是否成功(respCode=S0000000且tranState=01代表成功)
  • 查询交易中,只代表查询的结果被正常返回,具体查询的交易是否成功还需要看报文体中的描述。

业务接口

respCode代表交易成功是否成功,对于代付交易,成功又分为同步交易成功和异步交易受理成功(同步或异步成功由后端渠道决定),所以需要通过tranState状态进一步区分。

举例说明:

  1. 交易成功,respCode返回 S0000000 , tranState 为01;(交易结果成功)
  2. 交易受理成功,respCode返回 S0000000, tranState 为00;(交易受理成功,但交易结果尚未明确)

查询接口

respCode代表查询的动作是否成功,tranRespCode代表被查询的交易的是否成功,但是交易成功又分为同步交易成功和异步交易受理成功,所以需要通过tranState状态进一步区分。

出现tranState=00时,表示交易已受理,还未拿到终态,可当成处理中。

举例说明:

  1. 查询交易失败,如:查询条件错误,respCode返回一个错误码, tranRespCode 为空, tranState 为空。
  2. 查询交易成功,订单交易成功,respCode返回 S0000000, tranRespCode 为S0000000, tranState 为01 (交易结果成功)。
  3. 查询交易成功,订单交易受理成功,respCode返回 S0000000, tranRespCode 为S0000000, tranState 为00 (交易受理成功,但交易结果尚未明确)。
  4. 查询交易成功,订单交易失败,respCode返回 S0000000, tranRespCode 为错误码,tranState 为03。

交易结果判断逻辑

  • 交易接口(TC1002)响应判断:
head->respCodebody->tranRespCode判断结果
S000000001代付成功
E开头非E000000003代付失败
其他都为处理中
  • 查询接口
head->respCodebody->tranRespCodebody->tranState判断结果
非S0000000任意任意本次查询失败,请再次查询
S0000000S000000001代付成功
S0000000E开头非E000000003代付失败
其它为处理中,不要修改原交易状态