MD5加密及第三方支付接口的技术比较
摘 要:第三方支付市场的发展前景乐观,但同时市场竞争也越来越激烈。随着第三方支付业务许可牌照的发放,第三方支付将很可能打破大型银行垄断电子金融的局面。本文将主要研究第三方支付的“网上支付接口”,比较分析各种不同的第三方支付接口的差异性。
关键词:电子支付 第三方支付 支付接口
电子支付是电子商务中重要的一个环节,其中第三方支付是电子支付的一种重要方式。随着第三方支付在网络交易中得到越来越广泛的使用,中国的互联网支付市场也得到发展迅速。根据Enfodesk易观智库数据报告显示,2010年中国第三方支付市场全年交易额达到11,342亿元,环比增长95%。同时,第三方支付市场依然保持较高的市场集中率, 支付宝以49%的份额占据半壁江山,支付宝、 财付通、 快钱、 Chinapay、 易宝支付五家企业占据整个市场的份额接近90%。根据《中华人民共和国中国人民银行法》等法律法规,中国人民银行制定了《非金融机构支付服务管理办法》,央行颁布《非金融机构支付服务管理办法》,通过申请支付牌照的方式把第三方支付企业正式纳入国家的监管体系下。2011年5月26日,中国人民银行发布公告称,已向国内27家单位颁发了首批非金融机构支付业务许可证。这27家机构包括支付宝、银联、财付通、 快钱盛付通、汇付天下等。
本文认为,第三方支付市场的发展前景乐观,但同时市场竞争也越来越激烈。随着第三方支付业务许可牌照的发放,第三方支付将很可能打破大型银行垄断电子金融的局面。本文将主要研究第三方支付的“网上支付接口”,比较分析各种不同的第三方支付接口的差异性。
从技术角度讲,支付接口就是第三方支付平台提供的一段代码,商务需要将该代码配置到自己的服务器上去,并设置一些相关的接口参数。那么当客户选择使用第三方支付时,支付信息就会转到第三方支付平台的服务器上运行。
具体来看,使用支付接口完成的支付流程如下:
(1)持卡客户(买方)选购好商品后,网上商城(卖方)为持卡客户生成订单;
(2)持卡客户和第三方服务器建立连接,将账号信息与订单信息发给第三方;
(3)第三方服务器要求顾客进行订单确认,收到确认信息后与所支持的银行进行支付交易处理,得到银行的支付确认后授权给商家可以发货;
(4)网上商城通知持卡客户发货信息。
要实现接口,需要有一个网站、支付宝账户、支付宝的合作身份ID、安全校验码等。为了方便电子商务网站的集成,各支付网关在正式成为商家用户后,可下载ASP、.NET、JAVA等针对不同服务器类型的商务网站的集成接口程序。本文将分别以各种有代表性的第三方支付平台为例说明与JSP类型的电子商务网站的接口应用方法。
值得注意的是,参数简单的传过去是不行的,这些参数是经过了按一定排列顺序并区分大小写(参数为空也要传递)再加上一个MD5字符串。即使参数值为空字符串和没有传值也是有区别。
比如现在有一个页面要向第三方支付平台传递一个价格跟商品信息,则可以通过POST和GET两种方式传递进去。当第三方支付平台接收参数的同时,它还要判断身份,所以传递的时候身份信息也要一起传过去。当身份确认以后,第三方支付平台就开始处理商品信息跟价格信息了。无论消费者是否支付成功,它都会返回一个信息给消费者,这个返回页面就是第三方支付平台之前设置好了的,在这个返回页面里面写入相关的支付数据信息,这样就完成了一个简单支付接口。
目前市场上的第三方支付平台的运营模式可以将分为二种类型:独立的和非独立的第三方支付模式。(1)具备担保功能的非独立第三方支付模式,也称为信用中介型模式。该种运营模式,基本是由大型的电子交易平台独立开发或与其他投资人共同开发,凭借运营商的实力和信誉与各大银行合作,同时能够为买卖双方提供中间担保的第三方支付运营模式。这种模式的运营商主要是借助电子交易平台和中间担保支付平台与用户开展业务,在交易过中采用充当信用中介的模式,保证交易的正常进行。(2)独立的第三方网关模式,是指没有自己的电子商务交易网站,由第三方投资机构为网上签约商户提供围绕订单和支付等多种增值服务的共享平台。
根据第三方平台运营的两种模式,本文以非独立的第三方网关模式(支付宝)和第三方独立的网关模式(易宝)为比较对象,从开发环境、传递参数和安全性等三个方面进行比较分析。
在软件方面,为了方便电子商务网站的集成,各支付网关在用户正式成为商家用户后,都可以下载.NET、ASP、JAVA(JSP)、PHP等针对不同服务器类型的商务网站的集成接口程序。在硬件方面,基于高可靠硬件设备打造高性能平台,基于JAVA等语言开发高效安全的应用程序,系统采用分层架构,关键设备全部采用热备冗余,确保业务的不间断服务。
如在1.2.2小节中描述的支付实现过程,商家和第三方支付平台之间要通过支付接口传递一系列的购物信息,包括商品信息、用户信息等。本节将主要比较商家发送支付请求和商户接收支付完成数据的参数信息。
2.2.1商家发送支付请求相关参数
支付宝提供给商家的“发送支付请求”的接口参数共23项,易宝提供给商家的“发送支付请求”的接口参数共20项。请求参数信息(包括名称、含义、长度、是否为空、说明)不在本文做详细赘述,并将各种类型的信息进行分类描述,具体见表1。
支 付 宝 |
交易信息 |
付完款后跳转的页面、交易过程中服务器通知的页面、防钓鱼时间戳、超时时间、字符编码格式、加密方式 |
订单信息 |
订单号、订单名称、订单描述、订单详细、订单备注、订单总金额、支付方式、网银代号 |
|
商品信息 |
展示网址 |
|
买家信息 |
买家支付宝账号、买家本地电脑的IP地址 |
|
卖家信息 |
卖家支付宝账号、合作ID、提成类型、提成信息集、安全校验码 |
|
其他信息 |
自定义参数 |
|
易 宝 |
交易信息 |
交易签名串、请求命令、业务类型、是否需要应答机制、签名数据、交易请求地址、交易结果通知地址 |
订单信息 |
订单号、支付金额、交易币种、银行编号 |
|
商品信息 |
商品ID、名称、种类、描述 |
|
货运信息 |
是否需要填写送货信息 |
|
卖家信息 |
商户密钥、商户编号、商户扩展信息、退货地址 |
2.2.2商户接收支付完成数据的相关参数
支付宝提供给商家的“接收支付完成数据”的接口参数共10项,易宝提供给商家的“接收支付完成数据”的接口参数共18项。接收参数信息也不在本文做详细赘述,并将各种类型的信息进行分类描述,具体见表2。
支 付 宝 |
交易信息 |
支付宝交易号、交易状态、验证状态、签名数据、通知任务ID |
订单信息 |
订单号、订单金额 |
|
商品信息 |
商品标题、商品描述 |
|
买家信息 |
买家账号 |
|
易 宝 |
交易信息 |
签名数据、业务类型、支付结果、易宝支付交易流水号、交易结果返回类型、支付成功时间、交易结果通知时间 |
订单信息 |
订单号、订单金额、支付金额、交易币种、银行编号、银行定单号 |
|
商品信息 |
名称、种类、描述 |
|
卖家信息 |
商户编号、商户密钥 |
从以上的支付请求参数表和支付返回参数表可以看出,虽然各种支付接口在参数的具体设置方面存在一定的差异,但是将各个参数进行分门别类之后,基本上都包括交易信息、订单信息、商品信息、买家信息、买家信息这五类信息。
本文由此认为,各种支付接口在传递参数的设置上存在一定的“同质化”现象。
2.3安全性能
系统安全体现在三个方面:系统层、应用层、运营层。(1)系统层平台部署有安全数据中心、防火墙、入侵检测等等多种安全设备,有专业的信息安全团队负责每天对系统进行安全分析;(2)应用层通过加密以及电子签名等多种身份鉴别、认证、访问控制以及安全变成等手段,力求将自产品逻辑设计和程序代码漏洞的风险降到最低;(3)运营层则利用自主开发的安全监控系统,对每笔交易进行实时监控,同时提供全天24小时的运营服务。本文节将主要从“应用层”来比较两种支付接口的安全性。
2.3.1参数加密算法
支 付 宝 |
mysign = AlipayBase.BuildMysign(AlipayBase.ParaFilter(sPara), key) 把参数存入Map,将其中空值和签名参数除去;再按照“参数=参数值”的模式用“&”字符拼接成字符串,最后把拼接后的字符串再与安全校验码直接连接起来。 // MD5加密方法,key为支付平台发放给商户的“密钥” |
易 宝 |
Hmac = PaymentForOnlineService. getReq Md5HmacForOnlinePayment (String messageType, String merchantId, String orderId, String amount, String currency, String productId, String productCat, String productDesc, String merchantCallbackURL, String addressFlag, String sMctProperties, String needResponse, String frpID, String keyValue) // MD5-HMAC加密方法,keyValue为支付平台发放给商户的“密钥” |
注意:参数简单的传递是不行的,参数是经过一定排列顺序并区分大小写再加上一个MD5字符串。 |
从以上的支付加密信息表可以看出,一方面,两种支付接口基本上都采用的是MD5加密算法,该算法有很高的安全性;另一方面,在加密参数的具体设置上都使用了由支付平台发放给商户的“密钥”。
本文由此认为,各种支付接口在加密算法的选择上也存在一定的“同质化”现象。
2.3.2链接安全性
本文通过一个具体支付实例,来具体分析链接的安全性。
支 付 宝 |
|
& subject=%D9%AA%C2%DE%BC%CD%B9%AB%D4%B0 |
|
& body=I%2CII%2CIII+%BC%AF& order_no=zoo00001& price=100.00 |
|
& ordinary_fee=5.00& express_fee=10.00 |
|
& ac=4d5010376411f5042868f238e8613c9b |
|
易 宝 |
|
paymentId=363526768& date=20101120210158 |
|
& sign=7b3a57af221df17b33a4705c5b205b4f |
从以上的支付链接信息表可以看出,易宝的链接安全性较高,而支付宝在链接中明显透露了支付费用的部分信息。本文由此认为,两种支付接口在支付信息的安全性上都做的较为到位,支付技术较为安全,消费者可以比较放心使用。当然,本文并不排除这里没有发现的其他一些安全隐患。
综上所述,第三方支付接口在技术实现上存在很多“同质化”现象。本文认为,技术上的“同质化”将降低竞争力。第三方支付应该在进一步完善支付接口的同时,进行一定的“商业模式”创新,提高行业竞争力。据本文调研发现,类似从综合搜索到垂直搜索、从综合网站到行业网站的发展趋势,目前,第三方支付也走上了“市场细分”的道路,互联网支付细分市场已经成为战略竞争的重点。以支付宝、财付通等为代表的第三方支付厂商继续拓展公共事业缴费业务、航空客票等领域。易宝支付等则在电信、教育交费等领域另辟蹊径。本文认为,走市场细分道路固然能够开拓新的市场,但不能在本质上提高行业竞争力,今天的“蓝海”很可能成为明天的“红海”。
从第三方支付市场上的具体行为来看,早在2007年淘宝网就率先推出的“卖家先行赔付”机制,不失为一种可贵的商业模式创新,在客观上起到了确保消费者利益的作用。2011年3月15日前夕,中国工商银行联合深圳本土购物网站走秀网设立专项赔付基金,推出先行赔付服务。随着银行开始介入网购售后领域,第三方支付市场将会面临更多的外部竞争压力。
本文没有对“先行赔付”机制的现实成效进行深入研究,但可以肯定,“先行赔付”(甚至“先行全额赔付”)将成为未来网络支付市场非常重要的一项竞争力指标。
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐