Skip to content

交易接口规范

交易报文规范

交易报文遵循JSON规范。所有的wx_开头变量为微信独有变量,al_开头变量为支付宝独有变量

请求报文

示例:

java
{
    "head": {
        "merchantId": "473053110001",
        "tranCode": "OP1001",
        "tranFlowid": "473053110001257114517510167557",
        "tranTime": "20240930131015",
        "tranType": "01",
        "version": "2.0.0"
    },
    "body": {
        "body": "这是Body",
        "notifyUrl": "http://10.10.10.103:12222/notify",
        "orderId": "O47305311000180460965094775509",
        "payChannel": "00",
        "payMode": "00",
        "spbillCreatIp": "127.0.0.1",
        "subject": "这是Subject",
        "totalAmt": "0.01"
    }
}
  • 请求报文由两部分组成:请求报文头(信息在head节点内)和请求报文体(信息在body节点内)。
  • 报文头是每个交易都相同的。请求报文头信息的填写标准请参看“交易公共报文”章节。
  • 根据每个交易接口定义的不同,请求报文体的定义请参看“业务交易接口”章节。需按照每个交易接口的定义组装请求报文。
  • 客户端请求报文上送时,HTTP POST提交五个参数:
java
merchant_id=商户号;
msg_enc=报文密文(16进制表示);
key_enc=会话密钥密文(16进制表示);
sign=报文签名(16进制表示);
mer_order_id=商户订单号(可与请求报文头的tranflowid一致);

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

注意:业务交易接口中定义的字段,无论其值是否为空都需要上送字段的json标签。

响应报文

示例:

java
{
    "body": {
        "codeImgUrl":"http://10.10.10.12:8094/onePayService/getcode/qr.do?uuid=weixin://wxpay/bizpayurl?pr=Nf547CJ",
        "codeUrl": "weixin://wxpay/bizpayurl?pr=Nf547CJ",
        "jytOrderId": "OP2409301310159185091003",
        "orderNo": "O47305311000136192679194745320",
        "tranState": "12"
    },
    "head": {
        "merchantId": "473053110001",
        "respCode": "S0000000",
        "respDesc": "交易受理成功",
        "tranCode": "OP1001",
        "tranFlowid": "473053110001266125044793346867",
        "tranTime": "20240930131015",
        "tranType": "02",
        "version": "2.0.0"
    }
}
  • 交易应答报文由两部分组成:应答报文头(信息在head节点内)和应答报文体(信息在body节点内)。
  • 报文头是每个交易都相同的。应答报文头信息的填写标准请参看“交易公共报文”章节。
  • 根据每个交易接口定义的不同,应答报文体的定义请参看“业务交易接口”章节。需按照每个交易接口的定义解析应答报文。
  • 响应报文Http返回的字符串格式,请参看“交易公共报文/http参数格式”章节
  • 服务器端响应报文返回时,处理步骤:
    • 将商户号、报文密文、会话密钥和签名解析出来,分隔符“&”,
    • 解密会话密钥
    • 对密文报文解密,得到报文明文
    • 验证签名,签名通过后在解析报文内容
    • 报文解密、验签方式请参看“加密及签名规范”章节。

接口状态码说明

类型状态码状态描述
支付类10交易已受理
11交易成功
12交易处理中
13交易失败
退款类30退款已受理
31退款成功
32退款处理中
33退款失败
34待审核
35退款到原卡失败
36退款拒绝

交易结果判断逻辑

  • 交易成功时的应答报文:报文头的respCode为S0000000,respMsg为“交易成功”,此时报文体(body)节点根据实际业务需要为空也可以不为空。

  • 交易错误时的应答报文:错误码和错误信息填写在报文头的respCode(返回码)和respMsg(返回信息描述)域中;报文体(body)节点为空。

  • 对于返回码respCode为S0000000的交易,状态码为11或31时,则认为请求成功,其他交易状态,请具体查看对应的respCode以及respDesc来明确具体的返回描述。