收款(非轮询)
1. 接口介绍
功能简述:
本接口用于非轮询商户对已签订免密支付协议的用户进行收款。非轮询模式下,调用该接口后,招行仅对签约扣款卡发起扣款,同步返回扣款结果(成功、失败、未知/处理中)。
1、 用户已签订免密支付协议
2、 商户在招行系统配置为“非轮询扣款”模式
正常流程:
1、 报文合性校验
2、 报文参数校验
3、 同步返回请求处理成功或交易已收妥
异常流程:
1、 请求源IP不在IP白单中
2、 报文验签失败
3、 报文参数非法
4、 限额超限
5、 用户已关闭免密支付功能
2. 请求地址
测试环境URL:
https://cmbchinab2b.bas.cmburl.cn/CmbBank_B2B/UI/NetPay/DoBusiness.ashx
生产环境URL:
https://b2b.cmbchina.com/CmbBank_B2B/UI/NetPay/DoBusiness.ashx
3. 请求报文
请求报文参数 | 类型(长度) | 必填 | 描述 | 示例 |
---|---|---|---|---|
charset | String(8) | M | 编码格式,固定为UTF-8 | UTF-8 |
jsonRequestData | String | M | json格式的请求参数,详见jsonRequestData定义 |
jsonRequestData参数定义
参数名 | 类型(长度) | 必填 | 描述 | 示例 |
---|---|---|---|---|
version | String(3) | M | 固定为1.0 | 1.0 |
sign | String | M | 使用商户支付密钥对reqData内的数据进行签名 | |
signType | String | M | 固定为SHA-256 | SHA-256 |
reqData | 请求数据 | |||
dateTime | String(14) | M | 请求时间,商户发起该请求的时间,精确到秒。 格式: yyyyMMddHHmmss | 20160623101430 |
txCode | String | M | 交易码,固定为CMSK | CMSK |
branchNo | String(4) | M | 商户分行号,4位数字 | 0755 |
merchantNo | String(6) | M | 商户号,6位数字 | 002346 |
merchantSerialNo | String(32) | M | 商户交易请求流水号,全局唯一 | 2016062310143088 |
agrNo | String(32) | M | 客户签约的协议号 | 201606238888888 |
currency | String(3) | M | 币种,目前只支持人民币,固定为 RMB | RMB |
amount | String(20) | M | 订单金额,以分为单位,如2000表示20.00元 | 2000 |
trnAbs | String(50) | M | 交易摘要,简要描述交易的关键信息 | 科兴停车费 |
noticeUrl | String(100) | M | 结果异步通知URL (地址仅支持http 80端口和https 443端口),用于银行异步发送交易结果 | http://notice.xxabc.com |
subMerchantNo | String(30) | O | 二级商户编码,必须为数字或英文字母 | |
subMerchantName | String(100) | O | 二级商户名称 | |
subMerchantTPCode | String(7) | O | 二级商户类别编码,必须为数字或英文字母 | |
subMerchantTPName | String(100) | O | 二级商户类别名称 |
请求示例:
json报文组织:
{ "version":"1.0", "sign":"见签名处理章节", "signType":"SHA-256", "reqData":{ "dateTime":"20160623101430", "txCode":"CMSK", "branchNo":"0755", "merchantNo":"002346", "merchantSerialNo":"2016062310143088", "agrNo":"201606238888888", "currency":"RMB", "amount":"2000", "trnAbs":"科兴停车费", "noticeUrl":"http://notice.xxabc.com" } }
表单组织:
<form action="请求地址" method="post" > <input type="hidden" name="jsonRequestData" value='以上json字符串' /> <input type="hidden" name="charset" value='UTF-8' /> </form>
待签名字符串(未包含支付密钥):
agrNo=201606238888888&amount=2000&branchNo=0755¤cy=RMB&dateTime=20160623101430&merchantNo=002346&merchantSerialNo=2016062310143088?iceUrl=http://notice.xxabc.com&trnAbs=科兴停车费&txCode=CMSK
4. 响应报文
参数名 | 类型(长度) | 必填 | 描述 | 示例 |
---|---|---|---|---|
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 |
rspData | 应答数据 | |||
rspCode | String | M | 处理结果返回码
| SUC0000 |
rspMsg | String | M | 处理结果返回码的描述信息 | 请求处理成功 |
dateTime | String(14) | M | 银行响应该请求的时间,格式yyyyMMddHHmmss | 20160623101430 |
merchantSerialNo | String(32) | M | 商户交易请求流水号,全局唯一 | 2016062310143088 |
agrNo | String(32) | M | 客户签约的协议号 | 201606238888888 |
以下字段可能没有返回值,建议仅在 rspCode = SUC0000 的条件下才取值 | ||||
bankSerialNo | String(30) | C | 银行处理该请求的流水号(请以异步通知接口或查询接口的返回值为准) | 2016062310143099 |
amount | String(20) | C | 订单金额,以元为单位,如10.01表示10元零1分 | 10.01 |
fee_amt | String(20) | C | 手续费金额,以元为单位,如0.07表示 零元7分 | 0.07 |
card_type | String(2) | C | 交易卡类型02 本行借记卡 | 02 |
discountAmount | String(20) | C | 优惠金额,以元为单位,如0.07表示 零元7分 | 0.02 |
discountFlag | String(1) | C | 优惠标识(收款通知)Y:有优惠 N:无优惠 | Y |
settleDate | String(8) | C | 银行账务日期(YYYYMMDD),用于商户与银行对账 | 20161212 |
相应示例:
正常json报文组织:
{ "version":"1.0", "charset":"UTF-8", "sign":"见签名处理章节", "signType":"SHA-256", "rspData":{ "rspCode":" SUC0000 ", "rspMsg":"收款成功", "dateTime":"20160623101430", "merchantSerialNo":"2016062310143088", "bankSerialNo":"2016062310143099", "agrNo":"1234567891234568789", "amount":"10.01", "settleDate":"20161212" } }
待验签字符串(未包含支付密钥):
agrNo=1234567891234568789&amount=10.01&bankSerialNo=2016062310143099&dateTime=20160623101430&merchantSerialNo=2016062310143088&rspCode=CMBRECV&rspMsg=收款成功&settleDate=20161212
异常json报文组织:
{ "version":"1.0", "charset":"UTF-8", "sign":"见签名处理章节", "signType":"SHA-256", "rspData":{ "rspCode":"DCB0003", "rspMsg":"DCB0003 请求报文JSON格式错误!", "txCode":"", "dateTime":"20160817141216" } }
待验签字符串(未包含支付密钥):
dateTime=20160817141537&rspCode=DCB0003&rspMsg=DCB0003 请求报文JSON格式错误!&txCode=
5. 错误码
错误码 | 错误描述 | 解决方案 |
---|---|---|
CMBMB01 | 商户不支持该交易类型 | 商户非免密商户,不能进行免密支付,请联系招行业务人员确认/修改商户参数 |
CMBMB03 | 系统繁忙,请稍后重试 | 系统处理繁忙,可以稍后重新发起本交易 |
CMBMB05 | 业务处理超时,请等待回调通知或稍后查询交易结果 | 系统处理繁忙,可以稍后做单笔查询或等待银行回调通知 |
CMBMB33 | 客户协议不存在 | 没有签约或者该协议已注销,请先调用签约接口进行客户签约 |
CMBMB38 | 币种不正确 | 币种必须为RMB |
CMBMB41 | 交易处理失败 | 因余额不足、卡片异常等,具体原因请参考错误描述信息 |
CMBMB45 | 协议已注销 | 协议已关闭,请重新签约。 |
CMBMB62 | 商户交易流水号重复 | 商户交易流程号需要保持全局唯一,请重新生成 |
CMBMB67 | 该协议为非免密协议 | 请调用开通免密接口开通免密支付功能,或者调用签约接口重新签约。 |
CMBMB68 | 该协议未绑定银行卡 | 请重新发起签约 |
CMBMB82 | 交易金额不能小于或等于0 | 请检查交易金额,最低支付0.01元。 |
CMBMB97 | 请求参数错误 | 根据提示信息中括号里的内容,修改请求参数。 如:请求参数错误(商户交易日期), 检查”商户交易日期”字段的内容是否正确 |
DCB0001 | DCB0001 贵方发送错误报文数 太多,已被限制访问! | 异常操作错误太多,请根据之前的错误反馈 进行更改,限制将在一定时间后自动解除 |
DCB0002 | DCB0002 请求报文数据不能为空! | 输入参数jsonRequestData拼写正确,并且值非空 |
DCB0003 | DCB0003 请求报文JSON格式错误! | 输入参数jsonRequestData为合法的JSON格式 |
DCB0004 | DCB0004 请求报文数据有误; 请求报文长度过长 | 缩短输入参数jsonRequestData内容 |
DCB0004 | DCB0004 请求报文数据有误:…… | 错误消息有以下这些情况,请根据对应提示修改。 接口版本号version值不正确 参数编码charset值不正确 签名sign不能为空 签名算法signType值不正确 请求数据reqData不能为空 时间戳dateTime位数超长或者为0 时间戳dateTime不能为空 交易功能码txCode位数超长或者为0 交易功能码txCode不能为空 商户号merchantNo位数超长或者为0 商户号merchantNo不能为空 分行号branchNo位数超长或者为0 分行号branchNo不能为空 商户流水号merchantSerialNo位数超长或者为0 商户流水号merchantSerialNo不能为空 客户协议号agrNo位数超长或者为0 客户协议号agrNo不能为空 |
DCB0005 | DCB0005 商户未开通接入平台功能; 商户号:…… | 商户号需要开通接入平台功能 |
DCB0006 | DCB0006 源IP地址不在商户IP白名单中; 商户号:…;IP地址:… | 商户需要提供IP添加到白名单中 |
DCB0007 | DCB0007 调用功能不可用; 调用功能代码:…… | 调用的功能不支持,请输入支持的功能代码 |
DCB0008 | DCB0008 签名验证失败:…… | 错误消息有以下情况,请根据对应提示修改。 签名时间戳格式不正确! 签名时间错误,签名已经失效。 验签异常:…… |
DCB0010 | DCB0010 获取商户密钥失败;商户号:…… | 商户未正确开通接入平台功能,请按正规流程进行登记开通 |
DCB0017 | DCB0017 与业务系统的通讯失败:…… | 错误消息有以下情况,请稍后再试 [MIDServerComNP]业务系统繁忙 [MIDServerComNP]连接业务服务器失败:… [MIDServerComNP]接收业务系统通讯报文头失败 [MIDServerComNP]接收业务系统通讯报文头非法 [MIDServerComNP]接收业务系统通讯报文包体长度不正确.[…] [MIDServerComNP]与业务系统通讯异常:… |
DCB0018 | DCB0018 与业务系统的通讯异常:…… | 错误消息有以下情况,请联系招行相关技术支持人员。 解析中间业务平台返回报文失败 |
DCB0019 | DCB0019 企业网银签名异常:…… | 请联系招行相关技术支持人员 |
DCB0020 | DCB0020 服务器繁忙,请稍后再试。 | 当前服务器负载达到上限,请稍后再试。 |
DCB0021 | DCB0021 解析返回报文失败 | 请联系招行相关技术支持人员 |
6. FAQ
无