用于扫码购物的数据交互方法及系统与流程

文档序号:27824769发布日期:2021-12-07 20:03阅读:321来源:国知局
用于扫码购物的数据交互方法及系统与流程

1.本发明涉及数据交互技术领域,具体的指一种用于扫码购物的数据交互方法及系统。


背景技术:

2.近年来,随着物联网的迅速发展和微信等新型移动社交软件的普及,自助零售业务这种新型购物模式逐渐兴起。扫码购物是自助零售的核心功能之一,也是“智慧零售”的重点技术支撑。其基本流程是:用户在支持扫码购物的商户如购物中心、超市等使用手机、平板电脑等移动设备扫描想要购买的商品条形码,即可查看商品信息、了解产品推荐、自助生成订单并结账。同时商户也可以不定期将优惠信息、促销活动、会员资讯等服务推送至用户的移动设备,这样不仅可以提升用户的购物体验、降低商户的人力成本,更能使商户与用户之间建立起有效的长联系机制,为用户提供更多的精准服务。正因为如此,已经有越来越多的商户开始使用扫码购物系统。其中,扫码购物系统的硬件部分主要由服务器、商户终端机、用户移动设备组成。其中服务器负责处理订单,商户终端机负责存储商品信息、用户信息和订单信息,移动设备负责为用户提供操作扫码购物系统的用户界面。
3.但是,现有的扫码购物系统在应用过程中,存在一定影响用户扫码购物体验的现象,其中包括,移动设备的硬件配置、4g或wi-fi信号强度和带宽、某一时间段内自助购物的用户数量等外部因素,系统本身的核心设计,如图1所示为现有系统中支付设备与系统服务器的通讯过程,其中系统服务器与数据库的交互操作设计较为简单,存在如下不足之处:(1)系统服务器与数据库之间直接进行交互,这种方法虽然比较容易实现,但无法将服务器与低速且频繁的数据库操作相分离,有可能导致服务器负载过重,影响扫码购物的效率。
4.(2)没有考虑服务器商品信息及时、高效更新的问题,可能会使服务器在计算订单金额时使用过期、错误的数据。
5.(3)没有考虑到服务器与商户终端机部署在不同网络中的情况,在某些场合下其实用性可能受到限制。
6.鉴于现有扫码系统核心设计存在的不足,需要提出一种新的技术方案用以提升用户的体验度,其中包括如下性能指标的提升:(1)响应的快捷性。用户选用扫码购物的直接原因就是节省结账的排队时间和精力,如果在扫码购物时订单响应时间过长,甚至高于排队时间,则会大大降低用户的购物愿望,进而导致用户放弃此次购物。因此扫码购物系统服务器对订单的响应必须具备实时性和快捷性,严格控制在用户容忍的范围内。
7.(2)交易数据的准确性。商品价格起伏变化较快,同一种商品的价格在不同日期,甚至一天中的不同时段都可能随着促销、打折等活动而有所不同,这就需要扫码购物系统服务器能够及时更新商品价格,保证计算得到的订单商品总额与实际金额完全一致。同时,已完成的订单数据也必须及时、准确地记入数据库,为商户分析销售情况和用户行为提供
数据参考。
8.(3)交易过程的安全性。扫码购物涉及金融活动,具有较大风险。交易过程中传输的数据必须要保证安全,防止泄露。


技术实现要素:

9.有鉴于先前技术的问题,本发明者认为应有一种改进的技术方案,为此设计一种用于扫码购物的数据交互方法及系统,其具体的技术手段为:本发明提供一种用于扫码购物的数据交互方法,用于扫码购物系统及商户终端机之间的数据交互,其特征在于,作为上述扫码购物系统的服务器和商户终端机的数据库之间进行通讯的数据交互层,其与上述服务器的通讯采用发布/订阅模式的mqtt协议,与上述数据库的通讯直接采用sql方法访问。
10.其中,上述数据交互层与服务器和数据库的交互至少包含如下步骤:s1:上述数据交互层的主线程启动后,进行服务器连接,上述数据交互层尝试与所述服务器建立mqtt连接;s2:如果步骤s1中建立mqtt连接成功,对上述商户终端机进行身份验证;s3:如果步骤s2中上述商户终端机的身份验证通过,上述数据交互层进行初始化,该初始化包含,向上述服务器发送上述商户终端机的mqtt订阅主题、计时器置0、创建数据定时上传子线程、创建数据回写子线程、设定参数值以及进行mqtt连接监测;s4: 当步骤s3中上述计时器开始计时并到达上传时间点时,上述数据定时上传子线程恢复运行,进行数据定时上传,从上述数据库中读取相关数据并上传至上述服务器;s5:当步骤s3中符合所述商户终端机mqtt订阅主题的数据通过所述服务器转发后到达上述数据交互层时,所述数据交互层将解析该数据头部信息中的类别信息。如果确认该数据为订单数据,则上述数据回写子线程启动,进行上述数据回写,将订单数据写入上述数据库。
11.进一步的上述服务器连接中还进行了访问代理,具体流程为:s1-1:在网络连接正常的情况下检测上述商户终端机和服务器的连通状态,若连通正常直接尝试建立mqtt连接;s1-2:若步骤s2-1中测试连通失败则进行上述访问代理,即根据预先设置的代理服务器ip地址和端口号,再次尝试与上述服务器建立mqtt连接;s1-3:若通过步骤s2-1或步骤s2-2上述数据交互层与上述服务器成功建立mqtt连接,上述服务器连接正常结束,若连接失败则发出警告。
12.进一步的上述身份验证用于在上述数据交互层与服务器建立mqtt连接后首先对上述商户终端机进行身份验证,验证通过后才能执行后续功能,上述身份验证的流程为:s2-1:向所述服务器发送所述商户终端机的验证信息,并等待上述服务器返回验证结果;s2-2:若步骤s2-1中通过验证,则继续向服务器上传商户终端机的mqtt订阅主题,若验证未通过,则发出报错提示信息,并终止已经建立的mqtt连接。
13.进一步的上述数据定时上传设有数据定时上传子线程,用于在预先设定的上传时间点到达时,自动从上述数据库中读取所述服务器在处理订单时所需的各项数据并将数据
上传至上述服务器,上述数据定时上传的流程为:s4-1:上述计时器启动计时,当尚未到达上传时间点时,上述数据定时上传子线程处于阻塞状态;当上传时间点到达时,上述数据定时上传子线程恢复运行,并尝试与上述数据库以sql方式连接;s4-2:当步骤s4-1中上述数据定时上传子线程与数据库连接成功时,从上述数据库中读取需上传的数据并转换为json格式,然后为上传数据添加头部信息,再根据预先设定的mqtt发布主题上传至所述服务器;s4-3:当上述数据交互层的主线程收到上述服务器返回的数据已正确接收的信息后,上述数据定时上传子线程进入阻塞态,上述计时器重新置0后开始新一轮计时;当上述数据交互层的主线程收到上述服务器发送的数据验证错误信息,或者在规定时间内未收到上述服务器返回的数据已正确接收的确认信息时,上述数据定时上传子线程重新尝试上传数据;s4-4:当上述数据定时上传子线程重复尝试上传数据的次数达到最大值时,上述数据定时上传子线程停止本次时间点的上传任务,等待下一次上传时间点到达,并发出警告信息。
14.进一步的上述数据回写设有数据回写子线程,用于将上述扫码购物系统已上传至上述服务器的已成功完成的订单数据自动获取并同步更新至上述商户终端机的数据库中,上述数据回写的流程为:s5-1:当有上述商户终端机订阅的数据发送到上述服务器时,上述服务器将其转发至上述数据交互层,上述数据交互层的主线程接收到数据后,解析数据头部信息中的类别信息,判断该数据是否为订单数据;s5-2:若步骤s5-1中发送数据是订单数据,则将该数据写入订单缓冲队列,同时唤醒上述数据回写子线程,其中上述订单缓冲队列设置为临界资源;s5-3: 上述数据回写子线程尝试与上述数据库以sql方式进行连接,当连接成功后将订单数据转换格式后写入上述数据库;s5-4:当上述订单缓冲队列为空时,上述数据回写子线程进入阻塞状态。
15.进一步的上述mqtt连接监测在上述数据交互层的主线程运行期间检测到与上述服务器的mqtt连接异常中断时进行重新建立连接;其中,上述mqtt连接监测按照设定时间间隔定时检测所述数据交互层与上述服务器的连接状态;当发现mqtt连接中断时,尝试重新建立上述服务器连接;并且若重连次数超过最大值则向发出警告信息。
16.再有,本发明提供了一种用于扫码购物的数据交互系统,用于完成扫码购物系统及商户终端机之间的数据交互,其特征在于,作为上述扫码购物系统的服务器和上述商户终端机的数据库之间进行通讯的数据交互系统,至少包含,服务器连接模块、身份验证模块、数据定时上传模块、数据回写模块以及mqtt连接监测模块;其中,上述数据交互系统与上述服务器通讯采用发布/订阅模式的mqtt协议;上述数据交互系统与上述数据库通讯直接采用sql方法访问。
17.进一步的上述数据交互系统的各模块之间的运行流程为:上述数据交互系统的主线程启动后,调用上述服务器连接模块,尝试与上述服务器建立mqtt连接;如果建立mqtt连接成功,调用上述身份验证模块,进行上述商户终端机的身份验证;如果上述商户终端机的
身份验证通过,上述数据交互系统进行数据初始化;上述数据初始化包含,向上述服务器发送商户终端机的mqtt订阅主题、计时器置0、创建数据定时上传子线程、创建数据回写子线程、设定参数值以及调用mqtt连接监测模块;当上述计时器开始计时并到达上传时间点时,上述数据定时上传子线程恢复运行,调用上述数据定时上传模块,从上述数据库中读取相关数据并上传至上述服务器;当通过上述服务器转发的上述商户终端机订阅的订单数据的项目值到达上述数据交互系统时,上述数据回写子线程启动,调用上述数据回写模块,将订单数据写入上述数据库。
18.进一步的上述服务器连接模块还包含访问代理子模块,具体运行流程为:在网络连接正常的情况下检测上述商户终端机和服务器的连通状态,若连通正常直接尝试建立mqtt连接;若测试连通失败则启动上述访问代理子模块,根据预先设置的代理服务器ip地址和端口号,再次尝试与上述服务器建立mqtt连接;若上述数据交互系统与服务器成功建立mqtt连接,上述服务器连接模块正常结束,若连接失败则发出警告。
19.进一步的上述身份验证模块用于在上述数据交互系统与上述服务器建立mqtt连接后首先对上述商户终端机进行身份验证,验证通过后才能执行后续功能,上述身份验证模块的流程为:上述身份验证模块向上述服务器发送上述商户终端机的验证信息,并等待上述服务器返回验证结果;若通过验证,则继续向服务器上传商户终端机的mqtt订阅主题,若验证未通过,则发出报错提示信息,并终止已经建立的mqtt连接。
20.进一步的上述数据定时上传模块设有数据定时上传子线程,用于在预先设定的上传时间点到达时,自动从上述数据库中读取上述服务器在处理订单时所需的各项数据,并将数据上传至服务器,上述数据定时上传模块的流程为:上述计时器启动计时,当尚未到达上传时间点时,上述数据定时上传子线程处于阻塞状态;当上传时间点到达时,上述数据定时上传子线程恢复运行,并尝试与上述数据库以sql方式连接;当上述数据定时上传子线程与上述数据库连接成功时,从上述数据库中读取需上传的数据并转换为json格式,然后为上传数据添加头部信息,再根据预先设定的mqtt发布主题上传至所述服务器;当上述数据交互系统的主线程收到上述服务器返回的数据已正确接收的信息后,上述数据定时上传子线程进入阻塞态,上述计时器重新置0后开始新一轮计时;当上述数据交互系统的主线程收到上述服务器发送的数据验证错误信息,或者在规定时间内未收到上述服务器返回的数据已正确接收的确认信息时,上述数据定时上传子线程重新尝试上传数据;当上述数据定时上传子线程重复尝试上传数据的次数达到最大值时,上述数据定时上传子线程停止本次时间点的上传任务,等待下一次上传时间点到达,并发出警告信息。
21.进一步的上述数据回写模块包含数据回写子线程,用于将上述扫码购物系统已上传至所述服务器的已成功完成的订单数据自动获取并同步更新至上述商户终端机的数据库中,上述数据回写模块的流程为:当有上述商户终端机订阅的数据发送到服务器时,上述服务器将其转发至上述数据交互系统;上述数据交互系统的主线程接收到数据后,解析数据头部信息中的类别信息,判断该数据是否为订单数据;若发送数据是订单数据,则将该数据写入订单缓冲队列,同时唤醒所述数据回写子线程;其中上述订单缓冲队列设置为临界资源;上述数据回写子线程尝试与上述数据库以sql方式进行连接,当连接成功后将订单数据转换格式后写入上述数据库;当上述订单缓冲队列为空时,上述数据回写子线程进入阻塞状态。
22.进一步的上述mqtt连接监测模块用于在上述数据交互系统的主线程运行期间检测到与所述服务器的mqtt连接异常中断时重新建立连接;其中,上述mqtt连接监测模块按照设定时间间隔定时检测上述数据交互系统与上述服务器的连接状态;当发现mqtt连接中断时,尝试调用上述服务器连接模块重新建立连接;并且若重连次数超过最大值则向发出警告信息。
23.进一步的上述身份验证模块的验证信息包含,商户终端机id、验证口令。
24.进一步的上述数据交互系统与上述数据库可以部署在同一台上述商户终端机上,或者上述数据交互系统单独部署。
25.本发明一种用于扫码购物的数据交互方法及系统的具有如下有益效果。
26.(1)提升响应快捷性。扫码购物系统服务器的主要工作包括处理用户提交的订单数据和读写数据库两部分。由于读写数据库操作十分频繁且速度较慢,如果让服务器过多干预读写数据库必然会导致服务器性能下降,造成响应和处理订单不及时等情况。因此本发明通过在扫码购物系统中设置数据交互层,将服务器与读写数据库操作相分离,由数据交互层负责根据服务器发出的指令读写商户终端机的数据库,而服务器可以专注于订单数据的处理,从而实现提升扫码购物系统响应速度。
27.(2)提升交易数据准确性。扫码购物系统服务器中存储的商品信息需要及时更新,否则会出现计算金额错误的问题。针对这一点,本发明中设计了数据定时上传功能,可以在商户规定的时间点及时、自动更新服务器存储的商品信息,使服务器每次处理订单时都能使用最新数据,从而提升了交易金额的准确性。
28.(3)提升交易过程安全性。当商户终端机登录服务器时,本发明数据交互层中的身份验证功能会要求服务器对商户终端机身份进行校验,只有商户终端机与服务器上存储的身份信息一致时,才能执行后续操作,这样可以有效避免身份冒用和数据劫持,提高了交易过程的安全性。
29.(4)解决不同地域异网问题。通过在mqttclient类中扩展对socks 5协议的支持,使本发明的数据交互层具备了访问代理功能。可以在检测到商户终端机与服务器处于不同网络或因防火墙设置等原因出现不能连接的情况时,仍能够通过预先设置的代理服务器实现二者的相互访问,提高了扫码购物系统的对于处于不同地域及网络的适用性。
30.(5)节省网络资源。考虑到扫码购物环境的带宽通常有限,因此本发明采用了基于发布/订阅模式的mqtt协议,只需占用较少的资源和带宽就可以在扫码购物系统服务器和商户终端机的数据库之间提供实时可靠的消息传送服务。
31.(6)运行效率高,部署简单。本发明采用了中间件技术的设计思想和高性能编程方法,编程实现后代码量小,运行效率高,安装和卸载简单,易于推广和应用。
附图说明
32.图1为现有技术的扫码购物系统中支付设备与系统服务器的通讯方式示意图。
33.图2为本发明中数据交互层在扫码购物系统的服务器和商户终端机的数据库之间进行通讯的交互方式示意图。
34.图3为本发明中数据交互层的总体运行流程图。
35.图4为本发明中数据交互层的服务器连接方法运行流程图。
36.图5为本发明中数据交互层的身份验证方法运行流程图。
37.图6为本发明数据交互层的数据定时上传方法运行流程图。
38.图7为本发明数据交互层的数据回写方法运行流程图。
39.图8为本发明数据交互层的mqtt连接监控方法运行流程图。
40.图9本发明数据交互系统的交互界面设计图。
具体实施方式
41.请参阅图2所示,其为本发明中数据交互层在扫码购物系统的服务器和商户终端机的数据库之间进行通讯的交互方式示意图。本发明在原有扫码购物系统的服务器与商户终端机的数据库中间增加了数据交互层,作为扫码购物系统服务器和商户终端机数据库的通讯中间层,至少可包含服务器连接、身份验证、数据定时上传、数据回写、mqtt连接监测功能模块。其中,数据交互层与服务器通讯采用发布/订阅模式的mqtt协议,这要求服务器与商户终端机都需支持mqtt协议,而其与数据库通讯则直接采用sql方法连接。数据交互层的优点在于与系统其他部分耦合度低,易于部署及功能扩展。在增设数据交互层之后,就由该层接管了服务器与商户终端机数据库之间的商品数据交互操作,实现了服务器与低速且频繁的数据库操作相分离,有效降低服务器负载,使服务器能够集中于订单响应和处理。同时,服务器在计算订单金额时用到的数据应能够做到及时、自动更新,代替以往人工、半人工的更新方式,以避免出现不一致的错误。
42.如图3所示,其为本发明中数据交互层的总体运行流程图。数据交互层程序主线程启动后,进行服务器连接,首先根据服务器和商户终端机的连接情况确定是否需要启用访问代理方法,之后尝试与服务器建立mqtt连接。若成功则在服务器端进行商户终端机身份验证,通过验证后进一步完成初始化工作,包含向服务器发送商户终端机的mqtt订阅主题、计时器置0、创建数据定时上传子线程和数据回写子线程以及其他一些参数值的设定。完成初始化之后计时器开始计时,当到达上传时间点时,由数据定时上传子线程从商户终端机的数据库中读取相关数据并上传至服务器。当服务器转发的商户终端机mqtt订阅主题的数据到达数据交互层时,所述数据交互层将解析该数据头部信息中的类别信息。如果确认该数据为订单数据,则数据回写子线程启动并将这些订单数据写入商户终端机数据库。如果在运行期间主线程检测到与服务器的mqtt连接发生中断,则自动尝试重新建立mqtt连接。若重连次数超过最大值,则发出警告,使得数据交互层在扫码购物系统工作期间将始终保持运行状态。
43.如图4所示,其为本发明中数据交互层的服务器连接方法运行流程图。其中,服务器连接模块用于建立数据交互层与服务器的mqtt连接,其包含了访问代理模块,作用是当服务器与商户终端机处在不同的网络或防火墙而无法直接建立mqtt连接时,仍能够通过预先设置的代理服务器完成连接,例如可选用socks5协议支持访问代理。具体方式为:首先在网络连接正常的情况下检验商户终端机和服务器的连通状态,若正常则可以直接尝试建立mqtt连接,若失败则启动访问代理,根据预先设置的代理服务器ip地址和端口号再次尝试与服务器建立mqtt连接。若连接成功则模块正常结束,若连接失败则发出警告。上述服务器连接模块可以使用mqttnet类库(版本号为2.4.5)的mqttclient类提供的方法建立mqtt连接。
44.如图5所示,其为本发明中数据交互层的身份验证方法运行流程图。其中,身份验证模块要求数据交互层与服务器建立mqtt连接后首先进行对商户终端机进行身份验证,验证通过后才能执行后续功能,这样可以在发布/订阅模式中先行确定订阅者的身份,防止服务器转发的订单数据被劫持,确保支付过程的安全。具体方式为:当数据交互层与服务器建立mqtt连接后,身份验证模块向服务器发送商户终端机的商户终端机id、验证口令,然后等待服务器返回验证结果。若通过验证,则继续向服务器上传商户终端机的mqtt订阅主题,若验证未通过,则发出错误警告信息,并终止先前建立的mqtt连接,结束身份验证模块的运行。
45.如图6所示,其为本发明数据交互层的数据定时上传方法运行流程图。其中,数据定时上传模块在预先设定的上传时间点到达时,自动从商户终端机的数据库中读取服务器处理订单时所需的各项数据,例如:商品价格、折扣、用户等级数据并上传至服务器,替代以往的人工、半人工更新方式,实现及时并自动更新服务器数据,从而确保服务器处理订单和生成交易金额的准确性。具体方式为:数据定时上传模块的计时器负责计时,在尚未到达上传时间点时,数据定时上传子线程处于阻塞态,当上传时间点到达时,数据定时上传子线程恢复运行,尝试与数据库以sql方式连接。当数据定时上传子线程与数据库连接成功时从数据库中读取需上传的数据并转换为json格式,然后为上传数据添加头部信息,再根据预先设定的mqtt发布主题上传至所述服务器。如果之后数据交互层主线程收到服务器回复的数据已正确接收的信息,则使得数据定时上传子线程进入阻塞状态,计时器重新置0并开始新一轮计时。相反,如果数据交互层的主线程收到服务器发送的数据验证错误信息,或在规定时间内未收到服务器的确认信息,则数据定时上传子线程重新尝试上传数据。当重新尝试上传次数达到最大值时,将放弃本时间点的上传任务,等待下一次上传时间点到达,并发出警告信息。此时,管理员可根据警告信息检查系统状态,决定是否改由人工方式更新或者直接等待下一次上传时间点再自动更新数据。
46.如图7所示,其为本发明数据交互层的数据回写方法运行流程图。其中,数据回写模块向商户终端机的数据库写入已成功完成的订单数据。由于采用了发布/订阅模式的mqtt协议,因此当用户在移动支付设备端将订单信息上传至服务器时,数据交互层可自动同步获取该订单数据并写入商户终端机的数据库,在这一过程中服务器只需转发相应的订单数据,无须直接干预数据库操作,因此大幅降低了服务器的负载,提高了系统的响应速度。具体方式为:当有商户终端机订阅的数据(json格式)到达服务器时,服务器将其转发至数据交互层。当数据交互层的主线程接收到数据后,解析数据头部信息中的类别信息,判断该数据是否为订单数据。若为订单数据则将数据回写入订单缓冲队列,同时唤醒数据回写模块的数据回写子线程,之后数据回写子线程尝试与数据库以sql方式连接,连接成功后将订单数据转换格式后写入数据库。并且由于同一时刻可能有多个订单数据到达,为防止出现读写错误,必须将订单缓冲队列设置为临界资源加以保护,确保主线程与数据回写子线程的同步。之后当订单缓冲队列为空时,数据回写子线程进入阻塞状态。
47.如图8所示,其为本发明数据交互层的mqtt连接监控方法运行流程图。其中,mqtt连接监测模块用于当数据交互层的主线程在运行期间检测到与服务器的mqtt连接异常中断时重新建立连接。该mqtt连接监测模块可以利用mqttclient类的clientconnected、clientdisconnected等事件,每300秒(该间隔值可由管理员自行设定)检测一次数据交互
层与服务器的连接状态。当发现mqtt连接中断时,将立即尝试调用服务器连接模块重新建立连接,若重连次数超过最大值则发出警告。
48.如图9所示,其为本发明数据交互系统的交互界面设计图。其中展示了上述数据交互系统启动运行的登录界面,包含上述服务器的ip信息,上述商户终端机的数据库的类型、ip、名称以及登录名等登录信息。填入正确登录信息后即可正常启动上述数据交互系统。
49.本发明为在扫码购物系统中应实现服务器与低速且频繁的数据库操作相分离,创新的提出一种可作为扫码购物系统服务器和商户终端机数据库的数据交互层。其有效降低了服务器负载,使服务器能够集中于订单响应和处理,加快了交易速度。同时,服务器在计算订单金额时用到的数据可以做到及时、自动更新,确保了交易准确性。而且在数据访问中增加了身份验证机制,提升了数据交易安全性。使得大大降低了扫码交易系统中对商户终端的硬件需求,从而大幅降低商户部署成本,减轻了管理人员的工作量,提升了购物体验,创造了更大的经济价值。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1