免密支付

支付协议签订结果通知

1. 接口介绍

功能简述:

商户调用了招行的签订支付协议API,且协议系统已处理该请求,招行会主动给商户发送成功/失败通知。

约束条件:

前端报错(例如请求参数格式错误等),招行不会主动给商户发失败通知。

正常流程:

1、 签约成功
2、 往商户签约时提供的回调地址发送通知
3、 商户响应HTTP 200

异常流程:

1、 商户提供的回调地址网络不通
2、 商户没响应HTTP 200

2. 请求地址

签订支付协议时,传送的结果通知地址noticeUrl

3. 请求报文

适用于银行主动回调商户,报文通过招行证书私钥进行签名,商户需通过招行公钥验证通知来源于招行。由银行作为发起方发起请求,商户接收请求后返回响应信息。

参数类型(长度)必填描述示例
versionString(3)M接口版本号,固定为1.01.0
charsetString(8)M编码格式,固定为UTF-8UTF-8
signStringM报文签名, 使用招行私钥对noticeData内的
数据进行签名;商户需使用招行公钥验签。

signTypeStringM签名算法,固定为RSARSA
noticeData应答数据


dateTimeString(14)M请求时间,银行处理该交易的时间。
格式:yyyyMMddHHmmss
20160622182921
rspCodeString(7)M处理结果,SUC0000:签约成功
其他:签约失败
注意:通常只有签约成功才会发送签约结果通知,
但极少数异常情况下可能会发送
签约失败的结果通知。因此,商户收到通知报文后,
应先判断rspCode是否为SUC0000,
以确认签约是否成功。
SUC0000
rspMsgStringM详细信息,失败时返回的失败原因签约成功
noticeTypeStringM通知类型,固定为BKQYBKQY
noticeSerialNoString(40)M通知序号201606238888888
branchNoString(4)M商户分行号,4位数字0755
merchantNoString(6)M商户号,6位数字002346
noticeUrlStringM回调地址,签约请求时填写的签约结果通知地址http://test.52sz.co/zsPay/zsResult.php
httpMethodStringM回调方法,固定为POSTPOST
agrNoString(32)M签约请求时填写的客户协议号0001283
noticeParaString(256)M商户附加参数,原样返回商户在签约或一网通支付请求报文中传送的成功签约通知附加参数ABC123SDK
userIDString(20)M商户用户ID,签约请求时填写的用于标识商户用户的唯一ID12345
userPidTypeString(1)M用户证件类型

1:身份证

2:护照

3:其他

1
userPidHashString(30)M证件号映射的30位hash值501010131010181016101010101012
noPwdPayString(1)M免密标识
Y表示开通免密支付
N表示不开通免密支付
201606238888888
以下字段联系招行配置控制参数后返回(默认不返回):
userRealNameStringC经实名认证的客户姓名,与商务合约有关,
默认不返回此字段
AES-256对称加密后base64编码传送
userRealPidStringC经实名认证的客户证件号,
与商务合约有关,默认不返回此字段
AES-256对称加密后base64编码传送
userRealPhoneStringC经实名认证的客户手机号,
与商务合约有关,默认不返回此字段
AES-256对称加密后base64编码传送
userRealAccNoStringC经实名认证的客户银行卡号,
与商务合约有关,默认不返回此字段
AES-256对称加密后base64编码传送
uniqueUserIDString(30)C支付用户ID,由身份证+姓名生成(推荐使用)UQwanCunLbp6cl1RbDFODrhLrAa48=
expandUserIDString(30)C一网通用户ID,由一网通ID生成(招行一网通用户的身份标识)EUfirwdVQVKhffJmjQhMod0dS6GYY=

请求示例:

json报文组织:

{    
    "version":"1.0",
    "charset":"UTF-8",
    "sign":"…",
    "signType":"RSA",
    "noticeData":{
        "dateTime":"20160622182921",
        "noticeType":"BKQY",
        "noticeSerialNo":"201606238888888",
        "branchNo":"0755",
        "merchantNo":"002346",
        "noticeUrl":"https://.. ",
        "httpMethod":"POST",
        "agrNo":"0001283",
        "noticePara":"",
        "rspCode":"SUC0000",
        "rspMsg":"",
        "userID":"12345",
        "userPidType":"1",
        "userPidHash":" 501010131010181016101010101012",
        "noPwdPay":"N"
        }
}

表单组织:

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

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

agrNo=000128N3&branchNo=0755&dateTime=20160622182921&httpMethod=POST&merchantNo=002346noticeParanoticePara==&noPwdPay=N=?iceSerialNo=201606238888888=?iceType=BKQY=?iceUrl=https://...=&rspCode=SUC0000=&rspMsg=&userID=12345&userPidHash=501010131010181016101010101012&userPidType=1

4. 响应报文

返回 HTTP Status Code 200,表示成功接收。否则表示未成功,未成功则银行会进行重发,重发直至响应成功或重发次数达到上限后停止重发。

5. 错误码

错误码错误描述解决方案
CMBXY01用户实名信息不一致已实名的商户上传了实名信息,并且实名信息与银行端不一致
CMBMB34该证件签订协议数超限,生产环境下同一个证件号默认最多支持2条不同的协议号可联系招行业务接口人修改为5条,或解绑支付协议
CMBMB64获取商户秘钥失败请确认已在商户服务平台设置“支付秘钥”或联系招行技术人员解决
CMBMB94该协议已存在

请用新的协议号进行签约。

注:一个协议号如果已分配给某个客户且已签约成功,即使关闭协议,该协议号也不能再分配给其他客户

CMBMB97请求参数错误根据提示信息中括号里的内容,修改请求参数。
如:请求参数错误(商户交易日期),检查”商户交易日期”字段的内容是否正确

6. FAQ