免密支付(保付)

客户主动补缴未完成订单

1. 接口介绍

功能简述:

本接口用于商户对客户未完成的订单发起主动补缴交易请求。

约束条件:

1、已调用信用能力查询接口,canPay字段返回C
2、已调用未完成订单查询接口,获取到客户存在未完成订单

2. 请求地址

从商户APP跳转招行APP进行主动补缴,请参考:

http://openhome.cmbchina.com/PayNew/pay/doc/cell/app/SDKPayAPI

从H5或微信公众号进行主动补缴,请参考:

http://openhome.cmbchina.com/PayNew/pay/doc/cell/H5/OneCardPayAPI

从招行APP内的商户小程序进行主动补缴,请参考:

http://openhome.cmbchina.com/PayNew/pay/doc/cell/xcx/OneNetPay

3. 请求报文

请参考第2小节相关地址。应注意:支付接口上送的分行号、商户号、订单号、订单日期、订单金额,必须与“未完成订单交易查询接口”返回的信息一致。

4. 还款结果异步通知

对应第2小节接口,从商户APP跳转招行APP进行主动补缴,异步通知请参考:

http://openhome.cmbchina.com/PayNew/pay/doc/cell/app/SuccessPayResAPI

从H5或微信公众号进行主动补缴,异步通知请参考:

http://openhome.cmbchina.com/PayNew/pay/doc/cell/H5/SuccessPayAPI

从招行APP内的商户小程序进行主动补缴,异步通知请参考:

http://openhome.cmbchina.com/PayNew/pay/doc/cell/xcx/SuccessPayAPI

5. 还款交易状态查询

如果商户未收单还款结果异步通知或发生其他异常情况,需要调用查询接口确认交易状态,请参考以下查询接口。

5.1 约束条件:

1、已调用第2节主动补缴接口
2、查询结果仅代表主动补缴交易是否成功,不代表原免密保付交易的结果(原免密保付交易的状态可根据交易状态查询接口确认)

5.2 请求地址:

生产地址:https://merchserv.netpay.cmbchina.com/merchserv/QueryPayBackOrder.do

测试地址:http://paytest.cmburl.cn:801/netpayment_directlink_nosession/QueryPayBackOrder.do

5.3 请求报文:

报文的参数名: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
dateString(8)M商户订单日期,格式:yyyyMMdd20160623
orderNoString(32)M6到32位数字或字母9999000001
  • 请求示例

1)json报文组织:

{
    "version":"2.0",
    "charset":"UTF-8",
    "sign":"见签名处理章节",
    "signType":"SHA-256",
    "reqData":
    {
        "dateTime":"20201218162921",
        "branchNo":"0755",
        "merchantNo":"000054",
        "date":"20200905",
        "orderNo":"69579144761325"
    }
}

2)表单组织:

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

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

branchNo=0755&date=20200905&dateTime=20201218162921&merchantNo=000054&orderNo=69579144761325

5.4 响应报文:

参数类型(长度)必填描述示例
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

订单状态,

020:成功

029:未知状态

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

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

提示:

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

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

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

  • 响应示例

1)正常json报文组织:

{
    "version":"2.0",
    "charset":"UTF-8",
    "sign":"见签名处理章节",
    "signType":"SHA-256",
    "rspData":
    {
        "rspCode":"SUC0000",
        "rspMsg":"",
        "dateTime":"20201218162225",
        "branchNo":"0755",
        "merchantNo":"000054",
        "date":"20200905",
        "orderNo":"69579144761325",
        "bankSerialNo":"115TT09A030D5600000A",
        "currency":"10",
        "orderAmount":"5.6",
        "fee":"0.17",
        "bankDate":"20200905",
        "bankTime":"215626",
        "settleAmount":"5.6",
        "discountAmount":"0",
        "orderStatus":"020",
        "settleDate":"20200905",
        "settleTime":"215626",
        "cardType":"02",
        "merchantPara":"para1"
    }
}

2)异常json报文组织:

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

5.5 错误码:

错误码描述解决方案
MSS9900请求数据Json转换异常校验并修改请求报文数据
MSS3411签名错误验证签名是否正确,请参考签名示例
MSS3812无对应记录原交易失败或不存在,可重新请求交易
MSS9002版本号错误检查version参数
MSS9003签名算法错误检查signType参数
MSS1016分行号格式错误分行号格式应为4位数字
MSS1017商户号格式错误商户号格式应为6位数字
MSS1021订单号格式错误订单号格式应为6位/10位数字
MSS1022订单日期或者时间格式错误日期应为yyyyMMdd格式
时间应为yyyyMMddHHmmss格式
MSS8011主机无此商户定义检查商户数据是否正确
MSS2038非法商户:商户参数未定义检查商户数据是否正确
MSS1104请求时间延迟检查dateTime参数,不能早于服务器时间前30分钟
MSS3209该IP不允许发起此交易检查商户IP是否在商户管理系统配置的IP白名单内
MSS3826查询失败具体原因请参考报错信息