大宗商品电子交易市场银行接口转账协议规范.docx
《大宗商品电子交易市场银行接口转账协议规范.docx》由会员分享,可在线阅读,更多相关《大宗商品电子交易市场银行接口转账协议规范.docx(23页珍藏版)》请在冰豆网上搜索。
大宗商品电子交易市场银行接口转账协议规范
大宗商品电子交易市场银行接口转账协议规范
提供给专研行业技术发展和交易市场的技术部内部人员参考之用。
文件状态:
[√]草稿
[ ]正式发布
[ ]正在修改
文件标识:
银行转帐协议规范
当前版本:
V2.0
作 者:
黄东
完成日期:
2008-08-15
版本号
*变化
状态
简要说明
日期
变更人
审核日期
审核人
V2.0
M
协议修订
2008-08-15
黄东
V2.1
A
协议修订,增加对金额处理的说明。
即发送方金额*100,接收方金额除以100,使金额不出现小数位。
加入帐户图。
增加大数据量文件格式定义。
2008-10-14
蒋加君
V2.2
M
50010增加“收益类型”字段
2008-10-28
蒋加君
V2.3
M
50003,50004,50011增加
“开户银行”字段
2008-10-31
V2.4
M
50015增加“查询日期”字段
2008-11-3
V2.5
M
修改20020,10009。
删除20016,20022。
增加交易说明,帐户结构说明。
2008-12-9
*变化状态:
A——增加,M——修改,D——删除
第一章 通讯协议格式
1.1、通讯方式。
从Client到通信服务器的通信在底层符合TCP/IP协议规范,其应用协议是针对转帐特点而设计的。
双方通信采用异步通信方式,采用短连接方式,双方均可发起指令,当一方发起指令后在处理完毕后会主动断开。
通信工具采用MTI(Transaction MiddlewareSystem)提供的包传输协议,每一段数据组成一个数据包,各段数据采用各个数据包同时连续发送的方法实现。
1.2、协议规范
在本协议中无论字符,数字全部采用字符串方式传送。
为避免金额出现小数,所有金额在发送时都乘以100后发送,接收方除以100后进行处理。
如转帐资金为1000.23元,数据传输时即为‘100023’,不采用二进制或其它格式存放数据。
包头中各字段顺序固定,对于有长度要求的,长度不够时采用右补空格填充,如‘100002A ’。
包体中对数据长度不做具体要求,有具体的分割符号来区分。
1.3、协议包格式约定
1.3.1包头结构定义
MtiHead=Packed RECORD
HeadType:
Array[0..4] of CHAR; //数据帧类型
SubType:
Array[0..1] of CHAR; //子数据帧类型
HeadVer:
Array[0..1] of CHAR; //协议版本号 目前版本必须为字符’20’
ReqMac:
Array[0..11] of CHAR; //请求方MAC地址
ReqID:
Array[0..19] of CHAR; //请求方标识,应答时原样返回
DataLen:
Array[0..4] of CHAR; //数据帧长度
NextFlag:
Array[0..0] of CHAR; //是否有下一包数据N没有,Y有
EncFlag:
Array[0..0] of CHAR; //加密标志Y加密N不加密
BankID:
Array[0..2] of CHAR; //银行代码
RtnNO:
ARRAY[0..4]of CHAR; //返回码‘00000’为成功,其他为失败
DataCol:
ARRAY[0..0]of BYTE; //包体数据字段列数没有数据返回时填0x00
DataRow:
Array[0..3] of CHAR; //包体数据行数没有数据返回时填‘0000’
ExWaterID:
Array[0..13] of CHAR; //流水号 系统唯一流水号
CommInfo:
ARRAY[0..19] of CHAR; //保留信息 CommInfo[0]=’1’资金管理客户端
//CommInfo[0]=’2’交易客户端
CheckNum:
ARRAY[0..4] of CHAR; //校验和
end;
说明:
HeadType是系统所有交易类型的定义,如90001,90002等
SubType:
是系统所有交易子类型定义,子类型不唯一,只能和主类型配合一起使用
DataLen:
是数据域的长度,不包括包头数据长度
NextFlag:
当有多包数据要传输时,如果有下一包数据Y,否则N,如果只有一包或没有数据包填N
RtnNO:
返回码 ‘00000’为成功,其他为失败
EncFlag:
加密标志,代表数据域是否采用加密处理
ExWaterID:
系统唯一标识
BankID银行代码:
银行代码
银行名称
001
浦发行
002
工行
003
招行
004
农行
005
建行
006
交行
007
广发行
008
中国银行
009
商行
CheckNum包头数据校验和,具体校验算法另行定义
数据包结构具体如下表所示:
项目
数据
包头
HeadType
数据帧类型
SubType
子数据帧类型
HeadVer
协议版本号 目前版本必须为字符’20’
ReqMac
请求方MAC地址
ReqID
请求方标识,应答时原样返回
DataLen
数据帧长度
NextFlag
是否有下一包数据N没有,Y有
EncFlag
加密标志0x01加密0x00不加密
BankID
银行代码
RtnNO
返回码
DataCol
包体数据字段列数
DataRow
包体数据行数
ExWaterID
流水号
CommInfo
保留信息
CheckNum
校验和
包体
DataPack
USERID<#>CHANGEMONEY<#>INOUTTYPE<#>
0001<#>3005.23<#>1<#>
0002<#>3005.23<#>1<#>
0003<#>3005.23<#>1<#>
1.3.2包体结构定义
包体结果说明:
1.包体全部内容均为字符串。
2.<#>为各元素之单的分割符,表示一个ACSCII1的字符。
<#>目前定义为0x08
3.每个元素的顺序可以任意改变,如某元素信息不存在,表示为空值,但列名必须存在。
4.应答(错误)时,包体返回错误码返回码(RtnNo),错误返回信息(RtnInfo)。
5.应答(正确)时,包体不包含返回码和返回信息,只包含协议的返回信息并填包头RtnNO为‘00000’,如果没有返回信息,则包头的DataCol为0x00,DataRow为‘00000’,包体为空(不填返回数据,只填包头RtnNO为‘00000’)。
6.如果不需要验证密码,则密码填入十个星号(**********)
7.目前金额处理为实际金额*100使金额不出现小数位,例如:
金额5623.12,协议中发送的金额为562312。
即发送方发送时金额*100,接收方处理金额时将金额除以100。
请求与应答数据的如以下格式:
请求方或应答方:
第1行:
列名1<#>列名2<#>...<#>列名n<#>
第2行:
数据1<#>数据2<#>...<#>数据n<#>
第3行:
数据1<#>数据2<#>...<#>数据n<#>
第N行:
...... <#>
举例如下:
请求:
CustTradeID<#>ChangeMoney<#>MoneySty<#>Memo<#>
0001<#>3005.23<#>1<#><#>
0002<#>3005.23<#>1<#>10052<#>
0003<#>3005.23<#>1<#><#>
应答(错误):
RtnNo<#>RtnInfo<#>
10001<#>资金密码校验失败<#>
应答(正确有返回数据):
CustTradeID<#>ChangeMoney<#>MoneySty<#>Memo<#>
0001<#>3005.23<#>1<#><#>
应答(正确无返回数据):
1.3.3银行具体帐户结构图
市场人民币总帐户
交易商资金子帐户
交易商1
交易商N
交易资金子帐户
担保金子帐户
交易资金子帐户
担保金子帐户
手续费子帐户
代收代付子帐户
交易市场收益子帐户
利息结算子帐户
市场结算帐户
1.市场人民币总帐户:
市场在银行开设的资金监管帐户。
下设“交易商资金子帐户”“交易市场收益子帐”虚拟帐户。
交易商资金子帐户:
为各交易商所有资金总和。
交易市场收益子帐:
市场的所有收益总和。
市场可已将此帐户中资金划转到“市场结算帐户”。
其中包括手续费子帐户,代收代付子帐户,利息结算子帐户。
2.市场结算帐户:
市场在银行开设的非监管帐户,此帐户资金市场可以自由划转。
1.3.4系统结构图
第2章 元素列表定义
2.1元素约定
接口中元素名不区分大小写
2.2元素列表
元素名
元素含义
字符
说明
HeadType
数据帧类型
C5
定长为五位数字,1和2开头代表银行发起,5,6代表市场发起
SubType
子数据帧类型
C2
ReqID
请求方标识
C20
用于标记请求时的流水号,在应答时直接原样返回
HeadVer
协议版本号
C2
协议版本号 目前版本必须为20
ReqMac
请求方MAC地址
C12
DataLen
数据帧长度
C5
不包括包头数据长度
NextFlag
是否有下一包数据
C1
N没有,Y有
EncFlag
加密标志
C1
Y加密N不加密
DataCol
包体数据字段列数
C1
DataRow
包体数据行数
C4
ExWaterID
流水号
C14
系统唯一标识
DelWaterID
被冲正流水号
C14
用于冲正,被冲正交易的流水号
RtnNo
返回码
C5
RtnInfo
返回信息
C50
CommInfo
保留信息
C20
CheckNum
校验和
C5
PinKey
主密钥
C20
MacKey
MAC密钥
C20
BankID
银行编号
C3
001浦发行
002工行
003招行
004农行
005建行
006交行
007广发行
008中国银行
009商行
BankIDIn
转入银行编号
C3
BankSubNo
银行分行号
C10
BankName
银行名称
C50
BankPosNo
银行网点
C20
BusinType
业务类型
C1
0-普通转帐
OperID
柜员编号
C10
银行操作人员编号
CompBankAcctNo
市场银行帐号
C40
Nationality
国籍或地区
C3
CustBankAcctNo
客户银行帐号
C40
NCustBankAcctNo
客户新银行帐号
C40
CustBankPass
客户银行密码
C10
NCustBankPass
新客户银行密码
C10
BankEnableMoney
银行可用资金
C20
客户可用资金
BankEOutMOney
银行可取资金
C20
客户可取资金
BankWaterID
银行流水号
C14
CompId
市场公司编号
C8
CompIdIn
转入市场公司编号
C8
SubCompId
市场分公司编码
C8
SubCompIdIn
转入市场分公司编码
C8
CustTradeID
客户交易账号
C40
CustTradePwd
客户交易密码
C10
CustMoneyPwd
客户资金密码
C10
NCustMoneyPwd
客户新资金密码
C10
CustOpenType
客户类别
C1
0个人,1机构
CompEnableMoney
市场可用资金
C20
CompOutMoney
市场可取资金
C20
可转资金
BailMoney
保证金
C20
GoodMoney
货款
C20
TrasComm
手续费
C20
CompWaterID
市场流水号
C14
FirmID
会员编号
C15
FirmName
客户名称
C100
支持存放机构户名称
CardIDType
客户证件类型
C1
1身份证,0其它,8组织机构代码,9营业执照
CardID
客户证件号
C30
PostCode
邮政编码
C10
CustAddress
客户地址
C100
TelNo
电话号码
C20
FaxNo
传真号码
C20
MoveTel
手机号码
C20
Email
电子邮件
C20
Memo
业务备注
C200
相当于备注元素
OrderCode
转帐预约号
C10
GainMoney
利息
C20
保留利息税的利息资金
TaxGainMoney
利息税
C20
市场结息时用
TradeDate
交易日期
C8
TradeTime
交易时间
C6
MoneyType
币种
C1
0人民币,1美元,2港币
ChangeMoney
变动资金
C20
DifBalance
差额资金
C20
StartDate
查询起始日期
C8
EndDate
查询结束日期
C8
WaterState
流水状态
C1
含义:
0成功、1存疑、2失败、3已冲正
MoneySty
资金类型
C1
0保证金,1货款 默认0
BankTCommMoney
银行手续费帐户资金
C20
BankMidCountMoney
银行代收代付帐户资金
C20
GainAccMoney
利息结算帐户资金
C20
TradeStart
交易发起方
C1
0市场发起,1银行发起
TradeType
交易类型
C1
0市场转银行,1银行转市场
LimitMoney
出金限额
C20
新加入 市场内部使用
AccDB
访问数据库标识
C50
新加入 市场内部使用
SqlStr
Sql语句
C200
新加入 市场内部使用多条语句用#$D#$A分隔
ProName
存储过程名称
C50
新加入 市场内部使用
Param
存储过程参数
C200
新加入 市场内部使用
RetData
变体数据
0
新加入 市场内部使用 不限制长度
ProRet
存储过程返回值
C200
新加入 市场内部使用 不限制长度
IsMult
是否为多条语句(0单条,1多条)
C1
CheckState
审核状态
C1
0未审核,1终审核,2初审,3初始否决,4终审否决
InComeType
收益类型
C1
0手续费,1代收代付,2利息
AccBankName
开户银行名称
C100
中国银行新协议增加
NAccBankName
新开户银行名称
C100
中国银行新协议增加
QueryDate
查询日期
C8
2.3返回码定义
要求银行和市场常见返回应遵照以下约定:
返回码
返回信息
返回码
返回信息
00000
交易成功
31001
该资金账号已挂失
10001
资金密码校验失败
31002
该资金账号已冻结
10002
资金账户余额不足
31003
该币种已经存在
10003
累计资金超出最大限定
31004
该代理人已经存在
10004
银行流水号重复
31005
该代理人不存在
10005
被冲正流水不存在(冲正交易)
31190
该币种不存在
10006
原流水已经冲正(冲正交易)
31200
当天有业务发生不可变更帐户信息
10007
与原流水信息不符(冲正交易)
31240
该银行账户状态错
10008
资金账户余额不足,不允许冲正
31260
无此客户账号
10009
身份证号码不一致
31270
该客户账号已存在
10010
交易账户状态被挂起
31290
该客户账号已销户
10011
交易账户不存在
31300
该客户账号已挂失
10012
交易账户已经销户
31310
该客户账号已冻结
10013
交易账户与银行方账户未建立对应关系
31320
该客户账号状态错误
10014
交易账户与银行方账户已建立对应关系
31330
该客户账号有未回交割
10015
该客户转帐功能未开启
31340
该客户账号当天有委托
10016
客户被限制转账
31350
有托管股票,不可销户
10018
预约流水不存在
31360
有托管股票,客户不可修改
10019
预约流水信息不符
31380
存在购回流水,
10020
预约流水已取款
31390
未撤消指定,
10021
预约流水未生效
31400
非交易时间
10024
单笔资金超限
31470
价格输入错误
10025
被查询流水已经成功
31500
可转资金不足
10026
被查询流水已经失败
31540
修改密码失败
10027
被查询流水不存在
33010
客户银行帐号错误
10028
被查询流水状态未知
33020
市场账号错误
10031
市场编码错误
33030
对应关系状态错误
10032
系统交易日期不符
33050
交易资金错误
10033
此交易未开通
33060
新工作密钥生成失败
10034
不允许该操作方式
33070
转帐时间已过
10035
市场公司未签到
33080
市场总部未取银行明细
10036
市场公司已经签退
33090
市场总部限制转帐
10037
市场公司已签到
33100
此笔交易被手工取消
10038
当天有业务发生,不允许销户
33110
币种错
10039
市场公司未签退
33120
不支持联机开销户
10041
市场系统错误
33140
无此币种
10042
MAC校验失败
33150
客户类别错误
10043
通讯校验失败
33160
当天有业务发生不能销户
10044
通讯消息体格式错误
33170
银行系统错误
10047
账户姓名不符
33180
取银行明细失败
10048
资金账号与管理账号未建立对应关系
33190
取市场明细失败
10049
资金账号与管理账号已建立对应关系
33200
交易类别非法
10050
签约银行不存在
14005
连接市场失败
33210
当日已经有成功转入的相同交易
14006
发送请求到市场失败
33220
不支持该业务类别
14007
接受市场应答失败
33230
没有该客户账号对应的信息
14008
连接交易系统失败
70000
参数错误
70001
其他错误
返回码
返回信息
返回码
返回信息
21001
连接银行前置失败
21101
连接数据库失败
21002
发送数据到银行前置失败
21102
数据库连接中断不接受指令
21003
接收银行前置应答失败
21103
系统暂时不接受指令
21004
发送数据到资金管理中间件失败
21104
Sql语句执行失败
21005
接收资金管理中间件应答失败
21105
存储过程执行失败
21006
银行前置发送请求到银行失败
21106
等待审核
21007
银行前置接收银行应答失败
21008
银行前置返回银行应答到资金管理失败
21107
保证金转货款失败
21009
连接银行失败
21108
货款转保证金失败
21010
协议号转换失败
21109
原密码错误
21011
帐户银行类型错误
21110
会员号不存在
21012
返回应答到交易客户端,资金管理客户端失败
21111
修改出金审核限额失败
21013
协议版本错误
21112
登录帐号不存在
21014
资金管理登录密码错误
21113
登录密码错误
21015
通用错误标志(发回错误信息)
21114
帐号未登录
21016
协议解析错误
21115
系统未日结
21017
连接交易后台失败
21116
已有未审核资金,不允许再出金
21018
接收交易后台返回信息失败
21019
发送数据到交易后台失败
第3章 具体指令格式
3.1支持的交易指令
3.1.1交易号编码规则
交易号共5位数字,第一位标识由那方发起交易,,后4位标识交易的编号流水.
第一位代表意义
交易号
描述
5
市场方发起交易
1
银行方发起交易
8
资金管理客户端
9
客户端发起交易
3.1.2市场发起交易
交易号
交易名称
交易描述
50001
市场签到
50002
市场签退
50003
银行转帐签约
50004
银行转帐解约
50005
银行转市场
50006
市场转银行
50007
冲银行转市场
50008
冲市场转银行
50009
市场手续费划转
此协议用在担保金三方监管模式
50010
市场手续费收益转结算帐户
50011
变更银行账户
50012
查询某笔交易状态
50013
取银行转帐明细
系统对账用
50014
发送市场资金信息