2.11 网上在线支付使用专题
为了拓展银行业务,许多大型银行都开设了网上银行,并提供相应的网上银行支付的接口。下面以工商银行在线支付为例具体讲解。
客户在商户网站购物完毕,商户网站给客户生成一个订单(有一个唯一的订单号),如果客户选择工商银行支付,客户从商户网站提交订单至工商银行网上支付服务器;客户在工商银行网上支付服务器的支付页面输入自己的支付卡号和支付密码,完成订单支付。工商银行会将交易结果通过网页通知客户,通过商户接口通知商户,如果该笔订单为信息化商品,工商银行还将引导客户至商户网站上取货。
工商银行共提供商户HS、AG、HS(联名)和AG(联名)4种不同模式的接口,如表2.9所示,用来向商户传递交易的结果信息,商户可以根据自己的情况自由选用。
表2.9 工商银行通知接口模式
工商银行在线支付功能模块一般由两部分组成,即“选择在线支付方式”和“工商银行在线支付页”。下面分别介绍。
1. 选择在线支付方式
用户在“服务台”页填写完相关信息后,单击“提交”按钮,即可进入“选择在线支付方式”页(PayWay.aspx),在该页用户可以选择在线支付方式,其运行效果如图2.33所示。
图2.33 选择在线支付方式
实现该功能的具体步骤如下:
(1)将一个Table(表格)控件置于PayWay.aspx页中,为整个页面进行布局。
(2)从“工具箱”下的“标准”选项卡中拖放5个ImageButton控件,设置各个控件的ImageUrl属性值,用于显示在线支付方式。
(3)在“中国工商银行”按钮的Click事件下,编写如下代码,用于实现当用户单击该按钮后,跳转到“工商银行在线支付页”。
protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { Response.Redirect("GoBank.aspx?OrderID=" + Request["OrderID"].ToString()); }
2. 工商银行在线支付页
B2C在线支付业务是指企业(卖方)与个人(买方)通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务。目前,ICBC个人网上银行的B2C在线支付系统是ICBC专门为拥有工商银行牡丹信用卡账户并开通网上支付功能的网上银行个人客户进行网上购物所开发的支付平台。下面详细地介绍一下开发工商银行在线支付页的全过程。
(1)开发工商银行在线支付页前期工作
首先,需要特约网站申请人到ICBC当地指定机构办理申请手续,并提交如下申请资料。
① 营业执照副本及复印件。
② 经办人员的有效身份证件。
③ 填妥的《特约网站注册申请表》。
④ 最近年度的资产负债表和损益表的复印件。
⑤ 《域名注册证》复印件或其他对所提供域名享有权利的证明。
⑥ 企业标识LOGO的电子文件。
⑦ 填妥的“牡丹卡单位申请表”。
其次,经工商银行审查合格后,工商银行将提供银行方的通信、数据接口和已有商户端程序及商户客户证书。
最后,特约网站可以根据工商银行提供的资料,开发工商银行在线支付功能。
(2)开发工商银行在线支付页的具体步骤
首先,按照工商银行提供的资料注册com组件。步骤如下:
① 将ICBCEBankUtil.dll和LIB\windows\WIN32\infosecapi.dll两个dll文件复制到系统system32目录下。
② 打开DOS窗口,进入system32目录。
③ 运行“regsvr32 ICBCEBankUtil.dll”命令注册控件。
其次,将工商银行提供的public公钥、拆分pfx后缀证书的公钥和拆分pfx后缀证书的私钥放到本地磁盘(如D盘根目录下)。在本网站中,笔者将其放在项目下的bank文件中。
然后,在项目的Bin文件中,单击鼠标右键,在弹出的快捷菜单中选择“添加引用”命令,弹出如图2.34所示的对话框,添加引用ICBCEBankUtil.dll文件。
图2.34 “添加引用”对话框
最后,设计提交表单页面(GoBank.aspx)。步骤如下:
创建一个BankPay类,用于定义相关变量并返回变量的值。代码如下:
例程43 代码位置:资源包\TM\02\B2C\B2C\App_Code\BankPay.cs
注意
此处,笔者只给出相关的方法,对于变量的赋值参见银行提供的相关资料。
将提交表单页面(GoBank.aspx)切换到HTML视图中,添加如下代码,用于设计提交表单内容。
例程44 代码位置:资源包\TM\02\B2C\B2C\GoBank.aspx
说明
① 订单只能使用POST方式提交,使用https协议通信。
② 如果提交的表格含有中文,需要在<head></head>节点中,使用字符集GBK指定。代码如下:
<meta http-equiv="content-type" content="text/html;charset=GBK">
将提交表单页面切换到编辑器页(GoBank.aspx.cs)中,为提交表单赋值。相关代码如下:
例程45 代码位置:资源包\TM\02\B2C\B2C\GoBank.aspx.cs