APP支付

查询单笔订单API

应用场景

本接口用于商户主动查询收款交易的处理状态。需要调用查询接口的情况包括:
1)当商户后台、网络、服务器等出现异常,或因为其他可能发生的未知原因,商户后台最终未接收到支付异步通知;

2)商户调用支付接口后,返回系统错误等情况。

请求地址

生产环境
https://merchserv.netpay.cmbchina.com/merchserv/BaseHttp.dll?QuerySingleOrder

测试环境
http://merchserv.cmburl.cn/merchserv/BaseHttp.dll?QuerySingleOrder

请求报文

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

参数类型(长度)必填描述示例
versionString(3)M接口版本号,固定为“2.0”2.0
charsetString(8)M参数编码,固定为“UTF-8”UTF-8
signStringM报文签名,对reqData内的数据进行签名
signTypeStringM签名算法,固定为“SHA-256”SHA-256
reqData请求数据
dateTimeString(14)M请求时间,商户发起该请求的当前时间,精确到秒。
格式:yyyyMMddHHmmss
20160623120100
branchNoString(4)M商户分行号,4位数字0755
merchantNoString(6)M商户号,6位数字000054
typeString(1)M查询类型,A:按银行订单流水号查询
B:按商户订单日期和订单号查询;
B
bankSerialNoString(20)C银行订单流水号,type=A时必填
dateString(8)M商户订单日期,格式:yyyyMMdd20160623
orderNoString(32)Ctype=B时必填商户订单号9999000001
operatorNoStringO商户结账系统的操作员号9999


请求示例

1.json报文组织:

{
    "version":"2.0",
    "charset":"UTF-8",
    "sign":"见签名处理章节",
    "signType":"SHA-256",
    "reqData":
    {
        "dateTime":"20160623120100",
        "branchNo":"0755",
        "merchantNo":"000054",
        "type":"B",
        "bankSerialNo":"16250327200000000020",
        "date":"20160503",
        "orderNo":"9999030401",
        "operatorNo":"9999"
    }
}

2.表单组织:

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

3.待签名字符串示例(未包含支付密钥):

bankSerialNo=16250327200000000020&branchNo=0755&date=20160503&dateTime=20160825140816&merchantNo=000054&operatorNo=9999&orderNo=9999030401&type=B


响应报文

参数类型(长度)必填描述示例
versionString(3)M接口版本号,固定为“2.0”2.0
charsetString(8)M参数编码,固定为“UTF-8”UTF-8
signStringM报文签名,使用商户支付密钥对rspData内的数据进行验签
signTypeStringM签名算法,固定为”SHA-256”SHA-256
rspData请求数据
rspCodeStringM

处理结果,SUC0000:请求处理成功(不能仅通过该字段判断订单成功

其他:请求处理失败

SUC0000
rspMsgStringC详细信息,请求处理失败时返回错误描述
dateTimeString(14)M响应时间,银行返回该数据的时间
格式:yyyyMMddHHmmss
20160624121212
branchNoString(4)M商户分行号,4位数字0755
merchantNoString(6)M商户号,6位数字000054
dateString(8)M商户订单日期,格式:yyyyMMdd20160624
orderNoString(32)M商户订单号9999000001
bankSerialNoString(20)M银行的订单流水号16250327200000000020
currencyString(2)M交易币种,固定为:“10”10
orderAmountStringM订单金额,格式:xxxx.xx0.01
feeStringM费用金额,格式:xxxx.xx0.01
bankDateString(8)M银行受理日期,格式:yyyyMMdd20160624
bankTimeString(6)M银行受理时间,格式:HHmmss121201
settleAmountStringM结算金额,格式:xxxx.xx0.01
discountAmountString(14)O优惠金额,格式:xxxx.xx
无优惠时返回0.00
0.00
orderStatusString(3)M

订单状态,

0:已结帐

1:已撤销

2:部分结账

4:未结帐

6:未知状态/订单失败

7:冻结交易—冻结金额已经全部结账

8:冻结交易,冻结金额只结账了一部分

0代表终态
settleDateString(8)M银行处理日期,格式:yyyyMMdd20160624
settleTimeString(6)M银行处理时间,格式:HHmmss121201
cardTypeStringM卡类型,02:本行借记卡;
03:本行贷记卡;
08:他行借记卡;

09:他行贷记卡;

10:本行数币钱包支付;

11:他行数币钱包支付;


merchantParaString(100)O商户自定义参数,商户在支付接口中传送的merchantPara参数,超过100字节自动截断。
以下字段联系招行配置控制参数后返回(默认不返回):
uniqueUserIDString(30)C支付用户ID,由身份证+姓名生成(推荐使用)UQwanCunLbp6cl1RbDFODrhLrAa48=
expandUserIDString(30)C一网通用户ID,由一网通ID生成(招行一网通用户的身份标识)EUfirwdVQVKhffJmjQhMod0dS6GYY=

提示:

1)查询接口返回的结果中,rspCode=‘SUC0000’且orderStatus=‘0’,代表该笔订单处理成功且已经结账。

2)如果收到orderStatus=‘6’,请继续查询。若轮询时长超出“expireTimeSpan(订单过期时间跨度)+1分钟”,orderStatus仍返回‘6’,则联机可先判断订单支付失败,通过与招行对账确定终态。

3)商户侧应具备T+1对账的机制,来识别处理T日可能出现的差错交易。

响应示例

1.正常json报文组织:

{
    "version":"2.0",
    "charset":"utf-8",
    "sign":"见签名处理章节",
    "signType":"SHA-256",
    "rspData":{
        "rspCode":"SUC0000",
        "rspMsg":"",
        "dateTime":"20160825140752",
        "branchNo":"0755",
        "merchantNo":"000054",
        "date":"20160503",
        "orderNo":"9999030401",
        "bankSerialNo":"16250327200000000020",
        "currency":"10",
        "orderAmount":"0.01",
        "fee":"0.00",
        "bankDate":"20160503",
        "bankTime":"205620",
        "settleAmount":"0.01",
        "discountAmount":"0.00",
        "orderStatus":"0",
        "settleDate":"20160503",
        "settleTime":"205620",
        "cardType":"03",
        "merchantPara":"para1"
    }
}

2.异常json报文组织:

{
    "version":"1.0",
    "charset":"UTF-8",
    "sign":"见签名处理章节",
    "signType":"SHA-256",
    "rspData":{
        "rspCode":"MSS1068",
        "rspMsg":"NP1068.结束日期格式错误"
    }
}


错误码

错误码描述解决方案
MSS9900请求数据Json转换异常校验并修改请求报文数据
MSS3411签名错误验证签名是否正确,请参考签名示例
MSS3812无对应记录原交易不存在。可继续查询,超过轮询时长后(建议至少设置“expireTimeSpan+5分钟”以上),可当作失败。
MSS3808查询失败直连系统连接主机失败,稍后再试
MSS9002版本号错误检查version参数
MSS9003签名算法错误检查signType参数
MSS3100无效查询类型查询类型值应为A/B
MSS1016分行号格式错误分行号格式应为4位数字
MSS1017商户号格式错误商户号格式应为6位数字
MSS1019操作员格式错误操作员格式应为4位数字
MSS1021订单号格式错误订单号格式应为6位/10位数字
MSS1022订单日期或者时间格式错误日期应为yyyyMMdd格式
时间应为yyyyMMddHHmmss格式
MSS1103订单参考号格式错误订单参考号格式应为20位数字
MSS8011主机无此商户定义检查商户数据是否正确
MSS2038非法商户:商户参数未定义检查商户数据是否正确
MSS1104请求时间延迟检查dateTime参数,不能早于服务器时间前30分钟
MSS1040银行流水号格式错误检查bankSerialNo字段,因为20位
MSS3209该IP不允许发起此交易检查商户IP是否在商户管理系统配置的IP白名单内
MSS3803查询单笔订单失败具体原因请参考报错信息