Appearance
交易接口规范
交易报文规范
交易报文遵循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来明确具体的返回描述。