基于B/S的扫码支付平台的设计

2018-11-13 05:31汪天星程耕国
现代电子技术 2018年22期
关键词:支付方式

汪天星 程耕国

摘 要: 针对单一的支付方式不能满足用户多元化的支付需求,设计一个基于B/S的扫码支付平台。该平台通过采用扫码支付模式,实现对支付宝和微信支付服务的整合。平台由服务器选型、支付订单生成和异步回调处理三个模块组成。服务器选型模块用于从集群服务器中选择性能相对最佳的服务器处理整个扫码支付流程。支付订单生成模块调用第三方支付下单API生成预支付订单。异步回调处理模块的功能是接收支付通知和更新数据库表的数据。平台采用四项措施降低了支付风险,为用户提供了既安全又快捷的支付服务。

关键词: 支付方式; 支付服务整合; 服务器选型; 异步回调处理; 扫码支付; 支付平台

中图分类号: TN820.2?34; TP311 文献标识码: A 文章编号: 1004?373X(2018)22?0049?04

Abstract: As the single payment mode cannot meet users′ diversified payment needs, a scanning?code payment platform based on B/S is designed. On the platform, the integration of Alipay and WeChat payment services is realized by adopting the scanning?code payment mode. The platform is composed of three modules of server model selection, payment order generation, and asynchronous callback processing. The server model selection module is used to select the relatively high?performance server from cluster servers to handle the whole scanning?code payment process. The payment order generation module is used to invoke the third?party payment order API to generate the prepayment order. The functions of the asynchronous callback processing module is to receive payment notifications and update the data in database tables. Four measures are taken for the platform to reduce payment risks, which can provide users with secure, rapid and convenient payment services.

Keywords: payment mode; payment service integration; server model selection; asynchronous callback processing; scanning?code payment; payment platform

0 引 言

随着互联网技术的飞速发展,以支付宝为代表的第三方支付方式迅速在中国普及。第三方支付逐渐取代现金和信用卡支付,成为当前中国最受欢迎的支付方式。然而,中国消费者广泛分布在线下、PC端和移动端,消费者的支付需求趋于多元化,支付场景过于碎片化。任意一种支付方式不足以应付所有支付场景和满足所有支付需求。本平台为了满足消费者多元化的支付需求,基于扫码支付模式整合支付宝和微信支付服务,为消费者提供灵活方便、多渠道的支付服务[1]。

1 扫码支付

1.1 支付原理

首先,平台服务器按照第三方支付平台(指支付宝和微信)制定的规则生成二维码,并将它展示在PC网页上。在用户使用APP客户端扫描二维码之后,扫码信息会立即被APP发送给平台服务器,平台服务器则根据接收到的信息识别用户使用的APP是支付宝还是微信。然后,平台服务器会调用相应的下单API生成预支付订单。最后,用户访问由平台生成的支付页面,在该页面上显示着订单详情,用户点击支付页面上的“立即缴费”按钮就可以发起支付。第三方支付服务器以同步的形式返回支付结果给APP客户端,以异步的形式返回支付结果给平台服务器,具体流程如图1所示。

1.2 服务器选型

当服务器的负载达到一定程度时,页面加载变得很缓慢,造成非常差的用户体验[2]。如何在集群服务器中选择性能相对最优的服务器来处理扫码支付业务流程是当前亟待解决的问题。在平台的所有业务逻辑中,只有定时任务才会显著加大服务器的负载。相较而言,其他业务逻辑对服务器造成的负载非常小,可以忽略。此外,服务器的硬件配置也在很大程度上影响着服务器性能。所以,在选择高性能服务器时主要考虑以下两类因素:一类是服务器正在执行的定时任务的复杂度;另一类是服务器的硬件配置。对于不同复杂度的定时任务分别给予不同的权值,定时任务越复杂其权值越大,该服务器负载所占的权值是所有正在执行的定时任务的权值总和。不同配置的服务器也赋予一个权值,权值越大服务器的硬件配置越好。服务器的负载和硬件配置所占的权值之和越小,表明该服务器当前的性能越佳[3]。

1.3 支付安全

支付领域最棘手的问题是安全性问题,如何降低支付风险是平台十分重要的一个环节[4]。在扫码支付流程中,可能会产生支付风险的情况有如下三种:一是信息未设置有效期;二是信息未加密;三是并发操作。针对以上三种情况,平台采用四种措施降低支付风险。

1.3.1 有效期设置

如果程序没有为二维码设置一个有效期,则发生重复缴费情况的概率会变大。此外,程序设置的有效期不能太长,否则就会失去设置的意义。相似地,对于预支付订单的订单号,程序也设置了有效期来降低潜在的支付风险。平台程序设置二维码的有效期为5 min,当用户在有效期之外扫描二维码,程序会提示用户异常信息。除此之外,平台程序还会在倒计时5 min后,关闭用于展示二维码的网页。

1.3.2 数据加密

为了提高数据的传输安全性,平台服务器与第三方支付服务器之间互相发送的信息必须加密。平台程序使用MD5算法对数据进行加密[5?6]。加密步骤有两步:第一步,程序将原始数据中所有的参数按照参数名ASCII码从小到大排序,使用“=”和“&”拼接成URL键值对格式的字符串A(如key1=value1&key2;=value2…);第二步,程序将第一步得到的字符串A和商户密钥key拼接在一起得到新字符串B,然后程序根據MD5算法处理字符串B,最后程序将处理结果全部转换为大写字符。

当前主流的网络传输协议有HTTP和HTTPS等。由于HTTP协议没有加密功能, HTTP请求很容易被黑客伪造,因而其传输安全性很低[7]。HTTPS协议在HTTP基础之上增加了身份验证和加密功能,它的传输安全性较高[8]。为了提高程序的安全可靠性,本平台所有的核心接口都使用HTTPS协议。

1.3.3 乐观锁

当多个用户在同一时刻缴费时,会有较大概率发生重复支付的情况,平台程序通过使用乐观锁来避免重复支付的发生。乐观锁一般用于解决由并发操作引起的问题[9],它的核心是数据版本version的记录机制。当用户访问订单详情页面时,程序会查询数据版本version,并将它记录下来。当一个用户点击支付页面的“立即缴费”按钮时,程序会比较当前数据版本version与之前查询出的version,如果两个version值一致,则当前version值加一,用户可以继续支付;否则,用户无法支付,提示用户重试。平台程序通过这套记录机制避免了重复支付情况的发生,具体实现流程图如图2所示。

1.3.4 唯一索引

在用户支付成功之后,第三方支付服务器会每隔一段时间发送一次支付通知来回调平台接口,支付通知的发送间隔不固定。有较小的几率会发生重复的支付通知在极短的时间内多次更新业务数据的情况。通过对订单号字段设置唯一索引,平台程序解决了上述并发问题。只要有一次支付通知修改了平台的数据,程序就往数据库表新增一条带有订单号的记录,由于订单号已经存在数据库中,其他后续重复的支付通知将无法更新业务数据。

2 平台总体设计

平台采用B/S架构,遵循MVC开发模式[10]。后端使用的框架有Dubbo,Spring和SpringMVC,前端主要采用的技术是EasyUI。此外,为了提高服务器的运行速度,平台搭建了集群服务器,其总体结构如图3所示。

2.1 平台功能模块

扫码支付平台主要由服务器选型、支付订单生成和异步回调处理三个功能模块组成,具体框图如图4所示。

2.2 数据库设计

本平台面向于收取小区物业费,涉及到的表共有11张,分别是小区表TBAA01、楼栋表TBAA02、单元表TBAA03、楼层表TBAA04、房间表TBAA05、用户表TBBB01、服务器表TBCC01、二维码表TBCC02、物业费账单表TBDD01、订单信息表TBDD02和缴费记录表TBDD03。各表之间的关系如图5所示。

3 主要功能实现

3.1 服务器选型实现

当集群服务器中任意一台服务器开始执行定时任务时,程序会向TBCC01表新增一条记录,同时设置字段JOB_FLAG_的值为0。当定时任务即将结束时,程序会修改字段JOB_FLAG_的值为1。结合式(2),程序可以查询出[Wall]的最小值Wmin。同时,程序也可以查询出性能最佳服务器的IP地址和端口号,主要代码如下:

在获取性能相对最优服务器的IP地址和端口号后,新的扫码支付流程将完全由最优服务器处理。新扫码支付流程主要指从生成二维码到处理支付通知整个阶段,如图1所示。

3.2 数据加密实现

MD5加密的原理是将每个字符转化为十六进制,原始数据在使用MD5工具方法加密前,需要转化为URL键值对形式的字符串。数据加密的主要代码如下:

3.3 支付实现图

在扫码支付流程中,只有两个页面展示给用户看,它们分别是二维码页面和显示着订单详情的支付页面,如图6所示。

4 结 语

本文针对单一支付方式不能够满足用户多元化的支付需求的现状,设计一个基于B/S的扫码支付平台。该平台基于扫码支付模式,为用户提供了快捷、安全的支付服务。平台通过量化服务器负载和硬件配置实现了自动获取性能最优的服务器,从而为用户提供快捷的服务。平台通过采用设置有效期、信息加密、乐观锁、唯一索引等方式降低了支付风险,从而为用户提供了安全的服务。

参考文献

[1] 黄晓芳,周亚建,赖欣,等.基于第三方的安全移动支付方案[J].计算机工程,2010,36(18):158?159.

HUANG Xiaofang, ZHOU Yajian, LAI Xin, et al. Security mobile payment scheme based on the third party [J]. Computer engineering, 2010, 36(18): 158?159.

[2] 孙乔,邓卜侨,王志强,等.一种基于分布式服务器集群的可扩展负载均衡策略技术[J].电信科学,2017,33(9):190?196.

SUN Qiao, DENG Buqiao, WANG Zhiqiang, et al. A scalable load balancing strategy based on distributed server cluster [J]. Telecommunications science, 2017, 33(9): 190?196.

[3] 姜劲松,杨波,缪志敏,等.基于任务和用户属性的工作流任务分配算法[J].计算机仿真,2015,32(12):222?225.

JIANG Jinsong, YANG Bo, MIAO Zhimin, et al. A workflow task assignment method based on the properties of task and user [J]. Computer simulation, 2015, 32(12): 222?225.

[4] 刘亚军.网上支付系统的安全性研究[J].现代电子技术,2013,36(8):74?75.

LIU Yajun. Research on security of online payment system [J]. Modern electronics technique, 2013, 36(8): 74?75.

[5] 谭健,周清雷,斯雪明,等.全流水架构MD5算法在拟态计算机上的实现及改进[J].小型微型计算机系统,2017,38(6):1216?1220.

TAN Jian, ZHOU Qinglei, SI Xueming, et al. Implementation and improvement of full?pipeline MD5 algorithm based on mimic computer [J]. Journal of Chinese computer systems, 2017, 38 (6): 1216?1220.

[6] 洪丹丹,罗军峰,冯兴利,等.基于RSA与MD5签名的实名制微门户设计[J].微电子学与计算机,2016,33(9):36?41.

HONG Dandan, LUO Junfeng, FENG Xingli, et al. Design of a real?name WeChat portal based on RSA and MD5 signature [J]. Microelectronics & computer, 2016, 33(9): 36?41.

[7] 王鹏,季明,梅强,等.交换式网络下HTTP会话的劫持研究及其对策[J].计算机工程,2007,33(5):135?137.

WANG Peng, JI Ming, MEI Qiang, et al. HTTP session hijacking on switch LAN and its countermeasures [J]. Computer engineering, 2007, 33(5): 135?137.

[8] 祝瑞,车敏.基于HTTP协议的服务器程序分析[J].现代电子技术,2012,35(4):117?119.

ZHU Rui, CHE Min. Analysis of server program based on HTTP protocol [J]. Modern electronics technique, 2012, 35(4): 117?119.

[9] 郝娉婷,胡亮,姜静妍,等.基于多管理节点的乐观锁协议[J].吉林大学学报(工学版),2017,47(1):227?234.

HAO Pingting, HU Liang, JIANG Jingyan, et al. Optimistic lock protocol of multi?managed nodes [J]. Journal of Jilin University (Engineering and technology edition), 2017, 47(1): 227?234.

[10] 刘红霞,陆文迪.改进的MVC设计模式的研究与应用[J].计算机工程与科学,2015,37(9):1688?1691.

LIU Hongxia, LU Wendi. Research and implementation of an improved MVC design pattern [J]. Computer engineering and science, 2015, 37(9): 1688?1691.

猜你喜欢
支付方式
总额支付制度变革对公立医院影响分析
医保支付方式改革对地区医院财务管理的影响
网络视频企业并购分析
基于医保支付方式改革的医疗卫生资源配置均衡化研究
上市公司的并购支付方式选择与短期并购绩效
企业并购支付风险研究
电动车商业电桩付费支付方式探讨
支付方式对消费行为的影响