《毕业设计(论文)基于C++的网络第三方支付系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于C++的网络第三方支付系统.doc(50页珍藏版)》请在三一办公上搜索。
1、摘要进入21世纪,中国互联网产业发展势不可挡,电子商务己经成为商品交易的最新模式。作为资金流关键环节的支付,成为制约电子商务发展的主要瓶颈。而第三方支付模式为电子商务中的信任难题找到了初步解决方案,将电子商务推向一个新高潮。第三方支付指由具备一定实力和信誉保障的非银行独立机构,集成银行支付结算系统接口或基于其他服务通道,为交易各方提供货币支付、资金清算、交易监管等交易支持服务而形成的支付模式。目前,我国第三方支付模式可以分为两类:一类是独立的第三方网关模式,一类是具备担保功能的非独立第三方支付模式。在电子商务交易时,在网络这个特定的虚拟环境中,由于信息的不对称,双方会产生道德风险,从而阻碍网上
2、交易的发展。本文通过完全信息静态博弈,参与人不固定的重复博弈等模型,从理论上分析了网上交易所面临的困境,并通过建立改进的动态博弈模型,说明第三方支付是如何解决网上交易的信任问题的,从而指出了第三方支付的巨大优势。关键字:电子商务;第三方支付AbstractEntering the 21st century, Chinas Internet industry development unstoppable, e-commerce have already become commodities trading, the latest model. As cash flow key links pa
3、yment, restricted the development of ec bottleneck. But the third party payment models for e-commerce trust in the preliminary conundrum to find solutions, will e-commerce to a new high.The third-party refers to the strength and credibility by have certain non-bank independent institutions, ensure p
4、ayments and settlement system interface integrated bank based on other service channel, or for trading all parties to provide money to pay, fund settlement, trade supervision trade support services, in the form of payment mode. At present, our country third-party payment mode can be divided into two
5、 kinds: one kind is an independent third party gateway mode, one kind is the guarantee function with independent third-party payment mode.In the electronic business transactions, in network this particular virtual environment, because of the asymmetry of information, both sides will produce moral ha
6、zard and hinder the development of online transactions. This article through the complete information static game, participants dont fixed repeated game model, such as online exchange are analyzed theoretically, and the difficulties faced by establishing the dynamic game model, improvements that the
7、 third-party is how to solve the problem of trust of online transactions, and pointed out the great advantage of third-party payment.Key word: electronic commerce; Third-party payment目录摘要1Abstract2引言31、第三方支付平台系统41.1支付平台的介绍41.1.1虚拟账户和电子钱包41.1.2第三方支付平台的基本服务模式61.1.3虚拟账户的资金沉淀71.2平台结构分析71.2.1总体结构71.2.2功能
8、模块81.3与商户网站的连接111.3.1支付平台接入设计121.3.2支付接口开发132、第三方支付的应用现状202.1第三方支付在BZB中的应用202.2第三方支付在BZC中的应用212.3第三方支付在CZC中的应用223、安全电子支付系统的设计223.1系统开发背景223.2系统原理图和交易流程233.3系统应满足的安全要求243.4系统软件的设计253.5系统软件的工作流程263.6系统安全性分析383.7系统的优点404、加强第三方支付发展的对策建议414.1深化行业细分414.2提供增值服务424.3加强与银行的合作434.4提高网上支付的安全性444.5提供多元化的支付方式45结
9、论46参考文献47致谢47引言随着电子商务近几年来的迅猛发展,电子支付已越来越成为人们普遍接受的生活方式,而银行卡网上支付由于其实时性、便捷性成为网上B2C业务的一种主要支付手段。但不可否认支付安全始终是电子商务发展的瓶颈,也是影响在线购物者购买意愿程度的重要因素。最新的互联网调查报告的数据(CNNIC)数据表明,随着电子商务的不断推进,人们对网上购物的关注点主要集中在从事电子商务交易时所持有的一个心理障碍对交易信用的担心。国外的网上支付,最早使用的是SET协议和SSL协议。但是完全依赖SSL协议本身,并不能准确完成对用户的身份验证,它主要解决的是点对点之间的信道加密,不能保证信息的不可抵赖性
10、。而以信用卡和数字证书为基础的SET(Secure Electronic Transaction)安全电子交易协议由于它要求持卡人在客户端安装电子钱包,交易流程较为复杂,客户普遍不愿意接受这种网上支付方式。2001年,Visa推出了自己的银行卡网上支付标准3-D secure标准(名称为Verified by Visa)即VBV模式成了国外银行卡网上支付的典型安全模式。Visa作为除发卡行、商户和持卡人以外的第三方单位,它提供的历史记录,也为抵赖交易的时候提供了一定的不可否认的证据:每一次交易,在发卡行向持卡人发送带有发卡行数字签名的验证响应信息的同时,发卡行都向验证历史服务器传输包含上述带发
11、卡行签名的响应信息的一份拷贝,同时附上商户和持卡人的相关信息及有关本次交易的订单序列号、持卡人主账号等相关交易信息。这是可信第三方的重要作用,为交易双方提供一个可信任的交易平台。1、第三方支付平台系统近年来,各商业银行纷纷推出开放的网上支付平台接口,与银行连接己经比较简单。网关型第三方支付机构的进入门槛也就随之大大降低,这就造成了众多网关型第三方支付机构依靠拼价格来争夺市场的竞争状况。虽然这类网关型第三方支付机构在国内己经非常成熟,但这种模式的价值却越来越小,因为它本身只掌握了支付的渠道,还没有掌握支付所需的资源,只能起到通道的作用。随着市场的发展和竞争的需要,网关型第三方支付机构都已经开始提
12、供虚拟账户的服务,系统增加了平台支付的功能,通过买卖双方在平台内部开立的虚拟账户,使部分交易的资金只在支付平台内循环。原来单一的支付网关也演变成了虚拟账户和支付网关相结合的支付平台。1.1支付平台的介绍1.1.1虚拟账户和电子钱包虚拟账户是第三方支付平台为用户在平台内部开设的专用账户,用户注册后将在平台上拥有个人专属的支付和交易管理账户。账户内的资金是预先通过其他方式充值的金额及前次购物后所剩余额的总和。用户开设的虚拟账户与自己的某一银行账户相联,以便于日后充值或提现之用。开设虚拟账户后,如果需要支付的金额大于虚拟账户内的金额,用户可以选择直接用绑定的银行账户中资金完成支付,也可以先把银行卡中
13、的部分资金充值到自己的虚拟账户里,再选用虚拟账户支付方式付款。若虚拟账户内的钱足够支付时,用户可以直接使用虚拟账户中的资金完成支付。总之,用户使用虚拟账户付款,可以有效避免用户的银行卡号和密码频繁暴露于电脑和网上,提高网上支付的安全性,同时也简化了整个支付的操作。电子钱包实质上也是一种虚拟账户,可以看成是虚拟账户的另一种称谓。用户需要先通过其他方式(例如:现金支付、银行卡支付、邮局汇款或银行电汇多等)对这个电子钱包进行充值,充值完成后,消费者就可以进行支付、转账等操作。虚拟账户一般有两个密码,一个是登录密码,用于登录账户,查看账目等一般性操作;另一个是支付密码,凡是牵涉到资金流转的过程,都需要
14、使用支付密码。缺少任何一个密码,都不能使资金发生流转。虚拟账户的支付密码与所绑定的银行账户的支付密码是两个密码。用户登录虚拟账户后进行的各种操作,就只涉及虚拟账户的支付密码,因为第三方支付平台是不会知道用户的银行账户的各种密码的,而用户点击充值或者付款时,登录到银行页面上时,需要输入银行账户的支付密码。通过使用某个指定的网上银行账户,向虚拟账户充值。一旦用户启动了将资金从银行账户转账至虚拟账户的过程,用户将无法取消充值的转账。转账完成后,充值的金额会加入用户虚拟账户的余额中,而实际上用户的资金已经转到了第三方支付机构的银行账户,而以后消费者的付款行为就成了第三方支付平台向卖方支付货款的行为。如
15、果卖方也使用第三方支付平台提供的虚拟账户收款,那么这种支付行为的结果就是第三方支付平台的本身数据库中的几个操作,在买方虚拟账户中减去支付货款的金额,同时将这个金额加到卖方虚拟账户的余额中。从整个过程来看,支付行为没有涉及到资金的转移,而只是支付平台内部的一些操作,这种只涉及到买卖双方和支付平台三方的网上支付,实现了资金流转和支付过程的分离。类比银行提供的电子支付系统,如果买卖双方使用同一家银行的账户,那么整个支付过程也就成了银行内部的几个操作,也就不需要第三方支付机构的参与了。通过提供虚拟账户服务,单纯的网关型第三方支付系统演变成具有结算功能的支付平台,同时将消费者的付款行为和商户的收款行为都
16、变成平台内部的操作,让资金和支付过程相分离,从而减少了在账户资源和资金流转渠道上对银行的依赖。1.1.2第三方支付平台的基本服务模式单纯的网关型第三方支付系统只为用户提供了银行账户到银行账户的收付款,而提供虚拟账户或电子钱包服务的支付平台使用户有了更多的选择。如果买卖双方的其中一方没有虚拟账户,基于虚拟账户的电子邮件收付款也能让用户在线发送付款请求和接受付款。拥有虚拟账户的用户可以利用电子邮件付款模式向没有虚拟账户的人付款。用户向没有虚拟账户的人付款时,收款人会收到付款人的电子邮件通知。收款人点击电子邮件中的链接后,可以注册一个新账户,而该款项会立即出现在账户余额中。同样如果付款人没有虚拟账户
17、,收款方只需提供付款方的E-MAIL地址即可。在收款方完成收款操作后,支付平台会自动发送E-MAIL通知付款方。付款方查看催款通知后,按照邮件里的提示完成虚拟账户的注册并充值,即可完成对付款方虚拟账户的付款。理论上拥有虚拟账户的用户就可以付款给任何人,也可以接受任何人付款。而且这种收付款的行为与实际发生的交易实现了分离,即便收款人和付款人之间没有产生任何买卖关系,这种收付款的操作仍然可以完成,这相当于一种汇款的行为。图1.1支付平台资金流动示意图在买家、卖家、支付平台三者之间,支付平台行使银行的职能(如图3.1),完成支付结算的功能;在卖家、支付平台,银行之间,支付平台代理买家角色,完成买家的
18、支付请求及资金清算功能;在买家、支付平台,银行之间,支付平台代理卖家角色,完成商家的交易信息的生成及商户的收款和结算功能。1.1.3虚拟账户的资金沉淀用户对虚拟账户充值操作,相当于是一种预支付的行为,这种预支付必然会使用户的一部分资金在第三方支付平台那里沉积下来,也就是存放在第三方支付机构在各家银行开设的银行账户中。这些资金没有随着支付行为的发生而离开第三方支付的银行账户,因为收款方不是每笔交易后都立刻与支付平台进行结算,而是定期进行结算,然后将虚拟账户中的资金再转入自己的银行账户,这就使得沉淀的资金不仅来源于消费者预支付的那部分资金,也包括那些直接从消费者的银行账户“支付”到收款方的虚拟账户
19、,但暂时停留在支付平台的银行账户那里,还没有转到收款方银行账户的资金。虽然大部分虚拟账户中闲置资金都很少,大部分网上支付的交易金额也相对较小,但是随着交易量的不断增大,以及虚拟账户的数量的增加,资金的沉淀还是会逐渐增加。只要有新的虚拟账户参与近来,就会带来新的资金。只要买卖双方不把资金转到其他银行账户或兑换成现金,这些资金就会一直在第三方支付平台那里,而且会越来越多。1.2平台结构分析1.2.1总体结构第三方支付平台系统(如图1.2,1.3)从宏观上可以分为两个子系统,即“充值提现子系统”和“平台支付子系统”,“充值提现子系统”主要用于从银行账户向虚拟账户充值,和将虚拟账户中的资金转入银行账户
20、。无论是“充值”,还是“提现”,都是一种基于网上银行的付款操作。这与支付网关的“付款部分”所起的作用是一致的,因此这部分的系统结构也就没有实质性的变化。对于“平台支付子系统”,由于是虚拟账户到虚拟账户到的支付,整个支付的过程变成平台内部数据库中两条记录的UPDATE操作,而这中间最关键的就是将支付的信息传递给“平台支付子系统”,也就是“商户接口”部分。图1.2第三方支付平台系统总体结构图图1.3支付序列图1.2.2功能模块以下是“充值取现子系统”,“平台支付子系统”的序列图,用来说明两个子系统的功能。对于用户的充值,提现操作,都涉及用户,第三方支付平台,银行三个对象,这里的用户不区分是付款人,
21、还是收款人,尤其对于提现操作,付款人和收款人都会存在这样的行为;而真正的平台支付过程则只涉及付款人,收款人和第三方支付平台三个对象。充值取现子系统:图1.4充值序列图图1.5提现序列图平台支付子系统:图1.6平台支付子系统序列图1.3与商户网站的连接第三方支付平台与商户网站的连接主要通过第三方支付机构提供的是一个统一的CGI接口程序来实现。一般来说,用户可以使用包含aspp,phP,jsP在内的多种技术来接入支付平台,接入的实现与商家使用的动态页面技术无关。前期开发中,商户网站应具有基本的订单数据库支持,支付接口可以预留。第三方支付平台的接入工作,主要完成两个动作:一个是商家将订单相关数据进行
22、定义和构成,准备提交到第三方支付平台,一般定义一个Send页面来完成;另一个是付款方在第三方支付平台完成支付过程后,第三方支付平台会将支付结果数据通知商家,商家可以通过程序自动接收这些支付结果数据,一般定义一个receive页面来完成。在Send页面中,对支付的相关数据采用了form方式提交。只要采用了与第三方支付平台一致的数据处理规则,也可以采用其他方式进行提交。在receive页面中,主要是对从支付平台接收过来的数据进行处理。比如说,判断数据是否被伪造,判断支付是否成功,支付成功或失败分别进行什么样的处理。商家可以结合自己网站的处理逻辑来完成。1.3.1支付平台接入设计在支付平台接入程序方
23、面,主要表现为商家网站将支付数据提交到支付平台,等待支付平台处理完毕之后,再从支付平台接收支付结果数据。现在对这两个步骤分述如下:1商家提交支付数据到第三方支付平台(需要提交的数据如下)商户编号(merehant_id)商家在支付平台的唯一身份编号。通过支付平台支付的钱,将被转到该商户编号所对应的虚拟账户上。订单编号(orderid)由商家网站生成的、可在商家网站唯一确定某笔订单的编号。通过此订单编号,用户可以在商家网站查找该笔定单的详细信息,商家同时也可以在支付平台的系统中查询该笔订单的支付状况。订单编号是商家网站一记录与支付平台系统一记录的关联点。订单金额(amount)订单应付金额。支付
24、平台根据此参数扣取用户所需要支付的金额,转到商家的虚拟账户上。订货人姓名(pname)用于在支付平台页面提示用户订单中产品或服务的购买者。支付结果返回地址(merchant-ur1)用于在支付完成之后,支付平台将支付结果返回到指定的页面,以进行进一步处理。一般是商家网站上的支付结果接收页面的绝对地址。商品描述(eommdity_info)用于在支付平台页面提示用户订单中产品或服务的简单描述。商家附加信息(merehant-param)商户如果有数据必须要传递到支付接收页面时,可通过此参数来进行传递。另外,此参数将被作为商户私有参数记录到商家在支付平台的交易记录中。用户可以在网关交易的详细记录中
25、看到该数据。检验选择(issupportdes)商家用来选择是否对订单签名进行安全性校验。该参数可以有两个选项:l为不校验;2为校验。订单校验加密串(mac)2商家从支付平台接收的支付结果数据(应与订单提交前的对应数据相匹配)商户编号(merehant_id)订单编号(orderid)订单金额(amount)交易日期(date).商家附加信息(merehant夕aram)交易结果(sueeeed)如果为“Y”表示支付成功;如果为“N”表示支付失败。订单校验加密串(mac)在支付平台服务器端生成的订单校验加密串。商家可以根据这个值,与按范例中相同规则生成的的订单校验加密串对比,如果不一致,表明数
26、据可能被伪造,可以认为支付失败。鉴于web技术的多样性,商家可以根据网站的需要采取不同的方式进行数据的提交和接收。但是不管采用什么办法,以上的参数是必要的。1.3.2支付接口开发当消费者完成网上购物过程,形成最终订单且消费者选择使用第三方支付平台进行网上支付时,该接口程序将消费者订单中有关支付的信息提交到支付平台,消费者在完成网上支付后,将通过URL方式将支付结果返回给商户。Md5校验串生成方法:当消费者在商户端生成最终订单的时候,将订单中的merchantid,orderid,amount,merehant-uri,key五个参数的value值根据:“merehant-id=erehant-
27、id值&orderid=oulerid值&amount=amount值&merchant-url=erchant-url值&merchant-key=key值”的规则拼成一个无间隔的字符串(char型,顺序不能改变)。其中参数key为商户自行在支付平台账户管理里设置的密钥值。在用户提交到支付平台的数据中,需要设定merehanturl。这个值就是支付平台传递数据到商户的目的地址。支付平台通过远程读取商户服务器上的支付接收页面,显示在用户的浏览器上。假设merchantesurl=httP:/www.bZc.co而rePlycgi商户编号是第三方支付平台分配给其用户的一组数字字符串,用于标明该用
28、户的身份。每个商户编号是唯一对应一个虚拟账户的。在网上交易过程中,如果操作成功,和该商户编号对应的虚拟账户的账户余额就会发生相应的改变。商户密钥是由用户自行设定的一组混合字符串,由数字或字母或两者混合组成。它在支付平台中所起的作用就是,保障支付过程的安全进行。在网上交易的过程中,该字符串与其他数据组成新的字符串,经过加密后在商户网站和支付平台间进行传递。支付平台从用户注册的数据库中,获取对应的数据,采取相同的规则,对商户网站提交的数据进行对比认证。从而保证该交易在安全的环境中进行。商户网站中所提交的商户密钥,必须与其在支付平台中所设定的商户密钥值保持一致。否则,可能会导致验证签名不通过,支付失
29、败。例如:Merehant-id=000000000000000001&orderid=0000001&arnount=100&merchant-url=httP:/使用标准MD5算法对该字符串进行加密,加密结果即为所需的订单MD5校验码,将其写入mac字段。MDS算法软件接口如下,具体程序见附录。imPortjava.io.Printstream;imPortjava.lang.refleet.Array:PublieelassMD5PublicStringgetMD5ofstr(Strings);PublieMDS();Publiestaticvoidmain(Stringargs);提交
30、付款订单接口以表单的POST方式将交易数据提交到支付平台提供的支付接口,假设支付接口的URL是:httPs:/send.jSP: 支付平台 订单编号:叼td订单金额:支付人:商品名称:formname=frmmethod=Postaetion=https:/www.PinPutname=merchant-idtype=hiddenvalue=inPutname=orderidtype=hiddenvalue=inPutname=amounttype=hiddenvalue=inPutname=issuPPortDEStyPe=”hiddenvalue=inPutname=mactype=hid
31、denvalue=inPutname=merchant-urltype=,hidden,value=inPutname=Pnametype=hiddenvalue=inPutname=commodity-mfo”type=hiddenvalue=inPutname=merehant-Paramtype=hiddenvalue=inPutname=Pernailtype=hiddenvalue=inPutname=PidtyPe=hiddenvalue=支付结果页面返回接口支付完成以后,支付平台将订单支付结果数据返回到商户提交表单时所设定的merchant-url。reCelVC.JSP:支付平
32、台订单编号:订单金额:支付结果:2、第三方支付的应用现状2.1第三方支付在BZB中的应用目前,BZB的交易额占到了整个中国电子商务市场的98%,是电子商务的绝对主流。但是在BZB领域,大多交易仍然停留在信息流的传递上,行业和地区电子商务平台以及中小企业自建电子商务平台交易额较少。以阿里巴巴为例,其1300万中小企业客户目前仍只能在网上达成交易,网下完成交易,这大大降低了双方交易的效率,从某种意义上说还处于电子商务的初级阶段。目前BZB电子商务支付主要以传统的银行汇款为主,BZB网上支付在资金安全、信用体系、行业监管、物流等方面还存在很多问题未解决。BZB网上支付在我国的环境和条件尚未成熟,支付
33、己经成为影响BZB电子商务发展的最大瓶颈。而活跃于BZC和CZC领域的第三方支付公司难以对BZB交易进行担保,需要在传统支付环节中的商业银行进入到这一领域来,目前中国银行、工商银行、农业银行等己经开开始尝试与第三支付平台合作来服务BZB电子商务交易业务。事实上,BZB与BZC、CZC这两个支付领域的相似度并不是很高,BZC、CZC一直都是以小额分散的支付为主,BZB领域的支付金额数量一般都上万,如今大部分BZB交易,特别是金额巨大的交易,在支付环节还是采用线下支付,也就是传统的银行付款方式。金额越大,在支付环节要承担的风险也越大。即使有第三方支付平台能够暂时保管资金,但是用户双方都要经受将近一
34、周或者更长时间的巨额资金无法到帐的风险。当BZB领域的企业采用第三方支付,时,企业对支付平台需要有相当高的信任度,这种信任度和支付金额成正比,因而目前BZB领域仅有的一些第三方支付平台还是以行业第三方支付平台为主。这类行业第三方支付平台,大多为独立网关,基本完全独立于电子商务网站,就是前文提到的第一种类型的“独立的第三方网关模式”。与CZC第三方支付不同的是,这类BZB的支付平台往往没有完善信用评价体系,它主要依赖于客户的实力及信誉情况来弥补自身风险抵御的不足。如果只靠提供网关支付服务,而不提供其他增值服务,则容易被银行机构或同行复制。2.2第三方支付在BZC中的应用在BZC型的电子商务中,网
35、上商城出售的商品基本上都是一些特殊类型的商品,如图书、音像制品、数码类产品、鲜花、玩具等等。这些商品对购买者视、听、触、嗅等感觉体验要求较低,在BZC领域付款方式以货到付款与网上支付相结合。在BZC中,由于企业的规模不同,往往造成了它们采用第三方支付平台的不同。主要可以分为以下两类:一类是,一些规模较大的网上商城例如:卓越网、当当网以及一些直销企业网站等等,他们在所采用的第三方支付平台,往往都是从自己的电子商务网站建立起来的支付网关,因而这类支付平台只针对该企业的产品,支付网站最初也是为了满足自身配送商品和实时支付而研发搭建的,逐步扩展到提供专业化的支付产品服务。二类是,网站利用支付平台和中介
36、担保支付平台吸引商家开展经营业务。买方选购商品后,使用该平台提供的账户进行货款支付,并由第三方通知卖家货款到达、进行发货。买方检验物品后,就可以通知付款给卖家,第三方再将款项转至卖家账户,这类第三方支付平台和CZC领域的支付平台比较类似。事实上越来越多的BZC型电子商务已经具备了CZC的特征,特别是对一些小商家而言,比如一些小商家集中的网上商城,尤其是对那些实力较为弱的网站或网上商城,可以采用由独立或者合作开发的,同各大银行建立合作关系的,凭借支付公司实力和信誉承担买卖双方中间担保的第三方支付平台。不过,由于担心利益竞争问题,目前在BZC网上支付领域,许多商家主要选择和独立的第三方支付平台和各
37、大银行的网上银行进行合作。此外BZC支付涉及到很多大的商家,而这些商家在很大程度上又是各大银行的客户,银行和第三方支付平台都在努力成为这些大商户的支付选择,未来各大银行与第三方支付平台在BZC支付领域的竞争将日趋激烈。2.3第三方支付在CZC中的应用通过上面对BZB和BZC第三方支付的分析,我们可以看到目前第三方支付最大的应用还是在CZC类型的电子商务领域中。第三方支付平台的出现,很好地解决了CZC交易中的很多不确定因素,平台的接入很好地解决了买家与卖家之间的信用问题,也提供了更为安全的支付技术。艾瑞调查研究表明,目前第三方网上支付在CZC领域已趋于成熟。在CZC的电子商务平台上聚集了大量的个人买家和卖家,由于网上交易、支付的双方互不见面,交易的真实性不容易考察和验证,且CZC交易次数多而交易额较小,各大银行不愿花太多精力在这种耗费大而收入微薄的业务上,这给第三方网上支付提供了很大的发展空间,使得其成为CZC的主要支付方式。据调查