中国工商银行网上银行B2C在线支付API 接口
中国工商银行网上银行B2C在线支付接口说明
一、B2C流程说明:
1、客户在商户网站浏览商品信息,签订订单;
2、商户按照工行B2C订单数据规范形成提交数据,并使用工行提供API和商户证书对订单数据签名,形成form表单返回客户浏览器,表单action地址指向工行接收商户B2C订单信息的servlet;
3、客户确认使用工行支付后,提交此表单到工行;
4、工行网银系统接收此笔B2C订单,对订单信息和商户信息进行检查,通过检查则显示工行B2C支付页面;
5、客户在此页面可以查询客户在银行的预留信息;也可以输入支付卡号、支付密码、验证码进行B2C支付;
6、工行检查客户信息,通过检查后显示确认页面;客户确认提交后工行进行支付指令处理;
7、工行进行支付指令处理后,如果商户需要工行实时通知,则工行将处理结果使用http协议post方式将通知消息数据提交到商户网站(这个接收银行通知消息的商户端地址是随商户订单数据提交银行的merURL字段),商户返回取货地址或关闭这个银行与其建立的连接后,银行才显示交易结果页面给客户。(注意1、发送通知和显示结果页面是串行的,所以商户端接收银行通知处理时间太长可能导致客户等待超时,造成银行不能将交易结果页面显示给客户。2、此连接是银行服务器自动和商户进行的连接,商户返回也是直接返回给银行,商户端不能对银行的这个请求进行重定向。)
8、工行进行支付指令处理后,如果商户不需要工行实时通知,则工行直接显示交易结果给客户。
二、B2C接口数据说明:
接口数据格式定义通过接口名称和接口版本号来标识,以便将来的扩展;以下数据格式为 “1.0.0.1”版的“ICBC_PERBANK_B2C”接口定义。
2.1 B2C商户提交表单接口定义:
1.0.0.1版本
变量名称
变量命名
长度定义
说明
接口名称
interfaceName
MAX(30)
必输,签名,
取值:“ICBC_PERBANK_B2C
接口版本号
interfaceVersion
MAX(15)
必输,签名,
取值:“1.0.0.1”
订单号
orderid
MAX(30)
必输,签名,
客户支付后商户网站产生的一个唯一的定单号,该订单号应该在相当长的时间内不重复。工行通过订单号加订单日期来唯一确认一笔订单的重复性。
订单金额
amount
MAX(10)
必输,签名,
客户支付订单的总金额,一笔订单一个,以分为单位。不可以为零,必需符合金额标准。
支付币种
curType
= 3
必输,签名,
用来区分一笔支付的币种,目前工行只支持使用人民币(001)支付。
取值: “001”
商户代码
merID
MAX(20)
必输,签名,
唯一确定一个商户的代码,由商户在工行开户时,由工行告知商户。
商城账号
merAcct
MAX(19)
必输,签名,
商城收费入账账号 (只能交易时指定)。
检验联名标志
verifyJoinFlag
=1
必输,签名。
取值“1”:客户支付时,网银判断该客户是否与商户联名,是则按上送金额扣帐,否则展现未联名错误;
取值“0”:不检验客户是否与商户联名,按上送金额扣帐。
通知类型
notifyType
= 2
必输,签名,
在交易转账处理完成后把交易结果通知商户的处理模式。
取值“HS”:在交易完成后实时将通知信息以HTTP协议POST方式,主动发送给商户,发送地址为商户端随订单数据提交的接收工行支付结果的URL即表单中的merURL字段;
取值“AG”:在交易完成后不通知商户。商户需使用浏览器登录工行的B2C商户服务网站,或者使用工行提供的客户端程序API主动获取通知信息。
接收支付结果信息通知程序地址
merURL
MAX (200)
选输,签名,
使用HS通知类型的商户用来接收工行订单支付结果的URL;银行使用HTTP协议POST方式向此地址发送通知信息;目前只支持80端口。
使用“AG”通知类型的商户,该字段可以为空或者不上送该字段;但在签名数据中必须包含此项,取值可为空。
取值举例:/getICBCPayResult.jsp
结果发送类型
resultType
=1
选输,签名。
取值“0”:无论支付成功或者失败,银行都向商户发送交易通知信息;
取值“1”,银行只向商户发送交易成功的通知信息。
只有通知方式为HS时此值有效,如果使用AG方式,可不上送此项,但签名数据中必须包含此项,取值可为空。
商品编号
goodsID
MAX(30)
选输
商品名称
goodsName
MAX(60)
选输
商品数量
goodsNum
MAX(10)
选输
已含运费金额
carriageAmt
MAX(10)
选输
商城提示
merHint
MAX(120)
选输
交易日期时间
orderDate
=14
必输,签名,
格式为:YYYYMMDDHHmmss
要求在银行系统当前时间的前1小时和后12小时范围内,否则判定交易时间非法。
订单签名数据
merSignMsg
无限制
必输,
商户使用工行提供的签名API接口和商户证书将交易数据按一定格式进行签名,然后进行BASE64编码后得到的字符串。(格式单独说明)
商城证书公钥
merCert
无限制
必输,
商户用二进制方式读取证书公钥文件后,进行BASE64编码后产生的字符串。
备注字段1
remark1
MAX(100)
保留
备注字段2
remark2
MAX(100)
保留
语言版本
Language
MAX(10)
选输,默认为中文版
取值:“EN_US”为英文版;
取值:“ZH_CN”或其他为中文版。
注意:大小写敏感。
其他同1.0.0.0版本
2.2 商户提交表单签名merSignMsg格式:
1、组织要签名的数据串 (顺序固定;被商户签名的串为各输入项的值):
接口名称的值+接口版本号的值+商城代码的值+商城账号的值+通知地址的值+通知类型的值+订单号的值+订单金额的值+支付币种的值+结果发送类型的值+交易日期时间的值+校验联名标志的值
2、举例:
以下是需要签名的数据名称及对应值
interfaceName=ICBC_PERBANK_B2C &interfaceVersion=1.0.0.0&merID=0200EC20000012&merAcct=020*********&merURL=icbcmsg/servlet¬ifyType=HS&orderid=000000001&amount=100&curType=001 &resultType=0&orderDate=20050801192556& verifyJoinFlag=0
需要签名的明文
ICBC_PERBANK_B2C1.0.0.00200EC200000120200029109000030106icbcmsg/servletHS0000000011000010200508011925560
签名后(用测试私钥user.key )
merSignMsg为
SFVdS3Kca6d/wetLFwynBl1q5nDIyxxEUXCzniIa47mhxs1BM9mPsnRc2lOqqrfwBdwBjSE82jS/iBHYKolf2sppjEyOImVZycv96321QPDgPA1yleO83K1XA1rmB3zxsIuwLKIICSWwdttn1XPYOQLJ/WAtZ5DFYFog7J8pXw0=
merCert为(用测试证书)
MIICVjCCAb+gAwIBAgIKI9fKEDP6AAAO3DANBgkqhkiG9w0BAQUFADA0MRgwFgYDVQQDEw9wYmouaWNiYy5jb20uY24xGDAWBgNVBAoTD3Biai5pY2JjLmNvbS5jbjAeFw0yMDA5MjAwOTI3NDFaFw0yMTA5MjAwOTI3NDFaMEMxGDAWBgNVBAMTD2JpYW5sdTIyLmUuMDIwMDENMAsGA1UECxMEMDIwMDEYMBYGA1UEChMPcGJqLmljYmMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDG+u/C5pad0ZbwvAk9Gv1rr+SpknfFUsTMhJLcI2KiYa+XLSf5vCib0OclOoDDXKIWPt/hkMEz+ED8YukQpsstXHvnxVFxVtPh23dubQjB8/kJ7X5EbwngsHMLFEXqr3UvNfcGZHuAFqMRPtr8ys3YnL3UG43Xienc3cD8jXFdQQIDAQABo2AwXjBLBgNVHR8ERDBCMECgPqA8pDowODEOMAwGA1UEAxMFY3JsMTMxDDAKBgNVBAsTA2NybDEYMBYGA1UEChMPcGJqLmljYmMuY29tLmNuMA8GA1UdYwQIAwYA/wAAAAAwDQYJKoZIhvcNAQEFBQADgYEAQe6tLhKaNX8OPNT2XzH7dTXIFmTm37hSvmbEL/Q/pWV386KVrNSCnyN3fowanMt5TE9qZFn9enVvyDJw4nAUx38F2PFn2Tt7JUtzt/pNKC5FiebpFJH48AXIP1Xt5GjdcBx0oXM9QNBtYvY0189t357EH4UaBfO+c+L8fkOt37o=
2.3 B2C通知商户交易结果接口定义:
1.0.0.1版本
变量名称
变量命名
长度定义
说明
接口名称
interfaceName
MAX(30)
取值:“ICBC_PERBANK_B2C
接口版本号
interfaceVersion
MAX(15)
取值:“1.0.0.1”
订单号
orderid
MAX(30)
客户支付后商户网站产生的一个唯一的定单号,该订单号应该在相当长的时间内不重复。工行通过订单号加订单日期来唯一确认一笔订单的重复性。
银行指令序号
TranSerialNo
MAX(30)
银行端指令流水号
订单金额
amount
MAX(10)
客户支付订单的总金额,一笔订单一个,以分为单位。不可以为零,必需符合金额标准。
支付币种
curType
= 3
用来区分一笔支付的币种,目前工行只支持使用人民币(001)支付。
取值: “001”
商户代码
merID
工商银行网上查询
MAX(20)
唯一确定一个商户的代码,由商户在工行开户时,由工行告知商户。
商城账号
merAcct
MAX(19)
商城收费入账账号 (只能交易时指定)。
检验联名标志
verifyJoinFlag
=1
取值“1”:客户支付时,网银判断该客户是否与商户联名,是则按上送金额扣帐,否则展现未联名错误;
取值“0”:不检验客户是否与商户联名,按上送金额扣帐。
客户联名标志
JoinFlag
=1
客户在银行端是否与商城联名标志位。1客户联名 0客户未联名
联名会员号
UserNum
MAX(40)
联名客户在商户的会员号。
结果发送类型
resultType
=1
取值“0”:无论支付成功或者失败,银行都向商户发送交易通知信息;
取值“1”,银行只向商户发送交易成功的通知信息。
交易日期时间
orderDate
=14
格式为:YYYYMMDDHHmmss
要求在银行系统当前时间的前1小时和后12小时范围内,否则判定交易时间非法。
返回通知日期时间
notifyDate
MAX(14)
格式为:YYYYMMDDHHmmss
订单处理状态
tranStat
=1
1-“交易成功,已清算”;
2-“交易失败”;
3-“交易可疑”
错误描述
comment
MAX(100)
错误描述
备注1
remark1
MAX(100)
保留
备注2
remark2
MAX(100)
保留
通知消息银行签名数据
signMsg
无限制
银行使用自己证书对商户通知消息按照一定格式进行的签名,然后进行BASE64编码后的字符串。(格式单独描述)
(注意与C2C通知接口定义变量名区分)
2.4 通知消息银行签名数据signMsg格式:
1、组织要签名的数据串 (顺序固定;银行通知消息签名的串为以下格式,请注意与商户签名串的格式不同):
接口名称=值&接口版本号=值&订单号=值&指令序号=值&订单金额=值&支付币种=值&商城代码=值&商城账号=值&校验联名标志=值&客户联名标志=值&联名会员号=值&结果发送类型=值&交易日期时间=值&返回通知日期时间=值&订单处理状态=值&错误描述=值&备注1=值&备注2=值
interfaceName=值&interfaceVersion=值&orderid=值&TranSerialNo=值&amount=值&curType=值&merID=值&merAcct=值&verifyJoinFlag=值&JoinFlag=值&UserNum=值&resultType=值&orderDate=值¬ifyDate=值&tranStat=值&comment=值&remark1=值
&remark2=值
举例:
以下是需要验签的数据串明文
interfaceName=ICBC_PERBANK_B2C&interfaceVersion=1.0.0.0&orderid=000000001&TranSerialNo=&amount=100&curType=001&merID=0200EC20000012&merAcct=0200029109000030106&verifyJoinFlag=0&JoinFlag=&UserNum=&resultType=0&orderDate=20050801192556¬ifyDate=20050824165910&tranStat=2&comment=failure,Error_code:32147ErrorMsg:提交支付表单时间数据不在有效时间范围。&remark1=&remark2=
签名后signMsg

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。