按银行日期查询已结账订单API
请求地址
生产环境
https://merchserv.netpay.cmbchina.com/merchserv/BaseHttp.dll?QuerySettledOrderByBankDate
测试环境
http://merchserv.cmburl.cn/merchserv/BaseHttp.dll?QuerySettledOrderByBankDate
请求报文
报文的参数名:jsonRequestData,参数值JSON格式见下表
参数名称 | JSON键值 | 类型(长度) | 必填 | 描述 | 示例 |
接口版本号 | version | String(3) | M | 固定为”2.0” | 2.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 | 20160625 | 9999 |
操作员号 | operatorNo | String | M | 商户结账系统的操作员号 | 9999 |
续传键值 | nextKeyValue | String(40) | C | 长度只能为0或40; 首次查询填“空”; 后续查询,按应答报文中返回的nextKeyValue值原样传入。 |
请求示例
1.json报文组织:
{ "version":"1.0", "charset":"UTF-8", "sign":"见签名处理章节", "signType":"SHA-256", "reqData":{ "dateTime":"20161118153749", "branchNo":"0755", "merchantNo":"000054", "beginDate":"20160502", "endDate":"20160503", "operatorNo":"9999", "nextKeyValue":"" } }
2.表单组织:
<form action="请求地址" method="post" > <input type="hidden" name="jsonRequestData" value='以上json字符串' /> <input type="hidden" name="charset" value='utf-8' /> </form>
3.待签名字符串示例(未包含支付密钥):
beginDate=20160502&branchNo=0755&dateTime=20161118153749&endDate=20160503&merchantNo=000054&nextKeyValue=&operatorNo=9999
响应报文
参数名称 | JSON键值 | 类型(长度) | 必填 | 描述 | 示例 |
接口版本号 | version | String(3) | M | 固定为”1.0” | 1.0 |
参数编码 | charset | String(8) | M | 固定为“UTF-8” | UTF-8 |
参数编码 | sign | String | M | 报文签名,使用商户支付密钥对rspData内的数据进行验签 | |
参数编码 | signType | String | M | 签名算法,固定为”SHA-256” | SHA-256 |
应答数据 | rsqData | ||||
处理结果 | 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\n 0755,`000054,`20160624" | |
分行号 | branchNo | String(4) | M | 商户分行号,4位数字 | 0755 |
商户号 | merchantNo | String(6) | M | 商户号,6位数字 | 000054 |
订单日期 | date | String(8) | M | 商户的订单日期,格式:yyyyMMdd | 20160624 |
订单号 | orderNo | String(32) | 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(14) | 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:信用卡 08:他行借记卡 09:他行信用卡 10:本行数币钱包支付 11:他行数币钱包支付 | 02 |
商户自定义参数 | merchantPara | String(100) | O | 商户在支付接口中传送的merchantPara参数,超过100字节自动截断。 |
提示:
1)查询接口返回的结果中,rspCode=‘SUC0000’且orderStatus=‘0’,代表该笔订单处理成功且已经结账。
2)如果收到orderStatus=‘6’,请继续查询。若轮询时长超出“expireTimeSpan(订单过期时间跨度)+1分钟”,orderStatus仍返回‘6’,则联机可先判断订单支付失败。
3)商户侧应具备T+1对账的机制,来识别处理T日可能出现的差错交易。
响应示例
1.正常json报文组织:
{ "version":"1.0", "charset":"utf-8", "rspData":{ "rspCode":"SUC0000", "rspMsg":"", "dateTime":"20161118154120", "hasNext":"N", "nextKeyValue":"HH00012016050309524716250378400000000010", "dataCount":"3", "dataList":"branchNo,`merchantNo,`date,`orderNo,`bankSerialNo,`orderRefNo,`currency,`orderAmount,`fee,`acceptDate,`acceptTime,`settleAmount,`discountAmount,`orderStatus,`settleDate,`settleTime,`cardType,`merchantPara\r\n 0755,`000054,`20160503,`9999000003,`16250311000000000010,`,`10,`0.01,`5.00,`20160503,`113201,`0.01,`0.00,`0,`20160503,`113201,`02,`para1\r\n 0755,`000054,`20160503,`9999000005,`16250324400000000010,`,`10,`0.01,`5.00,`20160503,`110728,`0.01,`0.00,`0,`20160503,`110728,`02,`para1\r\n 0755,`000054,`20160503,`9999000059,`16250378400000000010,`,`10,`3.00,`5.00,`20160503,`095247,`3.00,`0.00,`0,`20160503,`095247,`02,`para1 " } }
2.异常jason报文组织
{ "version":"1.0", "charset":"UTF-8", "rspData":{ "rspCode":"MSS1068", "rspMsg":"NP1068.结束日期格式错误" } }
错误码
错误码 | 描述 | 解决方案 |
MSS9002 | 版本号错误 | Version固定为“1.0” |
MSS9003 | 签名算法错误 | 目前只支持“SHA-256” |
MSS9900 | 请求数据Json转换异常 | 校验并修改请求报文数据 |
MSS3411 | 签名错误 | 验证签名是否正确,请参考签名示例 |
USR0008 | 系统业务繁忙,稍后再试 | 超过最大并行请求处理数限制 |
MSS1016 | 分行号格式错误 | 分行号格式应为4位数字 |
MSS1017 | 商户号格式错误 | 操作员格式应为6位数字 |
MSS1067 | 起始日期格式不正确 | 格式应为yyyyMMdd |
MSS1068 | 结束日期格式不正确 | 格式应为yyyyMMdd |
MSS1025 | 日期对格式错误 | 起始日期应小于结束日期 |
MSS8011 | 主机无此商户定义 | 检查商户号、分行号是否正确 |
MSS2038 | 非法参数:商户参数未定义 | 检查商户数据是否正确 |
MSS3806 | 查询失败 | 具体失败原因请参考报错信息 |