银账通接口(银盛存管)

版本说明

版本 日期 修改 审核 说明
V3.0 2019-03-05 陈伟龙&张海松 何彦霖 银账通产品升级3.0版本,初稿
V3.1 2019-04-01 陈伟龙 何彦霖 增加内部转账功能,以及补充商户进件接口功能
V3.2 2019-04-23 陈刚 卢伟强 修改图片上传接口图片类型备注、商户进件接口客户类型备注
V3.3 2019-07-12 王万琳 卢伟强 商户进件异步通知和查询接口返回数据修改和新增userCode字段
V3.4 2019-11-20 孙秀丽 卢伟强 新增卡Bin查询接口和子商户自动审核功能
V3.5 2020-02-26 孙秀丽 卢伟强 新增错误码说明
V3.6 2020-03-25 孙秀丽 卢伟强 完善充值申请接口及排版更新
V3.7 2020-04-20 孙秀丽 卢伟强 根据风控规则完善必传图片,补充证件,营业执照有效期
V3.8 2020-05-11 孙秀丽 卢伟强 增加个人及商户通知手机号修改,支持平台参与内部转账
V3.9 2020-06-18 孙秀丽 卢伟强 支持小微,个体商户绑卡充值。
V4.0 2020-07-31 孙秀丽 卢伟强 增加转账电子回单
V4.1 2020-08-18 钟凡 吴浪 统一用户号长度为30,新增消息码列表,新增商户报备,报备查询以及商户进件(活体)
V4.2 2020-09-08 钟凡 吴浪 优化旧商户进件接口,新增钱包付款码(申码)和钱包付款码(反扫申请)接口
V4.3 2020-11-09 王万琳 吴浪 新增订单分账信息查询接口
V4.4 2022-04-27 王天蛟 温智贤 增加新的绑卡申请和确认接口

目录

目录 2

1.概述 7

2.接口通讯 7

2.1交互方式 7

2.2报文结构 7

2.3消息码列表 8

2.4 系统对接前的准备工作及注意事项 9

3.产品介绍 9

3.1场景介绍 9

3.2 功能描述 9

3.3 业务流程 9

4 接口说明 10

4.1报文规范 10

4.2后台接口 10

4.2.11 用户开户 10

4.2.12 手机验证码 11

4.2.13 注册手机号绑定 12

4.2.14修改注册手机号 31

4.2.15 用户信息查询 13

4.2.16 银行卡绑定申请 14

4.2.17 银行卡绑定确认 15

4.2.18 绑定银行卡查询 16

4.2.19解绑银行卡 17

4.2.20 卡bin查询 18

5 返回码 52

6 业务错误码 54

7 安全要求 54

7.1 公钥和私钥使用说明 54

7.2 加解密和签名方案 55

7.2.1 请求报文的加密方案 55

7.2.2 请求报文的签名方案 57

7.2.3 响应报文的解密方案 58

7.2.4 响应报文的验签方案 58

7.2.5 异步通知报文的验签方案 59

1.概述

本文档为银账通系统的对外接入的技术指南,方便商户快速接入。

本文档的目标读者为技术人员

银账通保留对该文档的最终解释权与修改权

2.接口通讯

2.1交互方式

消息请求基于 HTTP/HTTPS 的 POST 方式。

Content-Type 设置" application/x-www-form-urlencoded;charset=UTF-8 "。

2.2报文结构

报文统一以key/value方式,如下:

timeStamp=“时间戳, msg=“加密业务数据”, src=“消息来源”, version=“版本号”,sign=“签名数据”, check=“AES密钥密文”, certId=“商户号”, msgCode=“消息码”

参数说明:

参数 说明 是否必填 取值说明
src 消息来源 M 固定值为02
msgCode 消息码 M 参见2.3消息码列表
version 版本号 M 统一填写为1.0
timeStamp 时间戳 M 格式:yyyy-MM-dd HH:mm:ss
sign 签名数据 M 参见7.2.2签名方案
msg 加密业务数据 M 在“4.2后台接口”章节中,定义的是msg的明文详细内容。是json格式字符串,例如用户信息余额查询的请问报文如下 {"appSecret":"qY2Q+f7ptLK2/y6tUDMLn42swYklNmstSwEYmCy/DQM=","appUserCode":"zj-05","isSearchBalance":"Y"} msg为对以上数据加密处理后得到结果 Msg生成的方式具体参见7.2.1 AES加密流程
norce 随机字符串 M 比如uuid
certId 商户号 M 具体接入时银账通提供的商户号
check AES密钥密文 M 参见7.2.1 中的RSA公钥加密流程

以用户信息余额查询报文举例,报文示例如下

{timeStamp=2018-12-16 10:59:16, msg=yC6+sCdO54gddxPHRHyshX7yie0Qiv7mBiHpW64RGvzuMMq//h4R1v8hqA2n+qwSIISuCUJ7FnKmcKetBo6wxUyQm/5KNyicYYbmSL8wkGO/MKVn08LyILt2/LeftQ5R3NKXIyYaYMS8p2OjOlShZZFt2HZDK3PVvrC2v43GMBop973M1ZlSqjv/UiE+eup3,

norce=cf262c0aa38243979377f04d39865c25,

src=02,

version=1.0, sign=MeQLeL31IwO75hC/GtY3W0M29SCjVUqlm68nOuL7HGFJlNq8FkB1eqfHUenM1O2mn8r5sedEYWbuUUiJi5mgIN5RIHaRP39O8kWwCk7/Al/S+H8gBP9BGU8TdplYGJOzszcD6J3T4To3+3EbRLfJ7/nJaI/UOQvGhNdqA0ng1/s=, check=bjCQfmaGoRhUGZDBoPPXvQjvZaLwMAxC3tLDFyCydcF1Kv6Qj4oH5ggPXoXZ66BHuU4aM73MSHmwgdYxhp1x1VRMPWWw9awlCBI4FYBc/8wClygtiz/l6MAIZk8JfmGXrMADYBlifEXgZ+oQkrVa9tYV8x8idI8hll/yDqE0IXw=,

certId=s0005,

msgCode=searchUser

}

msg加密业务数据明文内容为:

{"appSecret":"qY2Q+f7ptLK2/y6tUDMLn42swYklNmstSwEYmCy/DQM=","appUserCode":"zj-05","isSearchBalance":"Y"}

2.3消息码列表

接口名称 消息码
用户开户 applyAccount
手机验证码 verificationCode
注册手机号绑定 registerMobileBind
修改注册手机号 registerMobileModify
用户信息查询 getAccountInfo
银行卡绑定申请 bindingBankCard
银行卡绑定确认 confirmAndBindingCard
银行卡绑定申请(新) bindingBankCardNew
银行卡绑定确认(新) confirmAndBindingCardNew
绑定银行卡查询 userBindingCardList
解绑银行卡 unbindBankCard
卡bin查询 cardInformation

2.4 系统对接前的准备工作及注意事项

测试环境可联系商户对接人员获取app密钥及App用户号及证书。

测试环境对接完成可联系对接人员获取线上证书及相关密钥。

3.产品介绍

3.1场景介绍

适用于商家调用银账通的API接口,在合作商户app或网站上实现用户及商户开户、绑卡、充值、提现、支付、解绑卡等功能。

3.2 功能描述

本文档描述银账通开发项目与合作商户相关系统之间的报文格式、接口规范及安全规范。

3.3 业务流程

银账通合作商户的接入方式,根据业务模式进行接入:

  1. 不验证:用户在交易过程中,银盛不进行任何验证,所有验证交由合作商户完成。

  2. 短信验证:用户在交易过程中,银盛下发短信验证码进行短信验证。

4 接口说明

描述:第三方app后台直接请求银账通后台接口

4.1报文规范

请求参数是否必填,M表示必填,O表示选填

4.2后台接口

4.2.1 用户开户

该接口用于个人用户开户,即C端用户创建商户,如企业商户开户请使用4.2.26商户进件接口。如只有B端商户注册则不用对接用户部分。

开户流程

  1. 调用开户接口

  2. 开户成功后进行注册手机号绑定,并进行短验

  3. 用户回填验证码,完成开户操作。

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/applyAccount

生产 url: https://yzt.ysepay.com:8443/api/applyAccount

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 商户系统中的用户唯一标识号,可序列生成
userType 用户类型 M String 2 00-个人
accessTerminal 访问终端 M String 2 00-PC,01-移动端
name 真实姓名 M String 50 例:张三
certifiType 证件类型 M String 2 00-身份证 暂时只支持身份证
certifiNo 证件号码 M String 18 暂时只支持身份证号码
expansion 拓展参数 O String 60 可添加的拓展参数

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-成功,误
msg 描述信息 M String 10 请求结果信息:开户成功

4.2.2 手机验证码

1.注册手机号绑定接口调用之前调用此接口(funcode=B1),系统将向待绑定手机号码发送动态短信验证码。

2.修改注册手机号前调用此接口(funcode=B2),系统将向待修改手机号码发送动态短信验证码。

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/verificationCode

生产 url: https://yzt.ysepay.com:8443/api/verificationCode

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
mobile 注册手机号 M String 11 注册手机号
funcode 验证类型 M String 2 B1-手机号绑定、B2-修改注册手机号
flag 客户标识 M String 2 A1-个户
A2-商户

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-成功
msg 描述信息 M String 10 请求结果信息,如“success”

4.2.3 注册手机号绑定

注:开户接口调用之后需要调用该接口绑定手机号,本交易由商家app后台发起,银账通系统直接返回

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/registerMobileBind

生产 url: https://yzt.ysepay.com:8443/api/registerMobileBind

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
mobile 注册手机号 M String 11 注册的手机号
verificationCode 验证码 M String 6 验证码
flag 客户标识 M String 2 A1-个户
A2-商户

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-成功
msg 描述信息 M String 12 请求结果信息:注册手机号绑定成功

4.2.4 修改注册手机号

用于个人用户修改用户注册手机号

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/registerMobileModify

生产 url: https://yzt.ysepay.com:8443/api/registerMobileModify

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
mobile 原手机号码 M String 11 原手机号码
verificationCode 短信验证码 M String 2 短信验证码
newMobile 新手机号 M String 11 新手机号
flag 客户标识 M String 2 A1-个户
A2-商户

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-操作成功
msg 描述信息 M String 10 请求结果信息:“修改绑定手机成功”

4.2.5 用户信息查询

接口用于进行用户信息的查询。

请求URL

测试 url:http://bd4-vtest.ysepay.com/api/getAccountInfo

生产 url:https://yzt.ysepay.com:8443/api/getAccountInfo

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户编号 M String 30 对应用户开户接口appUserCode

返回参数列表*

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200
msg 描述信息 M String 8 请求结果信息:ok
data 业务参数 M Object - 业务相关参数

data

参数 名称 是否必填 参数类型 长度 描述
appUserCode 平台用户号 M String 30 对应用户开户接口的appUserCode
userType 用户类型 M String 2 户类型: 00-个人
accountLevel 用户等级 M String 2 账户等级:1一类户;2二类户;3三类户
state 用户状态 M String 4 用户状态(00:正常,98:冻结,99:注销)
name 用户姓名 M String 100 例:张*
certificateNo 用户身份证 M String 80 例:******************0000
mobile 用户注册手机号 M String 60 例:130******000
createTime 创建时间 M String 15 YYYY-MM-dd HH:MM
accessTerminal 访问终端 M String 2 00-PC,01-移动端

4.2.6 银行卡绑定申请

用户开户流程(包括开户+手机号绑定)后可进行银行卡绑定,可用于在商家app进行消费。

绑卡流程:

  1. 调用银行卡绑定申请接口,银行系统会发送短信验证码给用户银行预留手机号

  2. 调用银行卡绑定确认接口,进行短信确认即可。

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/bindingBankCard

生产 url: https://yzt.ysepay.com:8443/api/bindingBankCard

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
bankAccountNo 银行卡号 M String 19 银行卡号
mobile 银行预留手机号 M String 11 银行预留手机号
validTimeEnd 有效期 O String 4 格式为MMYY
cvv CVV2 O String 3 信用卡安全码
flag 客户类型 O String 2 用户绑卡A1,商户绑卡A2,不传默认A1

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-成功
msg 描述信息 M String 8 请求结果信息,例如:“登记成功”
data 业务参数 M Object - 参数集合

data

参数 名称 是否必填 参数类型 长度 描述
sn 签约登记流水号 M String 128 银行卡绑定确认接口必填参数

4.2.7 银行卡绑定确认

银行卡绑定申请接口调用之后,发起银行卡绑定确认交易。

请求URL

测试url: http://bd4-vtest.ysepay.com/api/confirmAndBindingCard

生产url: https://yzt.ysepay.com:8443/api/confirmAndBindingCard

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
sn 签约登记流水号 M String 30 银行卡绑定申请接口返回
smsCode 短信验证码 M String 6 验证码
flag 客户类型 O String 2 用户A1,商户A2,不传默认A1

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-操作成功
msg 描述信息 M String 10 请求结果信息,参考值:“业务处理成功”

4.2.8 银行卡绑定申请(新)

此绑卡接口与旧的银行卡绑定接口(4.2.16&2.2.17 )参数一样,区别是原有银行卡绑定接口只支持快捷协议银行卡绑卡,而此银行卡绑定接口支持所有银行卡绑卡,如果银行卡支持开通快捷协议,则可以进行充值、消费、提现,不支持开通快捷协议的银行卡只能提现。

绑卡流程:

  1. 调用银行卡绑定申请接口,银行系统会发送短信验证码给用户银行预留手机号

  2. 调用银行卡绑定确认接口,进行短信确认即可。

请求URL

测试 url: [http://bd4-vtest.ysepay.com/api/bindingBankCardNew

生产 url: https://yzt.ysepay.com:8443/api/bindingBankCardNew

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
bankAccountNo 银行卡号 M String 19 银行卡号
mobile 银行预留手机号 M String 11 银行预留手机号
validTimeEnd 有效期 O String 4 格式为MMYY
cvv CVV2 O String 3 信用卡安全码
flag 客户类型 O String 2 用户绑卡A1,商户绑卡A2,不传默认A1

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-成功
msg 描述信息 M String 8 请求结果信息,例如:“登记成功”
data 业务参数 M Object - 参数集合

data

参数 名称 是否必填 参数类型 长度 描述
sn 签约登记流水号 M String 128 银行卡绑定确认接口必填参数

4.2.9 银行卡绑定确认(新)

银行卡绑定申请(新)调用之后,发起银行卡绑定确认交易。如果开通快捷协议,返回:“绑卡成功,此银行卡可支持提现和支付”;如果没有开通快捷协议,返回:“绑卡成功,此银行卡可支持提现”

请求URL

测试url: http://bd4-vtest.ysepay.com/api/confirmAndBindingCardNew

生产url: https://yzt.ysepay.com:8443/api/confirmAndBindingCardNew

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
sn 签约登记流水号 M String 30 银行卡绑定申请接口返回
smsCode 短信验证码 M String 6 验证码
flag 客户类型 O String 2 用户A1,商户A2,不传默认A1

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200-操作成功
msg 描述信息 M String 10 请求结果信息,参考值:“业务处理成功”

4.2.10 绑定银行卡查询

查询用户绑定银行卡。

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/userBindingCardList

生产 url: https://yzt.ysepay.com:8443/api/userBindingCardList

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户编号 M String 30 对应用户开户接口appUserCode
flag 客户类型 O String 2 用户A1,商户A2,不传默认A1

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200
msg 描述信息 M String 10 参考值:ok
data 参数列表 M Objcet - 参数列表

data

参数 名称 是否必填 参数类型 长度 描述
bankCardList 银行卡列表 M List - 银行卡列表

bankCardList

参数 名称 是否必填 参数类型 长度 描述
bankAccountNo 银行卡号 M String 30 例:620**************0000
cardIssuingBank 发卡行名称 M String 例:平安银行
cardType 银行卡类型 M String 2 卡类型(11:个人借记卡 12:个人贷记卡
bindStatus 绑定状态 M String 2 01:生效;02:失效;03:签约失败;04:已登记
mobile 银行预留手机号 M String 20 例:130******000
bindTime 绑定时间 O String 20 YYYY-MM-dd HH:MM
cardToken 卡片编号 M String 64 卡片id

4.2.11 解绑银行卡

该接口用于对用户已绑定银行卡进行解绑操作。

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/unbindBankCard

生产 url: https://yzt.ysepay.com:8443/api/unbindBankCard

编码格式 : UTF-7

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
appSecret App密钥 M String 60 App密钥
appUserCode App用户号 M String 30 对应用户开户接口的appUserCode
cardToken 卡片编号 M String 30 绑定银行卡片编号
flag 客户类型 O String 2 用户A1,商户A2,不传默认A1

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200
msg 描述信息 M String 10 参考值:ok

4.2.12 卡bin查询

商户APP可调用该接口查询银行卡卡bin信息,以便于展示银行LOGO,以及针对贷记卡要求商户及时补充CVV、安全码等。

请求URL

测试 url: http://bd4-vtest.ysepay.com/api/cardInformation

生产 url: https://yzt.ysepay.com:8443/api/cardInformation

编码格式 : UTF-8

调用方式:POST

请求参数列表

参数 名称 是否必填 参数类型 长度 描述
AppUserCode App用户号 M String 30 对应用户开户接口appUserCode
AppSecret App密钥 M String 60 App密钥
bankAccountNo 银行卡号 M String 18 银行卡号

返回参数列表

参数 名称 是否必填 参数类型 长度 描述
code 返回码 M String 3 参考值:200
msg 描述信息 M String 10 参考值:ok
data 参数列表 M Objcet - 参数列表

data

参数 名称 是否必填 参数类型 长度 描述
cardIssuingBank 发卡行名称 M String 10 例:平安银行
cardType 卡类型 M String 3 卡类型(11:个人借记卡 12:个人贷记卡
banktypeCode 发卡行类型编码 M String 10 卡bin

-data-

SORT_ID 交易状态 O String 交易的状态
REFERENCE_ID 交易订单号 O String 交易订单号
IS_CHARGE_FEE 是否收取手续费:01:是,02:否 O String 是否收取手续费:01:是,02:否
IS_AGAIN_DIVISION 是否重新分账交易:Y:是,N:否 O String 是否重新分账交易:Y:是,N:否
PRIORITY 优先级 O String 优先级
IS_REAL_TIME 是否实时拆分:00:是,01:否 O String 是否实时拆分:00:是,01:否
FEE_PRIORITY 手续费优先级 O String 手续费优先级
DIVISION_MERC_ID 分账商户号 O String 分账商户号
DIV_AMOUNT 金额 O String 金额
DIVISION_MODE 分账模式:01:按比例,02:按金额 O String 分账模式:01:按比例,02:按金额
LOG_NO 流水号 O String 流水号
DIV_ORI_TRAN_CHARGE_FEE 分账原流水手续费 O String 分账原流水手续费
ID 分账单号 O String 分账单号
BATCH_NUMBER 分账批次号 O String 分账批次号
REFUND_AMT 累计已退金额 O String 累计已退金额
SPONSOR_MERC_ID 发起方商户号 O String 发起方商户号
DIV_RATIO 比例 O String 比例
DIV_ORI_TRAN_AMT 分账原流水交易金额 O String 分账原流水交易金额
DIV_DT 分账日期 O String 日期
IS_MAIN_MERCHANT 是否主商户:01:是,02:否 O String 是否主商户:01:是,02:否
ORG_NO 商户机构号 O String 商户机构号
IS_DIVISION 是否参与分账:01:是,02:否 O String 是否参与分账:01:是,02:否
MERC_ID 主商户号 O String 主商户号
CHECK_STATE 分账校验:00:成功,01:失败,99:无需分账 O String 分账校验:00:成功,01:失败,99:无需分账
CHARGE_FEE_AMT_SUM 总手续费 O String 总手续费
DIV_TRAN_SOURCE 分账交易来源 O String 分账交易来源
DIV_AMT 分账金额 O String 分账金额
SEQ 分账序列号 O String 分账序列号
AC_DT 原交易日期 O String 原交易日期
DIV_CHARGE_FEE 是否收取手续费:01是,02:否 O String 是否收取手续费:01是,02:否

5 返回码

返回码 描述
A2 验签失败
321 需要验证IMEI
322 需要重新签绑卡协议
323 需要验证支付密码
324 需要验证短信验证码
325 需要发起查询操作(比如二维码查询)
420 必要参数缺失
421 参数格式不正确
431 密码错误次数超限制
432 当天短信验证码发送超限制/密码被锁定/发送失败
433 超出金额限制
434 接口调用次数超限
435 风控校验不过,不允许当笔交易(被风控或其他原因)
440 短信发送过于频繁(前一条验证短信未过期)
441 用户状态非正常
442 商户状态非正常
443 APP状态非正常
450 参数信息不合法
451 不合法的用户编号-用户不存在
452 不合法的商户-商户不存在
453 不合法的appSecret/app为空
454 不合法的密码/错误密码
456 不合法的短信验证码-验证码验证失败
460 不合法或已过期的二维码
461 查询无记录
520 操作失败(或系统繁忙),请稍后重试
521 重复发起操作(比如重复绑卡或重复支付)
522 身份认证失败(比如实名信息错误,非本人身份证)
523 暂不支持该业务或业务没开通权限
524 钱包余额不足
525 消费失败
526 渠道上游异常

附表1

类型 描述
00 公民身份证正面
19 营业执照
20 税务登记证
30 公民身份证反面
31 客户协议
32 授权书
33 手持身份证正扫面照
34 门头照
35 结算银行卡正面照
36 结算银行卡反面照
37 开户许可证或印鉴卡
50 经营场所图1
51 经营场所图2

附表2

图片类型的必要性,打钩为必填项:

证件名称 小微商户 个体商户 企业商户
身份证正面
身份证反面
手持身份证正面照
营业执照
客户协议
授权书
门头照
结算银行卡正面照
结算银行卡反面照
开户许可证或印鉴卡
经营场所图1
经营场所图2

附表3

银行类型 银行名称
1031000 农业银行
1051000 建设银行
3065810 广发银行
3102900 浦发银行
4031000 邮政银行
3051000 民生银行
3071000 平安银行
3031000 光大银行
3132900 上海银行

6 业务错误码

错误码 错误描述 解决方案
ACQ.SYSTEM_ERROR 系统错误 请联系银盛客服
ACQ.BUSINESS_TIMEOUT_ERROR 业务超时 请调用查询接口查询订单状态
ACQ.SYSTEM_ERROR 系统错误 请使用相同的参数再次调用
ACQ.INVALID_PARAMETER 参数无效 请求参数有错,重新检查请求后,再调用退款

7 安全要求

7.1 公钥和私钥使用说明

生产环境的公钥证书为银盛提供,此公钥证书有两个作用:
1、对所有接口返回的数据进行验签。
2、对随机字符串进行加密,该随机字符串和参与AES对称加密请求参数的随机字符串一致

私钥用于商户签名,格式为xxx_xxx.pfx

7.2 加解密和签名方案

加解密和签名方案分为请求报文的加密签名、响应报文的解密验签、异步通知报文的验签,

其中异步通知报文的验签和响应报文的验签规则是相同的,只是参数不同以及异步通知报文不需要解密业务数据。流程图如下

7.2.1 请求报文的加密方案

本方案采用AES(对称加密算法)和RSA(非对称加密算法)组合的方式进行加密。AES用于业务信息的加密;RSA用于AES密钥的加密传输,

AES加密流程:业务参数组装成JSON格式,直接使用随机生成的AES密钥对JSON数据进行AES加密处理,同时进行BASE64编码处理,得到请求参数msg。

AES加密示例

msg加密前 { "head":{"appSecret":"qY2Q+f7ptLK2/y6tUDMLn42swYklNmstSwEYmCy/DQM=","appUserCode":"zj-05"}, "body":{"isSearchBalance":"Y"} }
随机生成的AES密钥(16 进制表示) 42334430303632373932364537333138
AES加密后(16进制表示) DFBB0EC2EAEF46A813235C700E57D4CEAE1C3CF5ADB2095522B30B23486556F99D851CC16F7011F7B92FFC07FC6E2223C5F8EA232C0AC6450E2D9640853F53AE03A8799B3A438D3DDCE30F7F0BD49CBABFDB108D4C7EBB5916C349B097ECA7683C809717268291B3BE9C503A623D244551B983032082A12090D797745A812E349D6A07A75FECB952FB0ED098F9C816A5
BASE64编码后 37sOwurvRqgTI1xwDlfUzq4cPPWtsglVIrMLI0hlVvmdhRzBb3AR97kv/Af8biIjxfjqIywKxkUOLZZAhT9TrgOoeZs6Q4093OMPfwvUnLq/2xCNTH67WRbDSbCX7KdoPICXFyaCkbO+nFA6Yj0kRVG5gwMggqEgkNeXdFqBLjSdagenX+y5UvsO0Jj5yBal
得到最终的msg msg=“37sOwurvRqgTI1xwDlfUzq4cPPWtsglVIrMLI0hlVvmdhRzBb3AR97kv/Af8biIjxfjqIywKxkUOLZZAhT9TrgOoeZs6Q4093OMPfwvUnLq/2xCNTH67WRbDSbCX7KdoPICXFyaCkbO+nFA6Yj0kRVG5gwMggqEgkNeXdFqBLjSdagenX+y5UvsO0Jj5yBal”

RSA公钥加密流程:商户使用银账通公钥对AES密钥明文进行加密,同时进行BASE64编码处理,得到请求参数check。

RSA公钥加密示例

check加密前 42334430303632373932364537333138
RSA公钥加密后 50E36E9C909EB6A4FF66E9F5CB506F4638F263E479F697F27C0C1D06345376A1177110C9FCEBBD93D356E191B0E9A0F191C25C420F71D1FD4ED85DB64F917A49B175CBDA544744E39E666E2827B4ED8C95907D8015FC3308FD23E898C8DEDE2665B1B5141B323BF4663F1F6C57BEAB839FE26AADF725F89E0F3C7E2D3C971CB6
BASE64编码后 UONunJCetqT/Zun1y1BvRjjyY+R59pfyfAwdBjRTdqEXcRDJ/Ou9k9NW4ZGw6aDxkcJcQg9x0f1O2F22T5F6SbF1y9pUR0TjnmZuKCe07YyVkH2AFfwzCP0j6JjI3t4mZbG1FBsyO/RmPx9sV76rg5/iaq33JfieDzx+LTyXHLY=
得到最终的check check=“UONunJCetqT/Zun1y1BvRjjyY+R59pfyfAwdBjRTdqEXcRDJ/Ou9k9NW4ZGw6aDxkcJcQg9x0f1O2F22T5F6SbF1y9pUR0TjnmZuKCe07YyVkH2AFfwzCP0j6JjI3t4mZbG1FBsyO/RmPx9sV76rg5/iaq33JfieDzx+LTyXHLY=”

7.2.2 请求报文的签名方案

RSA私钥签名:对除了sign参数以外的请求参数做字典排序,并将参数以key=value形似,并用&符号连接成字符串,形如check=123456&msg=xxxx&msgCode=xxx。对拼接后的字符串使用私钥做签名处理,得到参数sign。

签名示例

Key/value报文 {timeStamp=2018-12-16 13:26:16, msg=37sOwurvRqgTI1xwDlfUzq4cPPWtsglVIrMLI0hlVvmdhRzBb3AR97kv/Af8biIjxfjqIywKxkUOLZZAhT9TrgOoeZs6Q4093OMPfwvUnLq/2xCNTH67WRbDSbCX7KdoPICXFyaCkbO+nFA6Yj0kRVG5gwMggqEgkNeXdFqBLjSdagenX+y5UvsO0Jj5yBal, norce=2359e800e11448a086de128487d4fc09, src=02, version=0.1, check=UONunJCetqT/Zun1y1BvRjjyY+R59pfyfAwdBjRTdqEXcRDJ/Ou9k9NW4ZGw6aDxkcJcQg9x0f1O2F22T5F6SbF1y9pUR0TjnmZuKCe07YyVkH2AFfwzCP0j6JjI3t4mZbG1FBsyO/RmPx9sV76rg5/iaq33JfieDzx+LTyXHLY=, certId=tokentest, msgCode=searchUser}
签名原文(sign) certId=tokentest&check=UONunJCetqT/Zun1y1BvRjjyY+R59pfyfAwdBjRTdqEXcRDJ/Ou9k9NW4ZGw6aDxkcJcQg9x0f1O2F22T5F6SbF1y9pUR0TjnmZuKCe07YyVkH2AFfwzCP0j6JjI3t4mZbG1FBsyO/RmPx9sV76rg5/iaq33JfieDzx+LTyXHLY=&msg=37sOwurvRqgTI1xwDlfUzq4cPPWtsglVIrMLI0hlVvmdhRzBb3AR97kv/Af8biIjxfjqIywKxkUOLZZAhT9TrgOoeZs6Q4093OMPfwvUnLq/2xCNTH67WRbDSbCX7KdoPICXFyaCkbO+nFA6Yj0kRVG5gwMggqEgkNeXdFqBLjSdagenX+y5UvsO0Jj5yBal&msgCode=searchUser&norce=2359e800e11448a086de128487d4fc09&src=02&version=1.0&timeStamp=2018-12-16 13:26:16
签名数据 APJZyXOaMsrsWXczUqd6CgOmvvhgF1X1UtovDenSmfQ5Ex0JN2IOB0ItdR35Mlm5OQugqJQloLK8YJs2/vJTFLuqJCmnfRc0PnNfAaoiCSA6cqHpxaBUgR+uRKljxLuMhq7qQmDuUDLrBzWHvyFmTYX4BckK0OKRATyw2of6LBY=
得到最终的sign Sign=“APJZyXOaMsrsWXczUqd6CgOmvvhgF1X1UtovDenSmfQ5Ex0JN2IOB0ItdR35Mlm5OQugqJQloLK8YJs2/vJTFLuqJCmnfRc0PnNfAaoiCSA6cqHpxaBUgR+uRKljxLuMhq7qQmDuUDLrBzWHvyFmTYX4BckK0OKRATyw2of6LBY=”

7.2.3 响应报文的解密方案

AES解密流程:首先BASE64解码加密数据data,根据AEA密钥对数据进行解密处理,转成字符串得到解密数据data

加密数据(data) CjcXpJSNuY6q3ecmAnVXO4EY96K/i79YIdFquZNFvMwNzPO6+M6y8trNuyo4WlbLPVOSMNXYjNiWM/vBbwve7tMsXmxAl+T9eJeOcAlR/B4=
BASE64解码(16进制表示) 0A3717A4948DB98EAADDE7260275573B8118F7A2BF8BBF5821D16AB99345BCCC0DCCF3BAF8CEB2F2DACDBB2A385A56CB3D539230D5D88CD89633FBC16F0BDEEED32C5E6C4097E4FD78978E700951FC1E
AES密钥(16进制表示) 43454530384333413242363237333136
AES密钥解密(字符串) {"data":"9d9aa08c602dbc3fec5d9755c3779ca6","code":"200","msg":"OK"}

7.2.4 响应报文的验签方案

{"charset":"UTF-8","data":"eyJhbW91bnQiOiIxMC4wIiwibm90aWZ5VGltZSI6IjIwMTgtMTItMDcgMTc6MjU6MTUiLCJvcmRlck5vIjoiNDQ0NDU2NjIyMyIsInNlcnZpY2VJZCI6IjE4MDIwNTIxMTcwODAwMzkiLCJzdGF0dXMiOiIwNCIsInRyYWRlU24iOiIzMjEyMDE4MTIwNzYyNzEzMjI0OTQifQ==","sign":"UUfJCDZYBFk/Tqke3XsN63RBtldyzdq8vK4k74SIkpQu6eaxBGlkd/4AjEkk58ZlWYzXcU4pifDHTjAE2CdGMrS79zZwQ1zaaA2xSZMnvtBVJUryUau6e0E2w4/TXWXC/PrPhhVCI7PD8e44Cnii4yXfFhW4ETtdrc4+zfngKEI=","timeStamp":"2018-12-07 17:26:07","version":"1.0"}

名称 类型 说明 备注
code 字符 响应码 具体参照 6返回码
msg 字符 响应信息 响应具体描述
norce 字符 随机字符串
timeStamp 字符 时间戳 格式:2018-12-07 17:26:07
data 字符 加密业务数据 原文是JSON格式的业务参数 AES加密然后再base64编码后的结果
sign 字符 签名值 服务端私钥签名后,做base64编码后的结果

商户端接收到银账通服务端通知的数据后,对所有除了sign以外的参数做字典序排列,并将参数以key=value形式,用&符号进行拼接形成字符串,形如code=200&data=DpAq6Fybf2HDHgxc6k540BKbKem+sBHSsaEzrYNT2gUU6hfOm7yEnDs/vWB9qlmHuTnTRUkdABzCOE3nF2il9yW0G3+o6vyNlEidq2CFuDA=

&msg=OK&norce=5ece581f35b54413b6f5d539de40a527&timeStamp=2018-12-16 14:29:19,然后使用银账通公钥做验签处理,验签通过后,方可进行后续处理。

特别注意:sign参数值为BASE64编码后的结果,验签前需要对sign进行解码处理。 data参数值为BASE64编码结果,后续业务处理也需要进行解码处理,解码后为普通JSON格式字符串,具体参数见data域说明

7.2.5 异步通知报文的验签方案

{"charset":"UTF-8","data":"eyJhbW91bnQiOiIxMC4wIiwibm90aWZ5VGltZSI6IjIwMTgtMTItMDcgMTc6MjU6MTUiLCJvcmRlck5vIjoiNDQ0NDU2NjIyMyIsInNlcnZpY2VJZCI6IjE4MDIwNTIxMTcwODAwMzkiLCJzdGF0dXMiOiIwNCIsInRyYWRlU24iOiIzMjEyMDE4MTIwNzYyNzEzMjI0OTQifQ==","sign":"UUfJCDZYBFk/Tqke3XsN63RBtldyzdq8vK4k74SIkpQu6eaxBGlkd/4AjEkk58ZlWYzXcU4pifDHTjAE2CdGMrS79zZwQ1zaaA2xSZMnvtBVJUryUau6e0E2w4/TXWXC/PrPhhVCI7PD8e44Cnii4yXfFhW4ETtdrc4+zfngKEI=","timeStamp":"2018-12-07 17:26:07","version":"1.0"}

名称 类型 说明 备注
charset String 消息编码格式 现在只支持UTF-8,
version String 消息版本号 现在是1.0 版本
timeStamp String 时间戳 格式:2018-12-07 17:26:07
data String 时间戳 具体通知的JSON格式的业务参数base64编码后的结果
sign String 签名值 服务端私钥签名后,做base64编码后的结果

商户端接收到银账通服务端通知的数据后,对所有除了sign以外的参数做字典序排列,并将参数以key=value形式,用&符号进行拼接形成字符串,形如charset=UTF-8&data=eyJhbW91bnQiOiIxMC4wIiwibm90aWZ5VGltZSI6IjIwMTgtMTItMDcgMTc6MjU6MTUiLCJvcmRlck5vIjoiNDQ0NDU2NjIyMyIsInNlcnZpY2VJZCI6IjE4MDIwNTIxMTcwODAwMzkiLCJzdGF0dXMiOiIwNCIsInRyYWRlU24iOiIzMjEyMDE4MTIwNzYyNzEzMjI0OTQifQ==&timeStamp=2018-12-07 17:26:07&version=1.0,然后使用银账通公钥做验签处理,验签通过后,方可进行后续处理。

特别注意:sign参数值为BASE64编码后的结果,验签前需要对sign进行解码处理。 data参数值为BASE64编码结果,后续业务处理也需要进行解码处理,解码后为普通JSON格式字符串,具体参数见data域说明 {"code":200,"message":"成功","data":null,"list":null}

results matching ""

    No results matching ""