招商银行网上企业银行嵌入式直连方案.docx
《招商银行网上企业银行嵌入式直连方案.docx》由会员分享,可在线阅读,更多相关《招商银行网上企业银行嵌入式直连方案.docx(55页珍藏版)》请在冰点文库上搜索。
招商银行网上企业银行嵌入式直连方案
企业银行商务支付系统
WEB版开发指南
version3.0
招商银行
ChinaMerchantsBank
版权所有不得复制
修订记录
日期
修订版本
修订人
修订内容
2012-4-27
1.0
杨成海
2014-5-29
2.0
徐蓓
增加3.3.4支付内部户订单和3.3.5预保留订单;增加4.1.2支付结果通知(支付收方内部户和预保留);修改3.3.1支付订单、电票出票订单、电票背书订单增加字段“支付结果通知地址”;修改4.3通知地址设置。
2015-5-25
3.0
徐蓓
增加6.自颁发文件证书;3.3订单信息增加字段“文件证书签名时间戳”;修改2.2和3.1增加自颁发证书流程相关说明。
1、前言
1.1.概述
本开发指南对招商银行企业银行商务支付系统(以下简称本系统)进行详细地描述,通过该指南可以对本系统有个全面地了解,并可用于指导网站如何与该系统进行交互,实现商务支付
1.2.背景
目前网站有自己的信息流和物流管理,唯独缺少与之相配套的支付手段(既电子商务的资金流的一部分)。
企业银行的商务支付业务就是基于银行作为支付手段的提供者,参与该业务流程的一种方案,以便实现初步的电子商务支付功能。
1.3.阅读对象
预期读者为实现和本系统进行交互的开发人员,以及其他需要了解本系统的人员。
1.4.术语定义
订单:
由网站产生的,包含企业购买商品或享受服务的要素的信息,包括支付信息和业务信息。
商务支付:
网站产生的订单通过企业银行完成订单支付等功能的业务。
2、解决方案
2.1.概述
本系统整合在招商银行企业银行公众版中,与商务支付旧版本向下兼容。
网站将订单信息以post的方式提交到银行指定网页,买家在该网页上进行支付。
买家操作时无需安装客户端软件(使用windows系统自带的IE浏览器),系统维护升级时也会自动进行无需人工干预。
2.2.结构示意图
图1.商户使用网银证书的流程图
图2.商户使用自颁发证书流程图
●自颁发证书/下载公钥:
如果商户使用文件证书,则需要商户的企业网银管理员登录企业网银给自己颁发证书。
颁发后下载商户的文件证书和企业网银的公钥或证书。
●订单提交:
企业在网站上购物,提交订单进行支付。
●签名:
网站生成该企业的订单,并通过直联前置机对订单信息进行签名。
签名可以使用商户的网银硬件证书(u-key)通过银企直联系统完成,也可以通过企业自签发的文件证书完成。
●订单信息和签名:
网站将订单信息以及签名结果post到招行指定的网页。
●支付信息确认:
企业确认订单信息是否正确,正确后登录企业银行公众版进行订单支付。
●订单支付:
企业对该订单进行支付(蓝色区域表示不可修改)
●支付经办结果及签名:
订单支付后,银行通知商户该订单的支付经办结果及支付经办结果签名信息。
数据以HTTP协议post的形式将表单提交到商户指定的网址,数据编码与商户提交订单信息时的编码一致。
(例如商户以GB2312编码提交订单信息到银行,这里则以同样的编码GB2312返回)
●验证签名:
商户对支付经办结果及支付经办结果签名进行验签,保证银行系统传过来的数据没有被篡改(可选步骤)。
验证签名可以通过银企直联前置机完成,也可以通过开发包(jar)完成。
如果通过前置机完成,则不需要输入公钥,前置机会自动下载公钥,如果通过开发包则需要通过企业网银下载招行企业网银证书(含公钥)。
2.3.客户端要求
系统要求
●硬件:
建议Pentium133以上CPU,1GBRAM,至少256色(建议16位以上真彩)显示,10G以上的空闲硬盘空间。
对数字证书卡用户,需要一个串口或USB口,用于安装数字证书卡驱动器;
●操作系统:
建议中文/英文WINDOWSXP/2003/7/2008,对英文WINDOWS,需要外挂中文平台;
●浏览器:
必须安装MicrosoftInternetExplorer6.0或6.0版本以上的浏览器。
本系统不支持Netscape的浏览器;
●系统环境:
应确保系统中没有病毒、木马等有害程序。
企业要求
●开通招行企业银行(版本V4.0以上);
●开通商务支付等业务,经办用户需要拥有招行签发的数字证书卡。
3、订单支付
3.1.重要说明
网站将订单及订单签名数据以post的形式将表单提交到招行指定网址。
post的信息包括:
域order(订单信息,必输)、域sigdat(订单签名,可空)、域charset(信息编码,可空,空表示订单信息为gb2312编码)。
域数据如果没有特别说明,都采用以下的数据格式:
1、每条记录以'\0'结束;
2、每条记录由多个字段组成,字段间用";"(空格加分号)分开,各个字段格式为:
字段名=数值;
3、字段之间没有顺序关系;
4、如果某个字段对应的数值为空,则该字段可以省略;
5、字段如果对应日期,格式为:
yyyymmdd;对应时间,格式为:
hhmmss;对应日期+时间,格式为:
yyyymmddhhmmss;
6、字段如果对应金额,以元为单位,格式为:
nnnnnnnnnnnnn.nn,整数部分最多13位,小数部分最多2位。
订单提交的地址:
【测试环境】
无签名:
http:
//58.61.30.110/CmbBank_GenShell/UI/GenShellPC/Login/B2B/OrderConfirm.aspx
网银证书签名:
测试环境暂时无法签名,因为没有提供硬件key。
http:
//58.61.30.110/CmbBank_GenShell/UI/GenShellPC/Login/B2B/OrderConfirmSigned.aspx
自颁发文件证书签名:
http:
//58.61.30.110/CmbBank_GenShell/UI/GenShellPC/Login/B2B/OrderConfirmSS.aspx
【生产环境】
无签名:
建议生产环境不要使用没有商户签名的订单提交,该功能仅作向下兼容支持。
网银证书签名:
自颁发文件证书签名:
https:
//
提示:
由于测试环境无法发硬件网银key,所以无法在公网测试环境测试网银证书签名的清单提交。
因此如果要使用网银证书签名,请在测试环境先测试无签名的订单提交,上线前在生产环境验证签名版本。
3.2.charset(信息编码)
由商户指定order域(订单信息)编码,WEB版商务支付新增域,可填gb2312或utf-8,空默认为gb2312。
result(返回信息)编码与order域(订单信息)编码相同。
3.3.order(订单信息)
Order为单记录;现在支持3种订单(与旧版商务支付3.1版保持一致):
支付订单、电票出票支付订单、电票背书支付订单。
3.3.1支付订单
支付订单
名称
代码
类型
可空
描述
商户编号
MCHNBR
C(10)
否
网站的企业银行商户编号
订单号
REFORD
C(40)
否
订单号+订单支付号必须唯一
查询对账单时,可查到订单号+订单支付号信息,但只显示20个字符,因此建议商户生成的订单号+订单支付号长度不要超过20个字符
订单支付号
SUBORD
C(10)
是
订单币种
CCYNBR
C
(2)
否
如10表示人民币
订单金额
TRSAMT
M
否
收方账号
CRTACC
C(35)
否
该账号的币种必须与订单币种字段相符
收方账户名
CRTNAM
Z(62)
否
收方开户行
CRTBNK
Z(62)
否
收方账号开户行名称,如:
招商银行北京分行
收方省份
CRTPVC
Z(16)
否
收方账号开户行所在的省份,格式为:
XX省(或市或自治区)。
如:
广东省、北京市或新疆维吾尔自治区等。
收方城市
CRTCTY
Z(20)
否
收款方账号开户行所在的城市名,指市或省辖行政单位。
如:
深圳市。
对直辖市,该字段可空。
收方县/区
CRTDTR
Z(20)
是
收方账号开户行所在的县或区,如:
宝安区。
订单失效日期
CNLDAT
D
是
企业必须在该日期前完成经办和审批,否则该订单失效
如果该字段为空,则订单失效日期=订单产生日期+商户开户时指定的失效天数
经办失效日期
INVDAT
D
是
如果这两个字段都非空,则企业必须在经办失效日期和经办失效时间前完成经办,否则该订单失效
经办失效时间
INVTIM
T
是
中间节点标志
KEYACC
C
(1)
是
是否多收方中间节点账户(空表示N)
Y:
是
N:
否
注意:
已无用,请填空或N
再确认标志
ORDCFM
C
(1)
是
订单是否需要商户再确认(空表示N)
Y:
是
N:
否
电子邮件
NTFCH1
C(36)
是
用于交易成功后的邮件通知
移动电话
NTFCH2
C(16)
是
用于交易成功后的邮件通知
回调地址
RETURL
C(100)
是
用于通知商户企业的经办结果,具体见3.5返回信息
校验码
CHKNUM
C(30)
是
支付结果通知地址
FINURL
C(100)
是
4.3通知地址设置设置支付结果通知地址。
如果按通知发送不同地址则该字段必填。
如果按商户发送统一地址则不用填写。
用途
NUSAGE
Z(62)
是
企业支付时,可修改该字段内容
业务摘要
BUSNAR
Z(200)
是
企业支付时,可修改该字段内容
文件证书签名时间戳
SIGTIM
C(18)
是
文件证书签名有效,可空。
如果有值则会检测签名时间与服务器的时间差,不能超过1小时。
格式:
yyyyMMddHHmmssffff。
3.3.2电票出票支付订单
电票出票支付订单
名称
代码
类型
可空
描述
商户编号
MCHNBR
C(10)
否
网站的企业银行商户编号
订单号
REFORD
C(40)
否
订单号+订单支付号必须唯一
查询对账单时,可查到订单号+订单支付号信息,但只显示20个字符,因此建议商户生成的订单号+订单支付号长度不要超过20个字符
订单支付号
SUBORD
C(10)
是
合同号
CTRNBR
C(40)
是
合同描述
CTRDSP
Z(62)
是
订单币种
CCYNBR
C
(2)
否
如10表示人民币
订单金额
TRSAMT
M
否
收方账号
CRTACC
C(35)
否
该账号的币种必须与订单币种字段相符
收方账户名
CRTNAM
Z(62)
否
收方联行号
CRTBRD
C(30)
否
收方人行联行号
订单失效日期
CNLDAT
D
是
企业必须在该日期前完成经办和审批,否则该订单失效
如果该字段为空,则订单失效日期=订单产生日期+商户开户时指定的失效天数
经办失效日期
INVDAT
D
是
如果这两个字段都非空,则企业必须在经办失效日期和经办失效时间前完成经办,否则该订单失效
经办失效时间
INVTIM
T
是
回调地址
RETURL
C(100)
是
用于通知商户企业的经办结果,具体见3.5返回信息
校验码
CHKNUM
C(30)
是
支付结果通知地址
FINURL
C(100)
是
4.3通知地址设置设置支付结果通知地址。
如果按通知发送不同地址则该字段必填。
如果按商户发送统一地址则不用填写。
支付方式
PAYTYP
C
(1)
是
0:
转账支付(默认值)
1:
电票出票
2:
电票背书
支付方式是否可编辑
PTPEDT
C
(1)
是
Y:
买方可编辑
N:
买方不可编辑(默认值)
注意:
如果设置为可编辑则要把3种订单的非空要素都给全
承兑人信息是否可编辑
ACPEDT
C
(1)
是
Y:
买方企业指定承兑人
N:
买方企业不能修改承兑人(商户指定承兑人)(默认值)
承兑人名称
ACPNAM
Z(62)
是
如果承兑人信息不可编辑,则承兑人信息必填。
承兑人账号
ACPACC
C(35)
是
承兑人行号
ACPBRD
C(12)
是
文件证书签名时间戳
SIGTIM
C(18)
是
文件证书签名有效,可空。
如果有值则会检测签名时间与服务器的时间差,不能超过1小时。
格式:
yyyyMMddHHmmssffff。
3.3.3电票背书支付订单
电票背书支付订单
名称
代码
类型
可空
描述
商户编号
MCHNBR
C(10)
否
网站的企业银行商户编号
订单号
REFORD
C(40)
否
订单号+订单支付号必须唯一
查询对账单时,可查到订单号+订单支付号信息,但只显示20个字符,因此建议商户生成的订单号+订单支付号长度不要超过20个字符
订单支付号
SUBORD
C(10)
是
合同号
CTRNBR
C(40)
是
合同描述
CTRDSP
Z(62)
是
订单币种
CCYNBR
C
(2)
否
如10表示人民币
订单金额
TRSAMT
M
否
被背书人账号
CRTACC
C(35)
否
该账号的币种必须与订单币种字段相符
被背书人名称
CRTNAM
Z(200)
否
被背书人联行号
CRTBRD
C(30)
否
人行联行号
订单失效日期
CNLDAT
D
是
企业必须在该日期前完成经办和审批,否则该订单失效
如果该字段为空,则订单失效日期=订单产生日期+商户开户时指定的失效天数
经办失效日期
INVDAT
D
是
如果这两个字段都非空,则企业必须在经办失效日期和经办失效时间前完成经办,否则该订单失效
经办失效时间
INVTIM
T
是
回调地址
RETURL
C(100)
是
用于通知商户企业的经办结果,具体见3.5返回信息
校验码
CHKNUM
C(30)
是
支付结果通知地址
FINURL
C(100)
是
4.3通知地址设置设置支付结果通知地址。
如果按通知发送不同地址则该字段必填。
如果按商户发送统一地址则不用填写。
支付方式
PAYTYP
C
(1)
是
0:
转账支付(默认值)
1:
电票出票
2:
电票背书
支付方式是否可编辑
PTPEDT
C
(1)
是
Y:
买方可编辑
N:
买方不可编辑(默认值)
注意:
如果设置为可编辑则要把3种订单的非空要素都给全
文件证书签名时间戳
SIGTIM
C(18)
是
文件证书签名有效,可空。
如果有值则会检测签名时间与服务器的时间差,不能超过1小时。
格式:
yyyyMMddHHmmssffff。
3.3.4支付收方内部户订单(适用并笔入账)
注意:
如要使用该类型订单,请先咨询招行交易银行部。
支付收方内部户订单(适用并笔入账)
名称
代码
类型
可空
描述
商户编号
MCHNBR
C(10)
否
网站的企业银行商户编号
订单号
REFORD
C(40)
否
订单号+订单支付号必须唯一
查询对账单时,可查到订单号+订单支付号信息,但只显示20个字符,因此建议商户生成的订单号+订单支付号长度不要超过20个字符
订单支付号
SUBORD
C(10)
是
订单币种
CCYNBR
C
(2)
否
如10表示人民币
订单金额
TRSAMT
M
否
订单失效日期
CNLDAT
D
是
企业必须在订单失效日期和时间前完成经办和审批,否则该订单失效
如果订单失效日期为空,则订单失效日期=订单产生日期+商户开户时指定的失效天数
订单失效时间
CNLTIM
T
是
经办失效日期
INVDAT
D
是
如果这两个字段都非空,则企业必须在经办失效日期和经办失效时间前完成经办,否则该订单失效
经办失效时间
INVTIM
T
是
再确认标志
ORDCFM
C
(1)
是
订单是否需要商户再确认(空表示N)
Y:
是
N:
否
电子邮件
NTFCH1
C(36)
是
用于交易成功后的邮件通知
移动电话
NTFCH2
C(16)
是
用于交易成功后的邮件通知
回调地址
RETURL
C(100)
是
用于通知商户企业的经办结果,具体见3.5返回信息
校验码
CHKNUM
C(30)
是
支付结果通知地址
FINURL
C(100)
是
4.3通知地址设置设置支付结果通知地址。
如果按通知发送不同地址则该字段必填。
如果按商户发送统一地址则不用填写。
支付方式
PAYTYP
C
(1)
否
3:
支付内部户
用途
NUSAGE
Z(62)
是
企业支付时,可修改该字段内容
业务摘要
BUSNAR
Z(200)
是
企业支付时,可修改该字段内容
文件证书签名时间戳
SIGTIM
C(18)
是
文件证书签名有效,可空。
如果有值则会检测签名时间与服务器的时间差,不能超过1小时。
格式:
yyyyMMddHHmmssffff。
3.3.5预保留订单
注意:
如要使用该类型订单,请先咨询招行交易银行部。
预保留订单
名称
代码
类型
可空
描述
商户编号
MCHNBR
C(10)
否
网站的企业银行商户编号
订单号
REFORD
C(40)
否
订单号+订单支付号必须唯一
查询对账单时,可查到订单号+订单支付号信息,但只显示20个字符,因此建议商户生成的订单号+订单支付号长度不要超过20个字符
订单支付号
SUBORD
C(10)
是
订单币种
CCYNBR
C
(2)
否
如10表示人民币
订单金额
TRSAMT
M
否
订单失效日期
CNLDAT
D
是
企业必须在该日期前完成经办和审批,否则该订单失效
如果该字段为空,则订单失效日期=订单产生日期+商户开户时指定的失效天数
订单失效时间
CNLTIM
T
是
经办失效日期
INVDAT
D
是
如果这两个字段都非空,则企业必须在经办失效日期和经办失效时间前完成经办,否则该订单失效
经办失效时间
INVTIM
T
是
再确认标志
ORDCFM
C
(1)
是
订单是否需要商户再确认(空表示N)
Y:
是
预保留固定填Y。
电子邮件
NTFCH1
C(36)
是
用于交易成功后的邮件通知
移动电话
NTFCH2
C(16)
是
用于交易成功后的邮件通知
回调地址
RETURL
C(100)
是
用于通知商户企业的经办结果,具体见3.5返回信息
校验码
CHKNUM
C(30)
是
支付结果通知地址
FINURL
C(100)
是
4.3通知地址设置设置支付结果通知地址。
如果按通知发送不同地址则该字段必填。
如果按商户发送统一地址则不用填写。
支付方式
PAYTYP
C
(1)
否
4:
预保留
用途
NUSAGE
Z(62)
是
企业支付时,可修改该字段内容
业务摘要
BUSNAR
Z(200)
是
企业支付时,可修改该字段内容
文件证书签名时间戳
SIGTIM
C(18)
是
文件证书签名有效,可空。
如果有值则会检测签名时间与服务器的时间差,不能超过1小时。
格式:
yyyyMMddHHmmssffff。
3.4.sigdat(签名信息)
说明:
商户根据自身安全要求选择是否要签名,可空。
获取方式:
1.网银证书签名:
通过银企直联方式,调用《招商银行银企直连接口说明书》6.3“生成签名”接口,生成签名信息。
2.自颁发证书签名:
请看本文但第6部分自颁发证书,调用签名函数生成签名。
3.5.result(返回信息)
用于通知商户该订单的支付经办结果。
订单支付后,数据以post的形式将表单提交到商户指定的网址,该网址由订单信息中的回调地址(RETURL)指定。
post的信息放在域result(返回信息)中,包括以下几个字段
名称
代码
类型
可空
描述
订单号
REFORD
C(40)
应该和商户的订单信息一致
订单支付号
SUBORD
C(10)
校验码
CHKNUM
C(30)
订单币种
CCYNBR
C
(2)
如10表示人民币
订单金额
TRSAMT
M
付方账号
PAYACC
C(35)
付方分行号
PAYBBK
C
(2)
如75表示深圳
付方分行名称
C_PAYBBK
C(12)
如:
深圳
付方公司名称
C_RELNBR
C(60)
订单请求状态
ORDSTA
C(3)
否
目前只有OPR,不会有其他状态
INP:
待缴费
OPR:
企业银行缴费经办
WCF:
等待商户确认
CFM:
确认完毕
MRV:
多收方处理中
FIN:
订单处理完成
订单处理结果
ORDSTS
C
(1)
订单请求状态=完成(ORDSTA=FIN)时才有效
S:
企业订单支付成功,多收方支付成功
B:
企业订单支付成功,多收方支付不成功
M:
商户撤销订单
E:
企业撤销订单
H:
订单过期作废
F:
失败
3.6.范例
示例1:
域order:
MCHNBR=M000000001;REFORD=100000;CCYNBR=10;TRSAMT=100;CRTACC=1280087710003;CRTNAM=长江国际;CRTBNK=招商银行;CRTPVC=广东省;CRTCTY=深圳市;KEYACC=N;ORDCFM=Y;RETURL=http:
//99.1.95.20/result.jsp;CHKNUM=123
域sigdat(可空):
jgVt93qBycvrNu/f3kIlGG7z02Z5c0gpxIQsJB56QU9RSdyyIDsxMzAwNzg4MDU4NjcyIDtOMDAwMTA3MjIxIDu/qrei16jTwzA3IDtOMDAwMjUyOCA7MIIEeTCCA2GgAwIBAgIQIqmMGgaId4uNvTELHKFfUjANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCQ04xHTAbBgNVBAoTFENoaW5hIE1lcmNoYW50cyBCYW5rMRQwEgYDVQQLEwtDQSBTZXJ2aWNlczESMBAGA1UECBMJR3VhbmdEb25nMRowGAYDVQQDExFGaXJtIEJhbmsgQ01T