按商户日期查询已结账订单API

请求地址

生产环境
https://payment.ebank.cmbchina.com/NetPayment/BaseHttp.dll?QuerySettledOrderByMerchantDate

测试环境
http://121.15.180.66:801/NetPayment_dl/BaseHttp.dll?QuerySettledOrderByMerchantDate

请求报文

报文的参数名:jsonRequestData,参数值JSON格式见下表

参数 类型(长度) 必填 描述 示例
version String(3) M 接口版本号,固定为”1.0” 1.0
charset String(8) M 参数编码,固定为UTF-8 UTF-8
sign String M 报文签名,对reqData内的数据进行签名
signType String M 签名算法,固定为”SHA-256” SHA-256
reqData 请求参数
dateTime String(14) M
请求时间,商户发起该请求的当前时间,精确到秒
格式:yyyyMMddHHmmss
20160623120100
branchNo String(4) M 商户分行号,4位数字 0755
merchantNo String(6) M 商户号,6位数字 000054
beginDate String(8) M 开始日期,格式:yyyyMMdd 20160624
endDate String(8) M 结束日期,格式:yyyyMMdd 20160625
operatorNo String(4) M 操作员号,商户结账系统的操作员号 9999
nextKeyValue String(40) C
续传键值,长度只能为0或40;
首次查询填“空”;
后续查询,按应答报文中返回的nextKeyValue值原样传入.
HH00012016050309493316250308400000000010

请求示例

1.json报文组织:

{
   "version":"1.0",
   "charset":"UTF-8",
   "sign":"见签名处理章节",
   "signType":"SHA-256",
   "reqData":
       {
        "dateTime":"20160806131325",
        "branchNo":"0755",
        "merchantNo":"000054",
        "beginDate":"20160806",
        "endDate":"20160806",
        "operatorNo":"9999",
        "nextKeyValue":""
        }
  }
}

2.表单组织:

<form action="请求地址" method="post" >
    <input type="hidden" name="jsonRequestData" value='以上json字符串' />
</form>

3.待签名字符串示例(未包含支付密钥):
beginDate=20160806&branchNo=0755&dateTime=20160806131325&endDate=20160806&merchantNo=000054&nextKeyValue=&operatorNo=9999

响应报文

参数 类型(长度) 必填 描述 示例
version String(3) M 接口版本号,固定为”1.0” 1.0
charset String(8) M 参数编码,固定为“UTF-8” UTF-8
rspData 应答数据
rspCode String M
处理结果,SUC0000:请求处理成功
其他:请求处理失败
SUC0000
rspMsg String M 详细信息,请求处理失败时返回失败原因
dateTime String(14) M
响应时间,银行返回该数据的时间。
格式:yyyyMMddHHmmss
20160624121212
hasNext String(1) M
续传标志,Y:有续传(还有更多记录);
N:无续传(记录已返回完毕)。
Y
nextKeyValue String(40) C 续传键值,当hasNext=Y时必填
dataCount String M 返回条数,本次查询返回条数。 200
dataList String
记录数据,每笔记录一行,行之间以\r\n分隔。
第一行为表头;
从第二行起为数据记录;
行内的参数以逗号和`符号分隔(`为标准键盘1 左边键的字符),字段顺序与表头一致。
数据记录定义如下:
branchNo,`merchantNo,`date\r\n0755,`000054,`20160624
branchNo String(4) M 商户分行号,4位数字 0755
merchantNo String(6) M 商户号,6位数字 000054
date String(8) M 商户的订单日期,格式:yyyyMMdd 20160624
orderNo String(10) M 商户的订单号 9999000001
bankSerialNo String(20) M 银行的订单流水号 20160624
orderRefNo String(32) O 订单参考号
currency String(2) M 交易币种,固定为:“10” 10
orderAmount String M 订单金额格式:xxxx.xx 0.01
fee String M 费用金额,格式:xxxx.xx 0.01
acceptDate String(8) M 银行受理日期,格式:yyyyMMdd 20160624
acceptTime String(6) M 银行受理时间,格式:HHmmss 121201
settleAmount String M 结算金额,格式:xxxx.xx 0.01
discountAmount String(13) M
优惠金额,单位为元,精确到小数点后两位;
格式为:xxxx.xx元;无优惠则返回0.00
0.00
orderStatus String(3) M
订单状态,0:已结账
1:已撤销
2:部分结账
4:未结账
5:无效状态
6:未知状态
0
settleDate String(8) M 银行处理日期,格式:yyyyMMdd 20160624
settleTime String(6) M 银行处理时间,格式:HHmmss 121201
cardType String M
卡类型,02:一卡通
03:信用卡
07:他行卡
02

响应示例

●  正常json报文组织

{
    "version":"1.0",
    "charset":"utf-8",
    "rspData":{
        "rspCode":"SUC0000",
        "rspMsg":"",
        "dateTime":"20160825101406",
        "hasNext":"N",
        "nextKeyValue":"HH00012016080611290816280608000000000010",
        "dataCount":"2",
        "dataList":"branchNo,`merchantNo,`date,`orderNo,`bankSerialNo,`orderRefNo,`currency,`orderAmount,`fee,`acceptDate,`acceptTime,`settleAmount,`discountAmount,`orderStatus,`settleDate,`settleTime,`cardType\r\n0755,`000054,`20160806,`9999080601,`16280606400000000010,`,`10,`1000.00,`100.00,`20160806,`153313,`1000.00,`0.00,`0,`20160806,`153313,`02\r\n0755,`000054,`20160806,`9999136801,`16280608000000000010,`,`10,`0.19,`0.01,`20160806,`113535,`0.19,`0.00,`0,`20160806,`113535,`03"
    }
}

●  异常json报文组织

{
    "version":"1.0",
    "charset":"utf-8",
    "rspData":{
        "rspCode":"MSS1068",
        "rspMsg":"NP1068.结束日期格式错误"
    }
}

错误码

错误码 错误描述 解决方案
MSS9900 请求数据Json转换异常 校验并修改请求报文数据
MSS3411 签名错误 验证签名是否正确,请参考签名示例
MSS3806 查询失败 直连系统连接主机失败,稍后再试
MSS9901 编码格式错误 请校验编码是否为UTF-8
MSS3107 无效续传键值 续传键值长度不超过40位,初始不用填,续传填上一返回报文续传键值
MSS0008 超过最大并行请求处理数限制 直连系统业务繁忙,稍后再试
MSS1016 分行号格式错误 分行号格式应为4位数字
MSS1017 商户号格式错误 商户号格式应为6位数字
MSS1019 操作员格式错误
操作员格式应为4位数字
MSS1022 订单日期或者时间格式错误 日期应为yyyyMMdd格式,时间应为yyyyMMddHHmmss格式
MSS1025 日期对格式错误 起始日期应小于结束日期
MSS8011 主机无此商户定义 检查商户号、分行号是否正确

FAQ

Q1. 为什么我在做测试时,招行系统显示“主机无此商户定义?”

1、 商户支付接口4位分行号+6位商户号字段是否填写错误

2、 主机没有对该商户进行配置。

3、 察看支付请求地址,确认请求环境是否正确

Q2. 系统对时间戳dateTime参数有什么限制?

dateTime为商户发起请求报文的当前时间,格式yyyyMMddHHmmss,精确到秒,dateTime与当前时间跨度不能大于30分钟。

Q3. 为什么我的商户号不是6位的,而是比6位长的多?

找开户工作人员索取6位的商户号,这个很长的商户号不是用于一网通支付业务的。

Q4. 续传键值的用途是什么?应该如何使用续传键值?

对于批量查询的API,如果查询结果记录数较多,一次通讯可能无法返回所有的记录数,这个时候我们采用续传键值的方法实现翻页查询.

首次查询续传键值填空字符串,此时银行系统会从头开始返回查询结果.商户收到返回报文后,应当判断续传标志hasNext,如果hasNext=Y则时表示银行还有数据返回给商户,商户下次查询取前一返回报文的nextKeyValue值原样发送给银行,银行会从上一次返回结果处继续返回结果记录,直至hasNext=N表示查询完毕.

关于网站迁移公告


为提供更优质的开发技术支持,本网站已于2019年8月12日正式迁移至新域名http://openhome.cmbchina.com/paynew/pay/Home,敬请访问并收藏。原网站域名已停止更新维护,请以新网站提供的文档信息为准。

由此给您带来的不便,敬请谅解。


招商银行一网通支付技术支持小组

2019年8月12日