添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
取值:“ICBC_PERBANK_B2C”

接口版本号

interfaceVersion

MAX(15)

必输, 取值:“1.0.0.11”

交易数据

tranData

无限制

必输,签名; 整合所有交易数据形成的xml明文串,并做BASE64编码; 具体格式定义见下文; 需有xml头属性;整个字段使用BASE64编码; xml明文中没有回车换行和多余空格;

订单签名数据

merSignMsg

无限制

必输, 商户使用工行提供的签名API和商户证书将tranData的xml明文串进行签名,得到二进制签名数据,然后进行BASE64编码后得到可视的merSignMsg; 注意:签名时是针对tranData的xml明文,不是将tranData进行BASE64编码后的串;

商城证书公钥

merCert

无限制

必输, 商户用二进制方式读取证书公钥文件后,进行BASE64编码后产生的字符串;

注:

1、数据中不能包含“|”、“&”、“=”,这些字符为银行端程序保留字符;中文变量使用GBK编码。

2、从商户Post过来的数据,参数名的名称必须与上表中完全相同,名称中的字母大小写均要相同,不能进行随意更改(在form中的提交按钮<input type=”submit”……>中submit不能有Name属性);此外,如果其他input 项的Name中使用了双引号,如:<input type=text name=" merCert " value="xxxxxxx">,则一定注意在引号内不要包含空格,不要写成“mer URL ”,如果拼写错误或者多了空格,将造成数据无法识别,无法正常进行支付

3、接口名称和版本号一定要和上表中相同.。

4、商户提交数据中的空格将被认为是有效字符被接收,请商户开发时注意对多余空格的控制。

5、tranData交易数据的xml串需要有xml的头,即<?xml version="1.0" encoding="GBK" standalone="no"?>

2.1.2tranData数据定义

变量名称

变量命名

长度定义

说明

接口名称

interfaceName

=16

必输, 取值:“ICBC_PERBANK_B2C”

接口版本号

interfaceVersion

MAX(15)

必输, 取值:“1.0.0.11”

交易日期时间

orderDate

=14

必输, 格式为:YYYYMMDDHHmmss 目前要求在银行系统当前时间的前后十分钟范围内,否则判定交易时间非法。

订单号

orderid

MAX(30)

必输,每笔订单都需要有不同的订单号; 客户支付后商户网站产生的一个唯一的订单号,该订单号应该在相当长的时间内不重复。工行通过订单号加订单日期来唯一确认一笔订单的重复性。 若该笔订单为招投标订单(orderFlag_ztb上送1),则该字段上送约定的招投标缴纳编号(长度MAX(20))

订单金额

amount

MAX(10)

必输,每笔订单一个; 客户支付订单的总金额,一笔订单一个,以分为单位。不可以为零,必需符合金额标准。

分期付款期数

installmentTimes

MAX(2)

必输,每笔订单一个; 取值:1、3、6、9、12、18、24;1代表全额付款,必须为以上数值,否则订单校验不通过。

商户账号

merAcct

MAX(29)

必输,每笔订单一个,可以相同; 商户入账账号,只能交易时指定。(商户付给银行手续费的账户,可以在开户的时候指定,也可以用交易指定方式;用交易指定方式则使用此商户账号)。支持上送19位账号或19-9格式账号(19位主账号-9位子账户序号)

商品编号

goodsID

MAX(30)

选输,每笔订单一个;

商品名称

goodsName

MAX(60)

必输,每笔订单一个;

商品数量

goodsNum

MAX(10)

选输,每笔订单一个;

已含运费金额

carriageAmt

MAX(10)

选输,每笔订单一个; 注:银行支付页面不会向客户显示该项内容。

检验联名标志

verifyJoinFlag

=1

必输, 取值“1”:客户支付时,网银判断该客户是否与商户联名,是则按上送金额扣帐,否则展现未联名错误;我行联名商户可送“1”; 取值“0”:不检验客户是否与商户联名,按上送金额扣帐。非联名商户请送“0”;

语言版本

Language

MAX(10)

选输,默认为中文版 取值:“EN_US”为英文版; 取值:“ZH_CN”或其他为中文版。 注意:大小写敏感。

支付币种

curType

= 3

必输, 用来区分一笔支付的币种,目前工行只支持使用人民币(001)支付。 取值: “001”

商户代码

merID

MAX(20)

必输, 唯一确定一个商户的代码,由商户在工行开户时,由工行告知商户。

支持订单支付的银行卡种类

creditType

= 1

必输 默认“2”。取值范围为0、1、2,其中0表示仅允许使用借记卡支付,1表示仅允许使用信用卡支付,2表示借记卡和信用卡都能对订单进行支付

通知类型

notifyType

= 2

必输 在交易转账处理完成后把交易结果通知商户的处理模式。 取值“HS”:在交易完成后实时将通知信息以HTTP协议POST方式,主动发送给商户,发送地址为商户端随订单数据提交的接收工行支付结果的URL即表单中的merURL字段; 取值“AG”:在交易完成后不通知商户。商户需使用浏览器登录工行的B2C商户服务网站,或者使用工行提供的客户端程序API主动获取通知信息。 取值“TS”:在交易完成后实时将通知信息以HTTP协议POST方式,主动发送给商户,发送地址为商户端随订单数据提交的接收工行支付结果的URL即表单中的merURL字段,商户响应银行通知时返回取货链接给工行,如工行未收到商户响应则重复发送通知消息,发送次数由工行参数配置。

结果发送类型

resultType

=1

选输 取值“0”:无论支付成功或者失败,银行都向商户发送交易通知信息; 取值“1”,银行只向商户发送交易成功的通知信息。 只有通知方式为HS时此值有效,如果使用AG方式,可不上送此项,但签名数据中必须包含此项,取值可为空。

商户reference

merReference

MAX(200)

选输,上送商户网站域名(例如:pay.某B2C商城.com),支持首字段通配符(例如:*.某B2C商城.com)。 如果上送,工行会在客户支付订单时,校验商户上送域名与客户跳转工行支付页面之前网站域名的一致性。

客户端IP

merCustomIp

MAX(20)

选输,工行在支付页面显示该信息。 1、使用IPV4格式。 2、上送的是客户端的公网IP。 3、当商户reference项送空时,该项必输。 4、如果使用代理服务器发送请求,需要上送代理服务器的IP。

虚拟商品/实物商品标志位

goodsType

=1

选输,若输入: 取值“0”:虚拟商品; 取值“1”,实物商品。

买家用户号

merCustomID

MAX(100)

选输,工行在支付页面显示该信息。

买家联系电话

merCustomPhone

MAX(20)

选输,工行在支付页面显示该信息。

收货地址

goodsAddress

MAX(200)

选输,工行在支付页面显示该信息。

订单备注

merOrderRemark

MAX(200)

选输,工行在支付页面显示该信息。

商城提示

merHint

MAX(120)

选输

备注字段1

remark1

MAX(100)

选输 单位:字节

备注字段2

remark2

MAX(100)

选输 单位:字节

返回商户URL

merURL

MAX(1024)

必输 必须合法的URL,交易结束,将客户引导到商户的此url,即通过客户浏览器post交易结果信息到商户的此URL,该URL支持http以及https协议。

成功页自动跳转商户倒计时参数

autoReferSec

MAX(60)

选输 当商户返回的商城取货地址为正常可达时,如该参数非空,则倒计时结束后自动跳转回商城取货地址对应链接,如不上送则默认不自动跳转。

返回商户变量

merVAR

MAX(1024)

选输 商户自定义,当返回银行结果时,作为一个隐藏域变量,商户可以用此变量维护session等等。由客户端浏览器支付完成后提交通知结果时是明文传输,建议商户对此变量使用额外安全防范措施,如签名、base64

支付通知是否支持优惠信息

isSupportDISCOUFlag

0-不支持 1-支持

选输, 如商户需要在工行返回的通知消息结果中包含优惠信息的内容,则该字段送1-支持

工银e支付注册标志

e_isMerFlag

=1

选输 工银e支付注册标志,标识客户在支付该笔订单时,是否使用订单指定的下述信息注册工银e支付。 0-否,1-是

客户姓名

e_Name

MAX(30)

选输,e_isMerFlag送1时有效

客户手机号

e_TelNum

=11

选输,e_isMerFlag送1时有效 如果工银e支付注册标志e_isMerFlag上送1,则此字段必输

客户证件类型

e_CredType

MAX(2)

选输,e_isMerFlag送1时有效 0:身份证 2:军官证 3:士兵证 4:回乡证(港澳台往来通行证) 5:临时身份证 6:户口本 9:警官证 12:外国人永久居住证 21:边民证

客户证件号

e_CredNum

MAX(18)

选输,e_isMerFlag送1时有效

待注册工银e支付的卡/账号

e_CardNo

MAX(19)

选输,e_isMerFlag送1时有效 如上送,则按指定的账户进行工银e支付注册

招投标订单标志

orderFlag_ztb

=1

选输,0-否,1-是 如该标志上送1,则仅支持上送一笔订单,且订单号字段orderid需上送约定的招投标缴纳编号(长度MAX(20))

注:

1)红色字体部分内容,每笔订单都有一份;

2)如商户已在工行系统开通银联支付功能,且希望订单可以使用银联支付,则上送的订单信息需满足如下条件:

a)订单号orderid长度不小于12位,且不包含-、_等连接符;

b)检验联名标志verifyJoinFlag送“0”;

c)仅上送单笔订单信息(如下2.1.3节tranData格式定义中,subOrderInfoList结构中仅包含一个subOrderInfo域);

d)分期付款期数installmentTimes上送“1”;

e)支持订单支付的银行卡种类creditType上送2-不限定支付卡类型。

2.1.3tranData格式定义

tranData格式(xml格式固定,选输字段的取值可以为空,标签需保留)

<?xml version="1.0" encoding="GBK" standalone="no"?>

<B2CReq>

<interfaceName>ICBC_PERBANK_B2C</interfaceName>

<interfaceVersion>1.0.0.11</interfaceVersion>

<orderInfo>

<orderDate>20100308141629</orderDate>

<curType>001</curType>

<merID>0200EC20001119</merID>

<subOrderInfoList>

<subOrderInfo>

<orderid>201003081416290</orderid>

<amount>1</amount>

<installmentTimes>1</installmentTimes>

<merAcct>0200026009018372212</merAcct>

<goodsID>001</goodsID>

<goodsName>威尼熊</goodsName>

<goodsNum>2</goodsNum>

<carriageAmt>20</carriageAmt>

</subOrderInfo>

<subOrderInfo>

<orderid>201003081416291</orderid>

<amount>1</amount>

<installmentTimes>1</installmentTimes>

<merAcct>0200026009018372212</merAcct>

<goodsID>001</goodsID>

<goodsName>威尼熊</goodsName>

<goodsNum>2</goodsNum>

<carriageAmt>20</carriageAmt>

</subOrderInfo>

</subOrderInfoList>

</orderInfo>

<custom>

<verifyJoinFlag>0</verifyJoinFlag>

<Language>ZH_CN</Language>

</custom>

<message>

<creditType>2</creditType>

<notifyType>AG</notifyType>

<resultType>1</resultType>

<merReference>localhost</merReference>

<merCustomIp>127.0.0.1</merCustomIp>

<goodsType>1</goodsType>

<merCustomID>123456</merCustomID>

<merCustomPhone>13466780886</merCustomPhone>

<goodsAddress>三里屯</goodsAddress>

<merOrderRemark>防欺诈接口专用</merOrderRemark>

<merHint>请保留包装</merHint>

<remark1></remark1>

<remark2></remark2>

<merURL>http://localhost:80/EbizSimulate/emulator/Newb2c_Pay_Mer.jsp</merURL>

<autoReferSec>5</autoReferSec>

<merVAR>test</merVAR>

<isSupportDISCOUFlag>1</isSupportDISCOUFlag>

</message>

<extend>

<e_isMerFlag>1</e_isMerFlag>

<e_Name>屿鸦顶</e_Name>

<e_TelNum>13814444444</e_TelNum>

<e_CredType>0</e_CredType>

<e_CredNum>128568580210620</e_CredNum>

<e_CardNo>9558880200005170880</e_CardNo>

<orderFlag_ztb>0</orderFlag_ztb>

</extend>

</B2CReq>

注:红色字体部分,即<subOrderInfo>是循环部分,最大5次,超过则接口校验报错。

2.1.4表单样例

表单数据:

<INPUT NAME="interfaceName" TYPE="text" value="ICBC_PERBANK_B2C" >

<INPUT NAME="interfaceVersion" TYPE="text" value="1.0.0.11">

<INPUT NAME="tranData" TYPE="text" value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iR0JLIiBzdGFuZGFsb25lPSJubyI/PjxCMkNSZXE+PGludGVyZmFjZU5hbWU+SUNCQ19QRVJCQU5LX0IyQzwvaW50ZXJmYWNlTmFtZT48aW50ZXJmYWNlVmVyc2lvbj4xLjAuMC4xMTwvaW50ZXJmYWNlVmVyc2lvbj48b3JkZXJJbmZvPjxvcmRlckRhdGU+MjAxNDA5MjkxMjIyMDE8L29yZGVyRGF0ZT48Y3VyVHlwZT4wMDE8L2N1clR5cGU+PG1lcklEPjAyMDBFQzIzNDk3Njk2PC9tZXJJRD48c3ViT3JkZXJJbmZvTGlzdD48c3ViT3JkZXJJbmZvPjxvcmRlcmlkPjIwMTQwOTI5MTIyMjAxMDwvb3JkZXJpZD48YW1vdW50PjE5ODA8L2Ftb3VudD48aW5zdGFsbG1lbnRUaW1lcz4xPC9pbnN0YWxsbWVudFRpbWVzPjxtZXJBY2N0PjAyMDAwODA5MDkyMDAxMDA1NTQ8L21lckFjY3Q+PGdvb2RzSUQ+MDAxPC9nb29kc0lEPjxnb29kc05hbWU+zf7E4dDcPC9nb29kc05hbWU+PGdvb2RzTnVtPjI8L2dvb2RzTnVtPjxjYXJyaWFnZUFtdD4wPC9jYXJyaWFnZUFtdD48L3N1Yk9yZGVySW5mbz48L3N1Yk9yZGVySW5mb0xpc3Q+PC9vcmRlckluZm8+PGN1c3RvbT48dmVyaWZ5Sm9pbkZsYWc+MDwvdmVyaWZ5Sm9pbkZsYWc+PExhbmd1YWdlPlpIX0NOPC9MYW5ndWFnZT48L2N1c3RvbT48bWVzc2FnZT48Y3JlZGl0VHlwZT4yPC9jcmVkaXRUeXBlPjxub3RpZnlUeXBlPkFHPC9ub3RpZnlUeXBlPjxyZXN1bHRUeXBlPjA8L3Jlc3VsdFR5cGU+PG1lclJlZmVyZW5jZT44Mi4yMDAuNDUuMTc2PC9tZXJSZWZlcmVuY2U+PG1lckN1c3RvbUlwPjEyNy4wLjAuMTwvbWVyQ3VzdG9tSXA+PGdvb2RzVHlwZT4xPC9nb29kc1R5cGU+PG1lckN1c3RvbUlEPjEyMzQ1NjwvbWVyQ3VzdG9tSUQ+PG1lckN1c3RvbVBob25lPjEzNDY2NzgwODg2PC9tZXJDdXN0b21QaG9uZT48Z29vZHNBZGRyZXNzPsj9wO/NzTwvZ29vZHNBZGRyZXNzPjxtZXJPcmRlclJlbWFyaz63wMbb1am907/a16jTwzwvbWVyT3JkZXJSZW1hcms+PG1lckhpbnQ+x+uxo8H0sPzXsDwvbWVySGludD48cmVtYXJrMT48L3JlbWFyazE+PHJlbWFyazI+PC9yZW1hcmsyPjxtZXJVUkw+aHR0cDovLzgyLjIwMC40NS4yMDEvZW11bGF0b3IvTWVyUmV0dXJuLmpzcDwvbWVyVVJMPjxtZXJWQVI+dGVzdDwvbWVyVkFSPjwvbWVzc2FnZT48ZXh0ZW5kPjxlX2lzTWVyRmxhZz4xPC9lX2lzTWVyRmxhZz48ZV9OYW1lPtPs0bu2pTwvZV9OYW1lPjxlX1RlbE51bT4xMzgxNDQ0NDQ0NDwvZV9UZWxOdW0+PGVfQ3JlZFR5cGU+MDwvZV9DcmVkVHlwZT48ZV9DcmVkTnVtPjEyODU2ODU4MDIxMDYyMDwvZV9DcmVkTnVtPjxlX0NhcmRObz45NTU4ODgwMjAwMDA1MTcwODgwPC9lX0NhcmRObz48L2V4dGVuZD48L0IyQ1JlcT4=">

<INPUT NAME="merSignMsg" TYPE="text" value="bgWUfKU1SzKjsr6A5FRf2iEHe/+/Cu58klm/36nNUzwTB2JmBUXesQJVOswjRIf3AzpZetCwMqvnuoAnX0u6WtnQIDAxZAR9TWFvNdmzA4uJxqbwMy6ruhLnqgCeWaVYzbD1gTZ6ndMd4/gBXTbKnT9/YezPKHSP348u+0f0j8A=">

<INPUT NAME="merCert" TYPE="text" value="MIIDCTCCAfGgAwIBAgIKbaHKEE0tAAAVmTANBgkqhkiG9w0BAQUFADA3MRowGAYDVQQDExFjb3JiYW5rMTAzIHNkYyBDTjEZMBcGA1UEChMQY29yYmFuazQzLmNvbS5jbjAeFw0xMzA2MDEwNjE5NTFaFw0xNDA2MDEwNjE5NTFaMEAxFDASBgNVBAMTC0xMTEwuZS4wMjAwMQ0wCwYDVQQLEwQwMjAwMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUebVQUS8jnDERJopOwNgRlKEafEQUryj9EV64TUsaR850v/3KnctPRJ09GCqeucvbbOXlHz/RlwJSVWqryCTOldOUv1F58KQ0C59sY/dhh+W57fLIQKO90Sd344o/fPiytqmGtBc2m+DE/3L6morgC8m05Ygm16MkIk89Nz184wIDAQABo4GRMIGOMB8GA1UdIwQYMBaAFKnyXV7yfyOkd7D4zZtPLyquqLWdMEwGA1UdHwRFMEMwQaA/oD2kOzA5MQ0wCwYDVQQDEwRjcmw2MQ0wCwYDVQQLEwRjY3JsMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMB0GA1UdDgQWBBTkDBRsd9NghIrtNaUe6gSxZQ9CfzANBgkqhkiG9w0BAQUFAAOCAQEAXTWymvrTDMgV9LK7Ps6o52mlZIPmp3n7hmZttgJR/6KmZ/uCChPqHd9Ixw3DBnzHvoxmgtCKNVNc+iYQ4ks8cZgQoQ3uKT9bYinRCgECOv0Hiv7Q63DHJB46QamYcPc9dmmKAAOMd5AtnKI8QBRG3kxEmD6DPAcyx7hZ9Iw0MVwu4J1RfByJ1kM/bnhFpGwTma+5kxQlP+8Zurx4Cow/TUIj+kiLa/1ZmKXok7XOUr1UTFJhIqe0v3w2ekidchVML/t6n6Yw8Q5UCAbvKP4iHWdxeEGYsn+/a38oqCqIya66d5FCUqcOXXdRTdwdaSg6IGA4X6//O9TCvle1SCn7LQ==">

tranData对应的xml明文:

<?xml version="1.0" encoding="GBK" standalone="no"?><B2CReq><interfaceName>ICBC_PERBANK_B2C</interfaceName><interfaceVersion>1.0.0.11</interfaceVersion><orderInfo><orderDate>20140929122201</orderDate><curType>001</curType><merID>0200EC23497696</merID><subOrderInfoList><subOrderInfo><orderid>201409291222010</orderid><amount>1980</amount><installmentTimes>1</installmentTimes><merAcct>0200080909200100554</merAcct><goodsID>001</goodsID><goodsName>威尼熊</goodsName><goodsNum>2</goodsNum><carriageAmt>0</carriageAmt></subOrderInfo></subOrderInfoList></orderInfo><custom><verifyJoinFlag>0</verifyJoinFlag><Language>ZH_CN</Language></custom><message><creditType>2</creditType><notifyType>AG</notifyType><resultType>0</resultType><merReference>82.200.45.176</merReference><merCustomIp>127.0.0.1</merCustomIp><goodsType>1</goodsType><merCustomID>123456</merCustomID><merCustomPhone>13466780886</merCustomPhone><goodsAddress>三里屯</goodsAddress><merOrderRemark>防欺诈接口专用</merOrderRemark><merHint>请保留包装</merHint><remark1></remark1><remark2></remark2><merURL>http://82.200.45.201/emulator/MerReturn.jsp</merURL><autoReferSec>5</autoReferSec><merVAR>test</merVAR></message><extend><e_isMerFlag>1</e_isMerFlag><e_Name>屿鸦顶</e_Name><e_TelNum>13814444444</e_TelNum><e_CredType>0</e_CredType><e_CredNum>128568580210620</e_CredNum><e_CardNo>9558880200005170880</e_CardNo></extend></B2CReq>

2.2通知接口

2.2.1通知接口表单定义

变量名称

变量命名

长度定义

说明

返回商户变量

merVAR

无限制

取值:商户提交接口中merVAR字段当返回银行结果时,作为一个隐藏域变量,商户可以用此变量维护session等等。由客户端浏览器支付完成后提交通知结果时是明文传输,建议商户对此变量使用额外安全防范措施,如签名、base64,银行端将此字段原样返回

通知结果数据

notifyData

无限制

银行通知消息,xml格式定义见下文,提交商户时对xml明文串进行了base64编码; xml串中没有回车换行和多余空格;包含xml头属性,且格式固定;

银行对通知结果的签名数据

signMsg

无限制

银行使用自己证书对商户通知消息notifyData字段的xml格式明文串进行的签名,然后进行BASE64编码后的字符串。 注意:签名是对notifyData的xml明文进行签名,不是其BASE64编码后的串;签名后得到二进制数据,对此数据进行BASE64编码得到signMsg

2.2.2notifyData数据定义

变量名称

变量命名

长度定义

说明

接口名称

interfaceName

=16

取值:“ICBC_PERBANK_B2C”

接口版本号

interfaceVersion

MAX(15)

取值:“1.0.0.11”

交易日期时间

orderDate

=14

格式为:YYYYMMDDHHmmss 要求在银行系统当前时间的前1小时和后12小时范围内,否则判定交易时间非法。

订单号

orderid

MAX(30)

客户支付后商户网站产生的一个唯一的定单号,该订单号应该在相当长的时间内不重复。工行通过订单号加订单日期来唯一确认一笔订单的重复性。

实际支付金额

amount

MAX(10)

客户支付订单的实际支付金额,一笔订单一个,以分为单位。不可以为零,必需符合金额标准。

分期付款期数

installmentTimes

MAX(2)

必输,每笔订单一个;