在一个项目中使用过的银联电子交易协议,贴出来,希望能帮助有需要的人!
协议
交易代码
交易代码 | 描述 |
101 | 转帐请求 |
102 | 查询请求 |
201 | 转帐响应 |
202 | 查询响应 |
说明:
A. 以上所有的交易码,在传输过程中,以字符串形式表示。
B. “10x”格式的交易数据是指从支付网关发送给银行前置机的数据。
C. “20x”格式的交易数据是指从银行前置机发送给支付网关的数据。
D. 银行客户请求的数据包加上6位包长,不足6位左对齐右补空格,即角行客户请求的包为:6位包长+3位交易代码+数据内容(包长指交易代码+数据内容的长度)。
E. 银行应在返回的数据包加上6位包长,不足6位左对齐右补空格,即银行返回的包为:6位包长+3位交易代码+数据内容(包长指交易代码+数据内容的长度)。
F. 数据包中不定长串的对齐方式一律采用“左对齐右补空格”。
响应状态码
返回状态码 返回信息 |
0000 转帐成功 查询成功 |
1001 转帐时,源账户余额不足,转账失败 |
1002 转账时,源账号不存在,转账失败 查询时,账号不存,查询失败 |
1003 转账时,目标账号不存在,转账失败 |
1004 转账时,银行正在结算,转账失败 查询时,银行正在结算,查询失败 |
1005 转账时,源账号非法,转账失败 查询时,账号非法,查询失败 |
1098 转账时,银行端其他错误,转账失败 查询时,银行端其它错误,查询失败 |
1099 转账时,源账号不能进行转账,转账失败 查询时,账号不能进行查询,查询失败 |
1100 转账时,重发的转账请求,转账成功 |
说明:
A. 上表是银行返回的状态码取值,不能不返回,不能私自增加自定义状态码。
B. 请返回最能描述问题的状态。
C. 若错误原因没有被本表中状态码明确描述均需返回1098
D. 当银行已经划款成功并返回响应信息后如果再收到同一划款请求时返回1100,不得进行重复划款(可由划款流水号判断)。
E. 数据包中不定长串的对齐方式一律采用“左对齐右补空格”。
转账请求协议[101]
名称 | 类型/长度 | 描述 |
交易代码 | char(3) | ‘ 101’ |
商户编码 | char(10) | 定长字符串 |
转账流水号 | char(20) | 定长字符串 |
银行代码 | char(4) | 定长字符串 |
源账号 | varchar(50) | 变长字符串 |
目标账号 | varchar(50) | 变长字符串 |
转账金额 | decimal(14,2) | 变长实数串 |
发送标志 | char(1) | 定长字符串 |
最后发送时间 | char(14) | 定长字符串 |
备注信息 | varchar(40) | 变长字符串 |
说明:
A. 数据包总长度为定长206个字符。
B. 银行按“转账金额”进行划款。
C. “转账流水号”作为银行端唯一识别此交易的标志,以防止重复划款;对于不同的交易此号不相同。
D. “发送标志”取值含义定义为:“0”第一次向银行发送;“1”已经发送给银行但是没有接收到响应数据;“2”银行返回了不成功的响应结果。
E. “最后发送时间”填写发送本交易数据时的当地时间。时间格式为“YYYYMMDDHHMMSS”,即为14位定长字符串。
F. 数据包中不定长串的对齐方式一律采用“左对齐右补空格”。
转账应答协议[201]
名称 | 类型/长度 | 描述 |
交易代码 | char(3) | 201 |
商户编码 | char(10) | 定长字符串 |
转账流水号 | int(20) | 定长字符串 |
银行代码 | char(4) | 定长字符串 |
请求转账金额 | decimal(14,2) | 变长字符串 |
实际转账金额 | decimal(14,2) | 变长字符串 |
交易时间 | char(14) | 定长字符串 |
响应状态码 | char(4) | 定长字符串 |
备注信息 | varchar(40) | 变长字符串 |
说明:
A. 数据包总长度为定长123个字符。
B. 如果成功,银行已经按“实际转账金额”进行了转账。
C. “交易时间”填写发送本应答数据时的当地时间。时间格式为“YYYYMMDDHHMMSS”,即为14位定长字符串。
D. 数据包中不定长串的对齐方式一律采用“左对齐右补空格”。
E. “响应状态码”中返回状态代码,根据响应状态码可分析请求结果。
查询请求协议[102]
名称 | 类型/长度 | 描述 |
交易代码 | char(3) | ‘ 102’ |
商户编码 | char(10) | 定长字符串 |
银行代码 | char(4) | 定长字符串 |
查询账号 | varchar(50) | 变长字符串 |
发送时间 | char(14) | 定长字符串 |
备注信息 | varchar(40) | 变长字符串 |
说明:
A. 数据包总长度为定长121个字符。
B. “发送时间”填写发送本交易数据时的当地时间。时间格式为“YYYYMMDDHHMMSS”,即为14位定长字符串。
C. 数据包中不定长串的对齐方式一律采用“左对齐右补空格”。
查询应答协议[202]
名称 | 类型/长度 | 描述 |
交易代码 | char(3) | 202 |
商户编码 | char(10) | 定长字符串 |
银行代码 | char(4) | 定长字符串 |
账户金额 | decimal(14,2) | 变长字符串 |
交易时间 | char(14) | 定长字符串 |
响应状态码 | char(4) | 定长字符串 |
备注信息 | varchar(40) | 变长字符串 |
说明:
A. 数据包总长度为定长89个字符。
B. 如果成功,“账户金额”中返回账户余额。
C. “交易时间”填写发送本应答数据时的当地时间。时间格式为“YYYYMMDDHHMMSS”,即为14位定长字符串。
D. 数据包中不定长串的对齐方式一律采用“左对齐右补空格”。
E. “响应状态码”中返回状态代码,根据响应状态码可分析请求结果。