开放商户支付接口V34银联在线支付.docx
《开放商户支付接口V34银联在线支付.docx》由会员分享,可在线阅读,更多相关《开放商户支付接口V34银联在线支付.docx(50页珍藏版)》请在冰点文库上搜索。
开放商户支付接口V34银联在线支付
广州银联网络支付有限公司
支付网关商户接口标准(银联在线支付)
文档属性
文档名称:
广州银联网络支付有限公司支付网关商户接口标准(银联在线支付
项目名称:
版本号:
3.4
文档编号:
PG-20040426001
撰写者:
技术管理部
日期:
2012-1-8
复核者:
日期:
负责者:
日期:
审批者:
日期:
版本历史:
版本号
修改内容
撰写者
发布日期
版权声明:
此文档的版权归广州银联网络支付有限公司所有,作为本系统的最终用户,可以拥有该份文档的使用权,但未征得广州银联网络支付有限公司的书面批准,不得向第三方借阅、出让、出版该文档。
目录
-----------------------------------------------------------------------------------------------------
1.文档介绍4
1.1.读者对象4
1.2.参考文献4
1.3.术语与缩写解释4
2.商户接口概述5
2.1.接口结构图5
2.2.支付接口6
2.2.1.支付数据流程图6
2.2.2.支付数据流程解释7
2.3.数字信封8
2.3.1.数字信封格式8
2.3.2.数字信封格式示例8
2.3.3.订单数据9
2.3.4.订单数据示例9
2.3.5.支付结果数据9
2.3.6.支付结果数据示例10
2.3.7.后台发送支付结果数据10
2.3.8.对账结果数据10
2.3.9.对账结果数据示例11
2.3.10.对账结果数据的签名及数据格式11
2.3.11.支付结果响应码12
3.商户端部署指南15
3.1.系统环境15
4.COM版商户接口函数16
4.1.接口函数16
4.1.1.EncryptMsg()16
4.1.2.DecryptMsg()17
4.1.3.SignMsg()17
4.1.4.VerifyMsg()18
4.1.5.GetResult()18
4.1.6.LastResult属性19
4.1.7.LastErrMsg属性20
4.1.8.CurrVer属性20
5..Net版商户接口函数21
5.1.接口函数21
5.1.1.encryptMsg()21
5.1.2.decryptMsg()22
5.1.3.signMsg()23
5.1.4.verifyMsg()24
5.1.5.GetResult()24
5.1.6.getCurrVer()25
6.Java版商户接口函数26
6.1.接口函数26
6.1.1.EncryptMsg()26
6.1.2.DecryptMsg()27
6.1.3.SignMsg()27
6.1.4.VerifyMsg()28
6.1.5.GetResult()28
6.1.6.LastResult属性29
6.1.7.LastErrMsg属性30
6.1.8.CurrVer属性30
6.1.9.setTestServer(booleanisTestServer)方法30
6.1.10.setConvertEncode(booleanisConvertEncode)方法31
6.2.关于Java加密扩展的出口限制(NJCE版)31
6.2.1.替换程序包31
6.2.2.生成gpk文件31
6.2.3.调用商户接口32
7.PHP版商户接口函数33
7.1.接口函数34
7.1.1.EncryptMsg()34
7.1.2.DecryptMsg()35
7.1.3.SignMsg()36
7.1.4.VerifyMsg()37
7.1.5.GetResult()38
7.1.6.LastResult属性39
7.1.7.LastErrMsg属性39
7.1.8.CurrVer属性39
7.2.密钥文件转换说明40
8.错误代码41
9.渠道参数表42
1.文档介绍
1.1.读者对象
商户系统设计人员、编程人员及测试人员
1.2.参考文献
《银行卡联网联合技术规范》
《RSASecurityLab:
RSACryptographyFAQ》
《中国人民解放军总参谋部56所SJY42证书服务器密码机使用说明》
1.3.术语与缩写解释
缩写、术语
解释
安全服务器
主要的功能是通过硬件方式实现各种密码算法,安全保存密钥及发放证书,安全服务器采取了多种安全措施,能够安全的保存一些重要的密钥,特别适合于对密钥安全性要求特别高的应用。
Verisign证书
银联向美国VerySign公司申请的,用来向顾客认证银联支付网关唯一性的证书。
该证书能够使用内置于InternetExplore浏览器中的VerySign公司的根证书进行认证,顾客无需安装银联服务器证书。
商户证书
银联通过安全服务器给商户颁发的数字签名证书。
银联通过安全服务器认证商户的商户证书,该证书的有效期为一年。
支付接口
银联颁发给商户的服务器端控件,用于通过安全的方式传送订单数据到银联及接收银联实时返回的支付结果。
对账接口
银联颁发给商户的服务器端控件,用于批量接收符合商户查询条件的支付结果。
订单管理系统
银联提供给商户的基于B/S结构的订单管理界面。
2.商户接口概述
2.1.接口结构图
2.2.支付接口
2.2.1.支付数据流程图
2.2.2.支付数据流程解释
1、用户在商户系统生成订单;
2、商户系统使用银联证书的公钥对订单数据进行加密;
3、商户系统使用商户证书的私钥对订单数据进行数字签名,数字签名中包括商户证书的公钥及商户系统当前时间,加密后的订单数据+订单数据数字签名构成一份订单数字信封;
4、商户系统通过表单方式将订单数字信封下载到用户浏览器,并通过用户浏览器自动提交到银联在线;
5、银联在线接收到订单数字信封后,使用银联证书的私钥对加密后的订单数据进行解密;
6、银联在线使用商户证书验证订单数据数字签名的合法性(用于签名的证书是否有效及证书序列号是否一致);
7、银联在线生成支付单;
8、银联在线传送支付单数据至支付网关,并引导用户进入支付网关;
9、用户在支付网关输入银行卡信息(银行卡号、卡密码、信用卡有效期、证件号码)执行支付;
10、支付完毕后,向用户显示支付结果,并弹出一个新窗口将支付结果返回给银联在线;
11、银联在线接收到支付结果后,使用商户证书的公钥对支付结果数据进行加密;
12、银联在线使用银联证书的私钥对订单数据进行数字签名,数字签名中包括银联证书的公钥及银联在线当前时间,加密后的订单数据+订单数据数字签名构成一份支付结果数字信封;
13、银联在线通过表单方式将支付结果数字信封下载到用户浏览器,并通过用户浏览器自动提交到商户系统;
14、商户系统接收到支付结果数字信封后,使用商户证书的私钥对加密后的支付结果数据进行解密;
15、商户系统使用银联证书验证订单数据数字签名的合法性(用于签名的证书是否有效及证书序列号是否一致);
16、商户系统将支付结果输出到用户浏览器,并根据支付结果为用户提供产品或服务。
2.3.数字信封
2.3.1.数字信封格式
订单数字信封包括EncodeMsg、SignMsg二部分,均由订单数据或支付结果数据产生而成。
1、如为订单数据,使用银联证书公钥对订单数据加密产生EncodeMsg域,使用商户证书私钥对订单数据签名产生SignMsg域;
2、如为支付结果数据,使用商户证书私钥对EncodeMsg域解密产生支付结果数据,再使用银联证书公钥对SignMsg域进行合法性验证;
二个域将通过隐藏表单下载到用户浏览器,并由用户浏览器自动提交到数字信封接收方。
域名称
长度
类型
说明
EncodeMsg
无限制
Base64字符串
加密后订单数据
SignMsg
无限制
Base64字符串
订单数据数字签名
2.3.2.数字信封格式示例
2.3.3.订单数据
订单数据是指构造成订单数字信封的原始数据,由各个数据元组成,每个数据元由(数据元名称=数据元值)组成,各个数据元之间使用字符串&进行分隔。
数据元名称
长度
类型
说明
MerId
3
字符串
商户ID
OrderNo
Max(20)
字符串
商户订单号(要求唯一)
OrderAmount
Max(12)
字符串
订单金额,格式:
元.角分
CurrCode
Max(3)
字符串
货币代码,值为:
CNY
CallBackUrl
Max(400)
字符串
支付结果接收URL
ResultMode
1
字符串
支付结果返回方式
0=成功和失败支付结果均返回
1=仅返回成功支付结果
BankCode,
8
字符串
填”00010000”
Reserved01
Max(100)
字符串
保留域1
Reserved02
Max(100)
字符串
保留域2
2.3.4.订单数据示例
MerId=001&OrderNo=20031106100001&OrderAmount=59.32&CurrCode=CNY&CallBackUrl=ResultMode=0&Reserved01=&Reserved02=
2.3.5.支付结果数据
支付结果数据是指构造成支付结果数字信封的原始数据,由各个数据元组成,每个数据元由(数据元名称=数据元值)组成,各个数据元之间使用字符串&进行分隔。
数据变量名
长度
类型
说明
OrderNo
Max(20)
字符串
商户订单号
PayNo
6
字符串
支付单号
PayAmount
Max(12)
字符串
支付金额,格式:
元.角分
CurrCode
Max(3)
字符串
货币代码
SystemSSN
Max(15)
字符串
系统参考号
RespCode
2
字符串
响应码
SettDate
4
字符串
清算日期,格式:
月月日日
Reserved01
Max(100)
字符串
保留域1
Reserved02
Max(100)
字符串
保留域2
2.3.6.支付结果数据示例
OrderNo=20031106100001&PayNo=103450&PayAmount=59.32&CurrCode=CNY&SystemSSN=120034120034&RespCode=00&SettDate=1106&Reserved01=&Reserved02=
2.3.7.后台发送支付结果数据
1.商户可以增加一个后台支付结果接收页面,用来接收处理广州银联网络支付有限公司通过服务器发送的支付结果。
2.商户在自己服务器增加的后台支付结果接收页面,接收到的数据跟2.3.5支付结果数据相同。
区别在于处理完数据后不需要再显示支付结果给客户,而是直接输出"OK"给银联网络服务器端。
银联网络接收到"OK"后将不再发送,否则将一直发送到原来设置的发送次数上限。
3.商户如果需要该功能,需要通过书面方式提交后台支付结果接收页面的URL和后台发送次数上限给银联网络业务人员进行设置。
2.3.8.对账结果数据
对账结果数据是指构造成对账结果的数据,每条记录用Chr(10)分隔,每列用\n分隔
订单的格式:
订单日期\n支付金额\n商户订单号\n支付单号\n系统参考号\n响应码\n
数据变量名
长度
类型
说明
ShoppingDate
8
字符串
交易日期(YYYYMMDD)
PayAmount
Max(12)
字符串
支付金额,格式:
元.角分
OrderNo
Max(20)
字符串
商户订单号
PayNo
24
字符串
交易日期-商户终端号-支付单号
SystemSSN
Max(15)
字符串
系统参考号
RespCode
2
字符串
响应码
2.3.9.
20040426\n12.34\n20040426100001\n20040326-99800001-100001\n100001100001\n00\n
对账结果数据示例
2.3.10.对账结果数据的签名及数据格式
有商户提到我司提供的对账结果数据中无签名,比较担心拿到的对账结果数据的可信度。
对此,我司提供一个新的对账结果数据查询URL(路径与以前的URL相同,只是由GetPayResult.asp改为GetPayResultSign.asp),商户只需用新的URL替换即可。
返回数据时第一行(256字节)为签名数据,行分隔符之后即为对账结果明文数据(不包含第一行之后的行分隔符)。
验签时,通过调用本接口中提供的VerifyMsg()对对账结果数据进行签名验证。
其中CertFile为我司提供的证书文件路径。
返回的数据格式与以前的定义相同,但是为了提供一定的灵活度,可以对行、列分隔符进行定制。
定义如下:
参数名
类型
说明
FileSpliter
字符串
作为每列数据的分隔符,不设置则为原来的“\n”
RowSpliter
字符串
作为每行数据的分隔符,不设置则为原来的CHR(10)
例如,在接口配置文件中将GetResultUrl设为:
2.3.11.支付结果响应码
Code
Action
含义
显示内容
00
Approve
承兑或交易成功
交易成功
01
Decline
查发卡方
交易失败,请联系发卡行
02
Decline
查发卡方的特殊条件
交易失败,请联系发卡行
03
Decline
无效商户
交易失败,请联系发卡行
04
Pick-up
没收卡
交易失败,请联系发卡行
05
Decline
不予承兑
交易失败,请联系发卡行
06
Decline
出错
交易失败,请联系发卡行
07
Pick-up
特殊条件下没收卡
交易失败,请联系发卡行
09
Decline
请求正在处理中
交易失败,请重试
12
Decline
无效交易
交易失败,请联系发卡行
13
Decline
无效金额
金额有误,请重试
14
Decline
无效卡号(无此账号)
无效卡号,请换卡重试
15
Decline
无此发卡方
此卡不能受理
17
Decline
拒绝但不没收卡
交易失败,请联系发卡行
19
Decline
重新送入交易
交易失败,请重试
20
Decline
无效响应
交易失败,请联系发卡行
21
Decline
不能采取行动
交易失败,请联系发卡行
22
Decline--
故障怀疑
操作有误,请重试
23
Decline
不可接受的交易费
交易失败,请联系发卡行
25
Decline
找不到原始交易
交易失败,请联系发卡行
30
Decline
格式错误
交易失败,请联系发卡行
31
Decline
交换中心不支持的银行
此卡不能受理
33
Decline
过期的卡
卡片过期,请联系发卡行
34
Pick-up
有作弊嫌疑
交易失败,请联系发卡行
35
Pick-up
受卡方与代理方联系(没收卡)
交易失败,请联系发卡行
36
Pick-up
受限制的卡
此卡有误,请换卡重试
37
Pick-up
受卡方电话通知代理方安全部门
交易失败,请联系发卡行
38
Decline
超过允许的PIN试输入
密码错误次数超限
39
Decline
无贷记账户
交易失败,请联系发卡行
40
Decline
请求的功能尚不支持
交易失败,请联系发卡行
41
Pick-up
挂失卡
交易失败,请联系发卡行
42
Decline
无此账户
交易失败,请联系发卡行
43
Pick-up
被窃卡
交易失败,请联系发卡行
44
Decline
无此投资账户
交易失败,请联系发卡行
51
Decline
资金不足
余额不足,请查询
52
Decline
无此支票账户
交易失败,请联系发卡行
53
Decline
无此储蓄卡账户
交易失败,请联系发卡行
54
Decline
过期的卡
卡片过期,请联系发卡行
55
Decline
不正确的PIN
密码错,请重试
56
Decline
无此卡记录
交易失败,请联系发卡行
57
Decline
不允许持卡人进行的交易
该卡不支持此项服务,请联系发卡行
58
Decline
不允许终端进行的交易
交易失败,请联系发卡行
59
Decline
有作弊嫌疑
交易失败,请联系发卡行
60
Decline
受卡方与代理方联系(不没收卡)
交易失败,请联系发卡行
61
Decline
超出金额限制
金额超限
62
Decline
受限制的卡
交易失败,请联系发卡行
63
Decline
侵犯安全
交易失败,请联系发卡行
64
Decline
原始金额错误
交易失败,请联系发卡行
65
Decline
超交易次数
交易失败,请联系发卡行
66
Decline
受卡方通知受理方安全部门
交易失败,请联系发卡行
67
Pick-up
强行受理(要求在自动会员机上没收此卡)
交易失败,请联系发卡行
68
Decline
接收的响应超时
交易超时,请稍后重试
75
Decline
允许的输入PIN次数超限
密码错误次数超限
76
Decline
无效账户
交易失败,请联系发卡行
77
Decline
此卡需密码
交易失败,请联系发卡行
78
Decline
无效终端
交易失败,请联系发卡行
90
Decline
正在日终处理(系统终止一天的活动,开始第二天的活动,交易在几分钟后可再次发送)
交易失败,请稍后重试
91
Decline
发卡方不能操作
交易失败,请稍后重试
92
Decline
金融机构或中间网络设施找不到或无法达到
交易失败,请稍后重试
93
Decline
交易违法、不能完成
交易失败,请联系发卡行
94
Decline
重复交易
交易失败,请稍后重试
95
Decline
核对差错
交易失败,请稍后重试
96
Decline
交换中心系统异常、失效
交易失败,请稍后重试
97
Decline
无此终端
交易失败,请稍后重试
98
Decline
交换中心收不到发卡方应答
交易超时,请稍后重试
99
Decline
PIN格式错
交易失败,请稍后重试
A0
Decline
MAC鉴别失败
交易失败,请稍后重试
A2
Approve
交换中心转发了原交易请求,但未收到发卡方应答时,交换中心直接向受理方应答为有缺陷的成功交易
交易结果请查询发卡行
BF
Decline
深银联支付号/授权码与银行卡号不匹配
交易失败,请联系发卡行
XX
Decline
超时已冲正
交易失败,请稍后重试
3.商户端部署指南
3.1.系统环境
接口版本
操作系统/系统平台
开发语言
备注
COM版本
WindowsNT4.0
Windows2000
ASP
VB
Microsoft.Net版本
.NETFramework2.0/3.0/3.5
C#.NET
VB.NET
Java版本
JRE1.3.1
JRE1.4.2
JRE1.5.0
Java
PHP
(注:
如果使用JRE1.3.1版本,需要把jce-1_2_2.zip解压后得到的jce1.2.2目录下lib文件夹中的四个jar文件拷贝到JRE1.3.1安装目录的lib文件夹中的ext文件夹下面,并在ext同级目录的security文件夹中修改java.security文件,在其中添加security.provider.3=com.sun.crypto.provider.SunJCE)
Java版本(NJCE)
JRE1.4.2
JRE1.5.0
Java
解决了Java加密扩展的出口限制,而且商户无法修改安全策略文件的情况。
且修改了BC包的命名空间,防止与商户系统中的其它版本的BC包产生冲突。
对于采用Java环境的商户,建议采用NJCE版。
PHP版本
PHP4.4.8及其以上版本
PHP
私钥文件只支持PEM格式,需采用工具将pfx转换为PEM格式
4.银联在线支付商户端LOGO使用说明
银联在线支付LOGO:
使用方式请参考附件《“银联在线支付”品牌标识布放规范》
5.COM版商户接口函数
对象名称
方法/属性
功能
OpenVendorV34.NetTran
EncryptMsg()方法
数字信封加密
DecryptMsg()方法
数字信封解密
SignMsg()方法
数字信封签名
VerifyMsg()方法
数字信封验证签名
GetResult()方法
获取订单数据
LastResult属性
上次调用后的返回结果
LastErrMsg属性
上次调用后的出错信息
CurrVer属性
控件版本
5.1.接口函数
5.1.1.EncryptMsg()
FunctionEncryptMsg(
ByValTobeEncryptedAsVariant,
ByValCertFileAsVariant,
)AsLong
功能:
对数字信封进行加密
参数:
VariantTobeEncrypted:
待加密的数字信封,输入值
VariantCertFile:
公钥证书的路径地址,输入值
返回值:
Long型
0为调用成功,密文见LastResult属性
-1为调用失败,失败原因见LastErrMsg属性
5.1.2.DecryptMsg()
FunctionDecryptMsg(
ByValTobeDecryptedAsVariant,
ByValKe