手机银行(WAP)B2C在线支付接口说明V1.0.0.6

更新时间:2023-11-04 06:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

手机银行商户手册

B2C支付接口v1.0.0.6

中国工商银行软件开发中心 Copyright Reserved

商户手册 手机银行商户手册

目录

第 1 章 业务说明 ....................................................................................................................... 3 第 2 章 商户接口 ....................................................................................................................... 4

2.1 支付接口 ....................................................................................................................... 4 2.1.1 支付接口表单定义 ................................................................................................... 4 2.1.2 tranData数据定义 .................................................................................................. 5 2.1.3 tranData格式定义 .................................................................................................. 7 2.1.4 表单样例 ................................................................................................................... 8 2.2 通知接口 ....................................................................................................................... 9 2.2.1 通知接口表单定义 ................................................................................................... 9 2.2.2 notifyData数据定义 ............................................................................................ 10 2.2.3 notifyData格式定义 ............................................................................................ 11 2.2.4 表单样例 ................................................................................................................. 12 2.3 商户判断支付结果及返回商户取货 ......................................................................... 13 2.4 其他说明 ..................................................................................................................... 13 第 3 章 安全API说明 ............................................................................................................ 14 第 4 章 开发步骤 ..................................................................................................................... 14

4.1通用步骤 ......................................................................................................................... 14 4.2移动生活商户改造方法 ................................................................................................. 15 4.3附件 ................................................................................................................................. 16

第 2 页 共 17 页

手机银行商户手册

第 1 章 业务说明

B2C在线支付接口版本说明: 1.0.0.0(基本支付)

1.0.0.1(支持商户主动分期付款模式,商户不分期的情况下支持客户自助分期,商户客户都不分期的情况下,流程同1.0.0.0)

1.0.0.3(1.0.0.1版本基础上,支持后台自动给商户发送支付结果通知消息,通知消息发送方式为只有支付成功的情况下发送通知,其余情况不通知) 1.0.0.4(1.0.0.3版本基础上,支持他人代付功能)

1.0.0.6(基于1.0.0.3版本,支持启动工行手机银行客户端(iPhone、Android)进行支付,支持工行移动生活商户进行支付,支持HTML网页版本(只支持iPhone、Android的webkit核心浏览器,需要商户侧自行判断客户的浏览器是否可用)进行支付。

注:1.0.0.6接口的HTML网页版本暂未开放!

以下简述处理流程:

1. 客户在商户WAP网站、商户客户端(iPhone、Andrid)、工行移动生活商户浏览商品信息,签订订单;

2. 商户按照工行手机银行B2C支付1.0.0.6接口形成提交数据,并使用工行提供API和商户证书对订单数据签名,形成form表单返回客户浏览器,表单action地址指向工行接收商户订单信息的servlet;

3. 客户确认使用工行支付后,提交此表单到工行;

4. 工行手机银行系统接收此笔订单,对订单信息和商户信息进行检查;

5. 通过检查则根据商户上送的启动类型,启动工行手机银行客户端程序(iPhone、Android)的支付页面或HTML网页版本(只支持iPhone、Android的webkit核心浏览器)的支付页面; 6. 客户输入后提交; 7. 银行查询客户相关信息; 8. 返回客户在银行的预留信息; 9. 客户确认;

10. 返回交易确认页面;

11. 不同类型客户使用各自认证方式进行交易确认,支持静态支付密码、动态口令卡、工银电子密码器、音频U盾(U盾只支持iPhone客户端版本)。 12. 银行校验后进行支付处理;

13. 工行将处理结果使用http协议post方式,将通知消息数据提交到商户网站; 14. 给客户展现成功支付页面。

1) 若商户启动类型为客户端版本,则结果页面只提供返回手机银行按钮,点击后返回手机

银行程序,客户需要自行回到商户页面或商户程序进行取货,商户根据上一步的通知消息判断是否支付成功。

2) 若商户启动类型为工行移动生活版本,则结果页面提供返回商户按钮,点击返回后会回

到商户的页面,客户可以在此页面进行取货,商户可以根据上一步发送的通知消息判断是否支付成功。

3) 若商户启动类型为HTML网页版本,则上一步通知商户时,商户返回取货地址(必须是

正确格式的URL地址),银行会在成功支付页面展现取货地址链接,客户点击链接返回商户的取货地址页面。

第 3 页 共 17 页

手机银行商户手册

第 2 章 商户接口

接口定义通过接口名称和接口版本号来标识,以便将来的扩展;

2.1 支付接口

2.1.1 支付接口表单定义

WAP银行B2C接口的交易数据整合到一个xml格式串,作为表单的一项整体提交; FORM

表单数据如下: 变量名称 接口名称 接口版本号 变量命名 interfaceName interfaceVersion 长度定义 MAX(30) MAX(15) 必输, 取值:“ICBC_WAPB_B2C” 必输, 取值:“1.0.0.6” 必输,签名; 整合所有交易数据形成的xml明文串,并做BASE64编码; 交易数据 tranData 无限制 具体格式定义见下文; 注意: 需有xml头属性;整个字段使用BASE64编码; xml明文中没有回车换行和多余空格; 必输, 商户使用工行提供的签名API和商户证书将tranData的xml明文串进行签名,订单签名数据 merSignMsg 无限制 得到二进制签名数据,然后进行BASE64编码后得到可视的merSignMsg; 注意:签名时是针对tranData的xml明文,不是将tranData进行BASE64编码后的串; 商城证书公钥 必输, merCert 无限制 商户用二进制方式读取证书公钥文件后,进行BASE64编码后产生的字符串; 必输, 取值: 1:工行iPhone客户端版 启动类型 clientType MAX(2) 2:工行Android客户端版 21:工行移动生活版(iPhone) 22:工行移动生活版(Android) 0:HTML版(只支持iPhone、Android第 4 页 共 17 页

说明 手机银行商户手册

的webkit核心浏览器)暂未开放

注:

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

2、从商户Post过来的数据,参数名的名称必须与上表中完全相同,名称中的字母大小写均要相同,不能进行随意更改(在form中的提交按钮中submit不能有Name属性);此外,如果其他input 项的Name中使用了双引号,如:

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

2.1.2 tranData数据定义

变量名称 接口名称 接口版本号 变量命名 interfaceName interfaceVersion 长度定义 =13 =7 必输, 取值:“ICBC_WAPB_B2C” 必输, 取值:“1.0.0.6” 必输, 格式为:YYYYMMDDHHmmss 交易日期时间 orderDate =14 要求在银行系统当前时间的前1小时和后12小时范围内,否则判定交易时间非法。 必输, 客户支付后商户网站产生的一个唯一订单号 orderid MAX(30) 的定单号,该订单号应该在相当长的时间内不重复。工行通过订单号加订单日期来唯一确认一笔订单的重复性。 必输, 订单金额 amount MAX(10) 客户支付订单的总金额,一笔订单一个,以分为单位。不可以为零,必需符合金额标准。 必输,每笔订单一个; 分期付款期数 installmentTimes curType MAX(2) 取值:1、3、6、9、12、18、24;1代表全额付款,必须为以上述值,否则订单校验不通过。 支付币种 = 3 必输, 第 5 页 共 17 页 说明

手机银行商户手册

支付币种 联名校验标志 客户是否联名标志 会员号 银行指令序号 返回通知日期时间 订单处理状态 错误描述 curType verifyJoinFlag JoinFlag UserNum TranSerialNo notifyDate =3 =1 =1 MAX(30) MAX(30) MAX(14) 取值:“001” 取值:“0” 取值:“0” 取值为空,该字段暂时无用 银行端指令流水号 格式为:YYYYMMDDHHmmss 1-“交易成功,已清算”; tranStat comment =1 MAX(100) 2-“交易失败”; 3-“交易可疑” 错误描述

2.2.3 notifyData格式定义

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

第 11 页 共 17 页

手机银行商户手册

2.2.4 表单样例

表单数据:

VALUE=\Q1Jlcz48aW50ZXJmYWNlTmFtZT5JQ0JDX1dBUEJfQjJDPC9pbnRlcmZhY2VOYW1lPjxpbnRlcmZhY2VWZXJzaW9uPjEuMC4wLjY8L2ludGVyZmFjZVZlcnNpb24+PG9yZGVySW5mbz48b3JkZXJEYXRlPjIwMTMwNDEwMTMzODQ2PC9vcmRlckRhdGU+PG9yZGVyaWQ+MjAxMzA0MTAxMzM4NDYwPC9vcmRlcmlkPjxhbW91bnQ+NTAwPC9hbW91bnQ+PGluc3RhbGxtZW50VGltZXM+MTwvaW5zdGFsbG1lbnRUaW1lcz48bWVyQWNjdD4wMjAwMDI0MTA5MDMxNTQ4NTY5PC9tZXJBY2N0PjxtZXJJRD4wMjAwRUMyMzMzNTE0OTwvbWVySUQ+PGN1clR5cGU+MDAxPC9jdXJUeXBlPjx2ZXJpZnlKb2luRmxhZz4wPC92ZXJpZnlKb2luRmxhZz48Sm9pbkZsYWc+MDwvSm9pbkZsYWc+PFVzZXJOdW0+PC9Vc2VyTnVtPjwvb3JkZXJJbmZvPjxiYW5rPjxUcmFuU2VyaWFsTm8+MTIzNDU2Nzg5MDwvVHJhblNlcmlhbE5vPjxub3RpZnlEYXRlPjIwMTMwNDEwMTM0MTU0PC9ub3RpZnlEYXRlPjx0cmFuU3RhdD4xPC90cmFuU3RhdD48Y29tbWVudD69u9LXs8m5pqOs0tHH5cvjo6E8L2NvbW1lbnQ+PC9iYW5rPjwvQjJDUmVzPg==\

notifyData对应的明文:

1.0.0.620130410133846201304101338460500102000241090315485690200EC23335149001001234567890201304101341541交易成功,已清算!

第 12 页 共 17 页

手机银行商户手册

2.1 商户判断支付结果及返回商户取货

商户可以在支付接口中配置接收银行通知来实时获取支付结果,若支付接口中配置的是不接收银行通知或接收通知异常,商户还可以通过浏览器登录工行的B2C商户服务网站,或者使用工行提供的客户端程序API主动获取支付结果。

若商户选择的启动方式为客户端版本, 则客户端支付结果页面只提供返回手机银行的按钮,客户点击后只会返回手机银行客户端的登录页面或主菜单,但结果页面会提示客户自行回到商户界面进行取货。在取货页面,商户需要根据银行通知或主动获取支付结果自行判断支付是否完成,客户是否可以进行取货。

若商户选择的启动方式为移动生活商户版本,则客户端结果页面只提供返回商户按钮,客户点击此按钮会回到商户提交订单的页面。商户可以在客户提交订单时设立“已完成支付”按钮,客户完成支付流程后回到此页面点击“已完成支付”按钮,商户需要根据银行通知或主动获取支付结果自行判断支付是否完成,客户是否可以进行取货。

若商户选择的启动方式为HTML版本,则支付流程都是在客户手机的浏览器中完成的,并不会启动工行客户端程序,所以若商户希望在支付结果页面能跳转到自己的取货页面,则商户需要在支付接口中配置接收银行通知,并在接收银行通知消息后返回取货页面的URL给银行,银行将在结果页面显示链接到此地址的按钮。若商户配置不接收银行通知或返回的取货地址不正确,则在结果页面将不会提供任何按钮,客户需要自行回到商户页面取货,此时商户需要自行判断支付是否完成。

返回取货地址提示:

1、商户返回实质上只是一个内容为URL的字符串,不能有任何多余的东西,包括不能有任何的html的标签;类似以下http报文回应

HTTP/1.1 200 OK Server: Apache/1.39 Content-Length: 24 Content-type: text/html http://www.merweb.com.cn

2、此URL可以通过“?”来挂参数;举例:

http://www.merweb.com.cn/getGoods.jsp?user=guest&level=3

银行在显示给客户的交易结果页面上提供此URL的链接,客户点击此链接后,挂载的参数将以GET方式提交商户。

2.3 其他说明

1、商户可能收到的银行通知 指令成功:

只能有一笔成功、且要验证银行签名、订单金额等信息是否与商户端记录一致。 指令失败:

商户可能会收到多笔客户支付失败的信息,如密码输入错误,限额超限等。 指令可疑:

第 13 页 共 17 页

手机银行商户手册

由于手机银行系统与后台业务处理系统间通讯异常,造成手机银行不能确认支付指令结果,则此笔指令为可疑指令;可疑指令将被自动批复,商户、客户可于第二日查询指令状态。

2、没有收到客户浏览器转发的银行通知:

由于客户浏览器端或互联网通讯等原因可能造成商户端接收不到客户浏览器提交的银行通知。当没有收到银行通知时,可登录工行商户服务网站手工查询指令状态或者商户调用查询接口自动处理。

3、商户提交的订单信息和银行返回的通知消息都是xml串,并且进行了BASE64编码;提交和返回的xml都应有xml头;商户提交的订单xml明文,和银行发送给商户的通知消息xml明文,必须是GBK编码的。

4、其它页面不作限制,可以是其它编码,如utf-8。

第 3 章 安全API说明

为了保证商户提交订单数据和银行通知信息数据的完整性,不可抵赖性,现提供一套用于信息签名、验签和BASE64编解码的函数。商户开发时使用这套函数和工行颁发的商户证书进行商户订单信息签名;签名数据项和顺序均固定,具体格式可参见上文的数据定义;同时使用这套API和银行公钥可以验证银行通知消息的有效性。安全API的使用方法可参见相关开发语言的说明和demo程序;

第 4 章 开发步骤

商户程序需在银行模拟测试环境上进行联调后,再投产,以下说明联调开发步骤。

4.1通用步骤

生成订单:

1、商户和当地行联系,申请联调测试;由当地行在模拟测试环境录入商户信息,生成商户证书(pfx格式);并提供银行模拟测试环境的银行证书公钥文件(用于验证银行签名时使用);

2、商户或者银行用证书拆分工具将pfx格式的商户证书拆分成扩展名为crt的公钥文件和扩展名为key的私钥文件;(这两个文件用于商户开发API调用来进行商户订单数据签名) 商户进行开发,准备要求的订单数据;

第 14 页 共 17 页

手机银行商户手册

3、其中订单签名数据merSignMsg字段是对明文的签名数据;需要使用提供的API函数和商户私钥进行签名,得到签名串,然后做BASE64编码;

4、其中商城证书公钥merCert字段需要使用API函数做BASE64编码; 5、准备好订单数据,即完成订单部分的开发;

提交订单:

本B2C支付接口支持多种启动类型,需要商户侧根据需要自行判断选择

1、若商户开发的是Android、iPhone系统的客户端程序,则商户提交订单可以采用 Android平台的WebView控件或iOS平台的UIWebView控件提交表单数据到银行接收入口,订单中的启动类型可以选择客户端版本或HTML版本,若为客户端版本则会打开我行手机银行客户端进行支付,若为HTML版本则在当前WebView(UIWebView)控件或手机系统浏览器中进行支付。

2、若商户开发的是WAP商城站点,直接提交表单数据到银行接收入口即可;订单中的启动类型可以选择客户端版本或HTML版本;若启动类型为客户端版本,则需要商户自行判断客户使用的手机系统(可以通过浏览器UA判断)来选择启动Android版本或iPhone版本。若启动类型为HTML版本,则需要商户自行判断客户使用的手机系统及浏览器是否满足本接口的要求(Android、iPhone系统、Webkit核心浏览器);

3、若商户开发的是工行合作的移动生活商户,请参考4.2节的开发步骤提交订单数据。 4、银行侧接收商户提交入口如下: 模拟测试环境:

https://mywap2.dccnet.com.cn/ICBCWAPBank/servlet/ICBCWAPEBizServlet 生产环境:

https://mywap2.icbc.com.cn/ICBCWAPBank/servlet/ICBCWAPEBizServlet

接收通知:

交易支付成功后,会将交易结果信息和银行签名发送给商户。商户接收到银行通知后,需使用开发API和银行公钥来验证银行签名,以确保通知消息的有效性,以下简要说明验证步骤:

1、获得各字段取值后,注意提交的明文需要进行base64解码才能获得。使用商户开发API和银行公钥文件对表单中的银行签名signMsg进行验签;

2、验签成功后,为确保数据一致,建议商户比较一下通知消息中订单金额、卖家卡号等关键信息和自己记录的是否一致;

3、商户根据交易结果tranStat来更新自己的指令状态和相关数据库信息;

4.2移动生活商户改造方法

工行移动生活商户是指在我行iPhone、Android手机银行主屏移动生活栏目中展现的这些商户,此部分商户与我行是合作关系。目前此类商户的支付流程使用的是我行的无界面工银e支付接口。为了统一支付界面风格,建议此部分商户统一使用我行最新的B2C支付接口完成支付流程。开发步骤请先参见通用步骤,以下为特殊改造点:

1、只有最新版本的客户端程序(Android:1.0.0.9、iPhone1.0.1.1)才支持本B2C支付接口,所以商户需要使用附件js文件中的以下代码判断当前的手机银行客户端是否支持本B2C支付接口,若不支持,商户还需要使用现行的无界面工银e支付完成支付流程,若支持,商户页面需要按要求组织订单数据使用本B2C接口完成支付流程。

第 15 页 共 17 页

手机银行商户手册

ICBCUtil.isSupportMobilePay();//是否支持移动支付, 是:true 否:false,该方法兼容iPhone、Android两种客户端

2、移动生活商户提交订单请使用附件js文件中工行提供的订单提交方法,在页面通过js方法提交订单数据,该方法的参数与支付接口定义一致。

ICBCUtil.submitOrder({

interfaceName:xxx, interfaceVersion:xxx, tranData:xxx, merSignMsg:xxx, merCert:xxx,

});//提交订单,该方法兼容iPhone、Android两种客户端

4.3附件

1、订单签名涉及的安全API程序及Demo,请联系我行分行或总行的支持推广部门获取。

2、移动生活商户需要在所有页面头部,引入如下附件中的js文件 附件:

注:以上js文件因为封装了我行客户端部分调用代码,所以仅限合作的移动生活商户使用。

相关API说明:

ICBCUtil.isWin();//检测当前的操作系统是否为Windows, 是:true 否:false ICBCUtil.isMac();//检测当前操作系统是否为Mac, 是:true 否:false

ICBCUtil.isIPhone();//检测当前浏览器是否为iPhone(Safari), 是:true 否:false ICBCUtil.isAndroid();//检测当前浏览器是否为Android(Chrome),是:true 否:false ICBCUtil.isWindowsPhone();//检测当前浏览器是否为IE(WindowsPhone), 是:true 否:false ICBCUtil.returnBack();//返回客户端,该方法兼容iPhone、Android两种客户端 举例:

ICBCUtil.ePayOpenInject();//工银e支付注入,该方法兼容iPhone、Android两种客户端 举例:

ICBCUtil.isSupportMobilePay();//是否支持移动支付, 是:true 否:false,该方法兼容iPhone、Android两种客户端 ICBCUtil.submitOrder({

interfaceName:xxx, interfaceVersion:xxx, tranData:xxx, merSignMsg:xxx,

第 16 页 共 17 页

merCert:xxx,

});//提交订单,该方法兼容iPhone、Android两种客户端 举例:

ICBCUtil.submitOrder({ interfaceName:document.order.interfaceName.value, interfaceVersion:document.order.interfaceVersion.value, tranData:document.order.tranData.value, merSignMsg:document.order.merSignMsg.value, merCert:document.order.merCert.value,

});

手机银行商户手册

第 17 页 共 17 页

本文来源:https://www.bwwdw.com/article/pww2.html

Top