首先请你到招行去申请成为网上特约商户,此时会给你开一个基本帐户,这个基本帐户对应
一个对公帐户。
个人消费用户使用的是一卡通,一卡通基本帐户也对应有一个网上使用支付卡帐号
在支付的过程中流程是如此的:
例如:你要买一个20块钱的东西
首先从基本一卡通帐户划10MONEY到你的网上支付卡中
在商户网页上确认支付商户将引导您进入银行页面
在银行页面中确认支付会将您的支付卡中的20MEONY支付到商户的对公帐户
此时的对公帐户上的钱钱并不算归商户所有
商户利用自己的系统看到你的定单,然后到银行给商户提供的系统中去看是否已经到帐,如
果钱已经到帐而且可以进行此笔交易的话则将钱划到商户的基本帐户,此时钱才归商户所有
。如果商户没有此商品或者此笔交易不能进行或者商户在银行规定的时间内没有对此帐进行
处理那么到时间后此笔钱将划回用户自己的支付卡中,用户可以在支付卡和自己的基本帐号
中自由转钱。
在交易过程可以用明码,也可以用银行给的文件进行二次开发对商户和银行进行身份的确认
,相对来说还是很简单的。
由此看来最主要的仅仅是商户的开发页来引导用户和银行系统之间进行会话,
这个过程也相对来说非常简单,下面附招商银行的接口部分原文……
3. 网上支付方式
网上支付方式分为两种,分别称为方式1和方式2。
3.1. 网上支付方式1
为了确保网上交易中资金的安全性,用户需要在一卡通中为网上交易开设一个专门
的网上交易专户,对应有一张网上支付卡,并有一个对应的网上交易密码。用户需要用招商
银行网上个人银行或者电话银行在一卡通和网上支付卡之间转钱。
在网上交易过程中,用户先处于商户的网页中。当用户查看完购物篮并决定购买时
,商户WEB系统将要求用户输入送货地址、联系电话等信息。然后,商户WEB系统根据购物篮
内容生成相应定单,并生成支付网页回送用户浏览器。定单一般包括:定单号、交易日期、
货品数量和单价及总计价、送货地址、联系电话等。支付网页包括:定单内容和选择招商银
行网上支付卡支付按钮。
当用户在支付网页中选择招商银行网上支付卡付款时,支付网页向银行WEB系统发
出支付命令。银行WEB系统处理完支付请求后,将回送用户支付结果页面。
支付命令格式如下:
https://CMBHost/netpayment/BaseHttp.dll?PrePayC?BranchID=xxxx&CoNo=xxxxxx&BillNo
=xxxxxx&Amount=xxx.xx&Date=YYYYMMDD
用中心分行网址替换CMBHost。
参数说明:
BranchID: 商户开户分行号,请咨询开户的招商银行分支机构;
CoNo: 商户号,6位长数字,由银行在商户开户时确定;
BillNo: 定单号,6位长数字,由商户系统生成,一天内不能重
复;
Amount: 定单总金额,格式为:xxxx.xx元;
Date: 交易日期,格式:YYYYMMDD。
支付页面提交的FORM格式示例如下:
方式1的特点是商户WEB系统通过支付页面把控制引导到银行WEB系统,银行WEB系统
处理完支付请求后回送支付结果页面给用户,控制没有再回到商户WEB系统。
商户在和银行结帐时(见5.2.节)可以知道定单的付款情况。如果商户系统需要立刻核实定单
付款情况,可以使用一个直联定单状态查询接口向银行WEB系统查询某个定单的状态。有关直
联定单状态查询接口请见3.3.节。
3.2. 网上支付方式2
某些商户在用户完成支付过程后希望控制能够从银行WEB系统自动转回商户WEB系统
,并且商户WEB系统能够知道用户的付款情况。比如,出售信息产品的商户,在支付成功的情
况下,商户的结果页除包含支付成功通知信息外,还可以包含用户购买的信息产品。
为了解决这个问题,要求商户WEB系统必须提供一个支付结果通知命令。银行WEB系
统在收到支付网页发出的支付命令后,先执行扣款操作,然后调用商户WEB系统的支付结果通
知命令,把支付结果通知商户WEB系统,同时取得商户WEB系统生成的支付结果页面(由支付结
果通知命令生成)。最后,银行WEB系统把由商户WEB系统的支付结果通知命令生成的支付结果
页返回用户的浏览器。这就是支付方式2。
支付结果通知命令格式型如:
http://www.merchant.com/path/ProcResult.dll?Succeed=..&BillNo=..&Amount
=..&Date=..&Msg=..&signature=..
其中,path和ProcResult.dll由商户任意确定,并且支付命令中可包含多个path,
即可有path1/path2/path3。
参数说明:
Succeed: 取值Y(成功)或N(失败);
BillNo: 定单号(由支付命令送来);
Amount: 实际支付金额(由支付命令送来);
Date: 交易日期(由支付命令送来);
Msg: 银行通知用户的支付结果消息,在支付成功时为“付款请
求已被银行接受。”,在支付失败时是失败原因;
Signature: 银行用自己的Private Key对通知命令的签名。
注意:
(1)商户系统如果对银行通知命令的真实性有较高要求,必须用银行提供的开发包中的函数,
结合银行的Public Key(可从网上下载或向银行索取)验证。具体用法请参考附录3。
(2)商户系统也可以进一步判断该命令发出方的IP地址为招商银行网站的IP地址,以防止用户
伪造。如果商户系统对银行通知命令的真实性要求不是很高,只验证IP也可,这样可降低商
户系统开发的复杂性。
(3)在Succeed为Y时,商户在支付结果通知命令中必须判断Amount的值,该值为用户的实际支
付金额,以此金额为准。不能以之前系统产生定单时的金额为准!这是为了防止用户在得到
支付页面后修改支付金额。
支付方式2的支付命令格式有别于支付方式1,其格式为:
https://CMBHost/netpayment/BaseHttp.dll?PrePayC1?BranchID=xxxx&CoNo=..&
BillNo=..& Amount=..&Date=..&MerchantUrl=..
用中心分行网址替换CMBHost。
前五个参数同支付过程1,第六个参数MerchantUrl为支付结果通知命令中参数部分
之前的部分,也就是http://www.merchant.com/path/ProcResult.dll。
在方式2中,若用户付款后银行WEB系统或者商户WEB系统出现故障,则可能出现用
户已付款但是商户WEB系统不知道的情况,或者出现用户已付款但是用户浏览器未接收到结果
页的情况。如果这种异常情况会引起付款纠纷,则该商户必须由银行设置为非立即结帐商户
,由商户利用结帐功能中的撤消定单功能解决这类付款纠纷。
和方式1比较,方式2在用户完成支付操作后控制又回到商户的系统(用户处于商户
WEB系统生成的支付结果页中),增加了银行WEB系统调用商户WEB系统的支付结果通知命令的
过程。方式2比方式1复杂,并且商户WEB系统必须处理异常情况。但是方式2功能较强,使支
付过程变得平滑无缝。在商户的Web系统向银行返回结果网页时,网页中应当有e="CMBNETPAYMENT" content="China Merchants Bank">,供银行判断是否为有效返回网页
,以避免商户服务器失控后自动返回未知的信息而使消费者迷惑。不管是商户停机、网络中
断或者Web服务器失控,银行都将屏蔽商户系统的问题,并用正常的网页替代商户网页返回给
消费者,使消费者能继续正确操作。一旦发生这种情况,银行将通过电话银行中心以电话与
商户管理服务器的人员联系,提醒其系统发生故障。
考虑到方式2比较复杂,并且需要连接商户端程序,我们提供了测试接口以方便商
户开发程序时测试。使用该测试接口模拟真实的数据流程,但无须真实的商户代码和支付卡
号,银行系统也不记录交易数据(商户不能查询或结帐使用该测试接口产生的交易数据)。
测试接口的使用方法和真实接口一致,只需由真实接口的PrePayC1改为测试接口的TestPrep
ayC1。
注意:为防止用户利用测试接口扰乱商户正式运行的服务器,银行的测试接口通知
信息中,BillNo始终为“000000”。
https://CMBHost/netpayment/BaseHttp.dll?PrePayC1?BranchID=xxxx&CoNo=..&
BillNo=..& Amount=..&Date=..&MerchantUrl=..
改为
https://CMBHost/netpayment/BaseHttp.dll?TestPrePayC1? BranchID=xxxx&CoN
o=..&BillNo=..& Amount=..&Date=..&MerchantUrl=..。
建议:一般销售实物的网站应尽量采用方式1。在方式2中,持卡人付款完毕,银行立即从商
户网站取得返回页面,如果商户网站或者通讯线路出现任何问题,持卡人将看到不可理解的
信息,从而诱导持卡人作进一步的误操作。