客户主动补缴未完成订单
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格式见下表
参数 | 类型(长度) | 必填 | 描述 | 示例 |
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 |
date | String(8) | M | 商户订单日期,格式:yyyyMMdd | 20160623 |
orderNo | String(32) | M | 6到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 响应报文:
参数 | 类型(长度) | 必填 | 描述 | 示例 |
version | String(3) | M | 接口版本号,固定为“2.0” | 2.0 |
charset | String(8) | M | 参数编码,固定为“UTF-8” | UTF-8 |
sign | String | M | 报文签名,使用商户支付密钥对rspData内的数据进行验签 | |
signType | String | M | 签名算法,固定为”SHA-256” | SHA-256 |
rspData | 请求数据 | |||
rspCode | String | M | 处理结果,SUC0000:请求处理成功(不能仅通过该字段判断订单成功) 其他:请求处理失败 | SUC0000 |
rspMsg | String | C | 详细信息,请求处理失败时返回错误描述 | |
dateTime | String(14) | M | 响应时间,银行返回该数据的时间 格式:yyyyMMddHHmmss | 20160624121212 |
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 | 银行的订单流水号 | 16250327200000000020 |
currency | String(2) | M | 交易币种,固定为:“10” | 10 |
orderAmount | String | M | 订单金额,格式:xxxx.xx | 0.01 |
fee | String | M | 费用金额,格式:xxxx.xx | 0.01 |
bankDate | String(8) | M | 银行受理日期,格式:yyyyMMdd | 20160624 |
bankTime | String(6) | M | 银行受理时间,格式:HHmmss | 121201 |
settleAmount | String | M | 结算金额,格式:xxxx.xx | 0.01 |
discountAmount | String(14) | O | 优惠金额,格式:xxxx.xx 无优惠时返回0.00 | 0.00 |
orderStatus | String(3) | M | 订单状态, 020:成功 029:未知状态 | 020代表终态 |
settleDate | String(8) | M | 银行处理日期,格式:yyyyMMdd | 20160624 |
settleTime | String(6) | M | 银行处理时间,格式:HHmmss | 121201 |
cardType | String | M | 卡类型,02:本行借记卡; 03:本行贷记卡; 08:他行借记卡; 09:他行贷记卡 | |
merchantPara | String(100) | O | 商户自定义参数,商户在支付接口中传送的merchantPara参数,超过100字节自动截断。 | |
以下字段联系招行配置控制参数后返回(默认不返回): | ||||
uniqueUserID | String(30) | C | 支付用户ID,由身份证+姓名生成(推荐使用) | UQwanCunLbp6cl1RbDFODrhLrAa48= |
expandUserID | String(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 | 查询失败 | 具体原因请参考报错信息 |