电商平台支付接口开发原则及流程
随着电子商务行业的发展,众多中小企业也纷纷加入电子商务大军。实现电子商务最重要的要求之一就是拥有一个功能强大的电子商务网站平台,用于管理公司电子商务相关的产品和服务。完成整个电子商务流程最重要的环节就是收款,即通过互联网向电子商务平台的所有者支付商品和服务的款项。
我们把电商平台的所有者,也就是在电商平台上销售商品或服务的提供者,称为商家。电商平台需要实现的支付功能是客户通过电商平台选择商品和服务,提交订单,平台处理价格并计算出该订单需要支付的总金额,提供给客户进行支付。
商户需与银行、银联或第三方支付机构签订合同,实现网站的支付功能
那么顾客如何通过网络支付,商户又如何收款并转入顾客的银行卡呢?这就是本文要讲的重点。
我们知道资金处理必须经过银行,商户可以与商业银行签订合同,成功成为该银行的授权商户,银行会提供相关的技术接口,让商户在网站中添加相关的接口程序,将用户在银行的相关资金划转到自己的账户中,实现收款。
但是商业银行众多,用户持有的银行卡种类繁多,因此,要让大多数银行卡能够通过网站支付,需要分别与每家银行签订合同,接入成本很高。为了解决这个繁琐的接入问题,我们可以直接与“银联在线支付”签约,使用银联提供的支付接口。
“银联在线支付”是中国银联与商业银行联合推出的一体化、综合性、开放式的网上支付平台,全面支持各类银联卡,方便快捷、安全可靠、通用性强。但随着人民银行发放第三方支付牌照,各第三方支付公司直接与商业银行签约,为商户提供支付接入。第三方支付公司接入门槛低、费率低、效率高、技术开发简单等特点,吸引了众多商业网站的接入和使用。
知名的微博钱包、支付宝、财付通、快钱等支付平台均为拥有中国人民银行第三方支付牌照的正规支付公司。
与银联或第三方支付公司签约后的收款流程
商户网站将支付信息提供给支付网关后,网站引导用户进入相关银行网关进行支付。支付完成后,银行扣款并将支付结果返回给第三方支付公司。支付公司收到结果后,将商户在支付平台的入账处理并等待结算。结算完成后,商户即可登录第三方支付平台提取资金,并通过第三方支付平台将资金划转至自己的银行卡。
支付公司提供的结算周期一般为T+1或者T+0。T+1模式下,用户完成支付后,支付公司次日结算,商户可将资金提现至其银行卡,或者支付公司直接将资金结算至约定的商户支付账户。如果是T+0模式,支付资金可随时清算,提现至商户银行卡。
与银联及第三方支付公司签约后的技术开发流程
网站与支付公司签订合同后,会获得相关的商户账号、密钥、支付网关、开发文档,技术人员阅读文档获取所需要的相关数据参数,如产品名称、金额等,并使用约定的加密方式和密钥进行加密,以POST或者GET形式发送到支付公司提供的支付网关URL。
支付网关收到商户提供的相关参数后,会进行数据处理和加密验证,若数据合格且密钥验证成功则引导用户进入银行选择页面,用户选择自己使用的银行后,进入相关银行的支付网关进行支付。
用户在银行网关支付成功后,银行扣款并将支付结果回传给支付公司,支付公司收到银行返回的结果后,也进行签名验证并将支付结果信息传递给商户网站。
支付公司也是通过FORM表单将支付结果传递给商户网站,但数据的传输由服务器后端处理。商户网站在向支付公司发起支付请求并传递支付相关参数时,包含一个或两个URL,用于指定接收支付结果的URL。
商户网站获取支付结果的方式有两种:一种是通过浏览器跳转通知,一种是服务端异步通知。那么商户的技术人员该如何选择呢?我们分别对这两种通知方式进行分析。
浏览器跳转通知:该方式主要基于用户访问的浏览器,如果用户在银行页面支付成功后直接关闭页面,不等待银行跳转至支付结果页面,商户网站将收不到支付结果通知,难以处理支付结果。另外浏览器端的数据容易被篡改,安全性降低。因此我们建议技术人员在开发时使用后端服务器通知进行技术判断,前端通知只做支付相关展示,不做逻辑处理。
服务端异步通知:该方式是支付公司服务端后台直接将参数以POST或者GET方式发送到用户指定的异步通知URL。在接收异步参数的商户网站URL对应的程序中,需要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,如果验证正常则处理订单状态或者将用户记入网站。