APP下载

图书馆微信借书系统的设计与实现

2015-10-26湖南图书馆湖南长沙410011

图书馆建设 2015年2期
关键词:借书菜单公众

姚 舜(湖南图书馆 湖南 长沙 410011)

图书馆微信借书系统的设计与实现

姚舜(湖南图书馆湖南长沙410011)

微信借书系统是一个基于图书馆微信公众平台的应用,读者不用携带读者证,利用该系统就可从图书馆借书。但是,该系统在实现过程中遇到读者证弱口令、借书流程设计以及微信借书系统与图书管理系统的数据调用方面的问题。因此,该系统可采用“三次握手”、随机验证码、限制有效时间等手段保证读者证号的安全,并可采用模拟Post请求的方式实现整个系统功能。

图书馆微信公众平台微信借书

1 前  言

自腾讯公司2011年1月推出微信后,没有人能够预料到它3年后的发展。如今,微信月活跃用户数已超过4亿[1]。面对如此庞大的用户群,各行各业纷纷加入到微信大军中,开设自己的微信公众平台进行业务拓展和客户服务。当然,图书馆也不例外,许多图书馆都开通了微信公众服务平台,为读者提供查询信息和互动咨询服务[2]。微信已经成为图书馆服务方式从人工和PC(Personal Computer,个人计算机)端向移动互联网的一种延伸。

微信借书又可被称为“微借书”,是指读者不用携带读者证,利用移动终端上安装的微信客户端从图书馆借书。银行业在去年就推出了类似服务——微信取款,客户即使没有带银行卡,也可以从银行取出现金。银行推出的这项特色服务不仅给客户提供了便利,还降低了客户遗失银行卡的风险,极大地提升了客户体验。同样,微信借书服务如果在图书馆开通必将会给读者一个全新体验。然而,在国内图书馆中还没有一家实现和开通这项服务。笔者经过深入研究,发现微信借书服务在实现上存在诸多问题。

(1)读者证弱口令的问题。微信借书系统首先需要对读者身份进行认证。然而,图书馆的大多数读者证号都存在默认密码或弱口令的问题,如果系统中简单地使用读者证号和密码进行身份确认,很容易出现读者证被盗用的情况,这将给被盗用的读者带来损失。因此,微信借书系统必须采用另一种更安全的读者认证方式来解决读者证弱口令的问题。

(2)微信借书流程的设计问题。微信借书系统的流程设计非常重要,应该符合读者和工作人员的操作习惯,既要尽量简化读者操作要求,给读者最佳的用户体验,又要降低工作人员的操作复杂度,避免由于开通微信借书服务而延长持证借书读者的借书时间。目前,国内没有关于这方面的研究文献,只有银行业的微信取款业务流程可供借鉴。

(3)微信借书系统与图书管理系统的数据调用问题。微信借书系统作为第三方平台系统,需要调用图书管理系统中的数据,其通常可以通过两种接口实现:一种是通用接口,这种接口参数简单并返回JSON(Javascript Object Notation,数据交换格式)或XML(Extensible Markup Language,可扩展标记语言)格式数据,程序上容易实现,但图书管理系统只提供数据查询接口,没有提供借书接口,无法满足微信借书系统的全部功能需求;另一种是ACS(Automated Circulation System,自动化流通系统)接口,该接口通过socket(又称套接字,应用程序通常通过“套接字”向网络发出请求或者应答网络请求)实现客户端与服务器端数据的交互,其优点是接口种类丰富,能实现微信借书系统的所有功能,缺点是开发者需要了解和运用多种接口,会使得程序复杂。因此,寻找一种比较合适的数据调用方式成为微信借书系统实现的难点。

2 微信借书系统设计

2.1流程设计

银行业的微信取款业务没有统一的流程。首先,多数银行需要客户关注该银行的微信公众平台,将银行卡与手机绑定,并开通手机支付功能;然后,选择“预约取款”功能,获取取款预约码;最后,通过手机号码、取款预约码和交易密码到自动取款机上完成取款。图书馆的借书业务与银行的取款业务有些类似,但其安全性要求较低,因此,流程上可以进行借鉴并简化银行的微信取款业务。笔者提出的微信借书系统具体流程(见图1)为:首先,读者关注图书馆微信公众平台,然后进行读者登录。如果读者第一次登录还需进行读者证与微信openID(即微信客户端账号加密后的字符串,读者在公众平台可以直接获取)的绑定。绑定过程采用“三次握手”的方式:读者先提交读者证和身份证明给工作人员,工作人员进行核实并生成验证码,读者再将读者证号、密码和收到的验证码进行登录,完成绑定过程。读者登录成功后即可进行微信借书和查询业务。读者进行微信借书服务需首先通过微信客户端申请获得借书号,再将所需要借的图书和借书号交给工作人员,工作人员在后台管理模块中输入借书号和图书条码号完成本次微信借书操作。其中,设置借书号的作用主要是代替读者证号,减少工作人员输入的位数。

图1 微信借书系统流程图

2.2功能设计

微信借书系统由读者使用的前台服务模块和工作人员使用的后台管理模块两部分组成。前台服务模块作为微信公众平台开发模式的接口服务器端,其功能包括读者身份认证、指令接收和消息发送。后台管理模块基于B/S(Browser/ Server,浏览器/服务器)模式开发,其功能包括读者认证审核、微信服务开通与取消、微信借书等业务的处理。

2.2.1前台服务模块设计

读者与微信公众平台的交互方式有发送消息和菜单click事件[3]。发送消息的方式需要读者输入指令才能启动相应功能,其优点是功能数量不受限制,缺点是系统功能不能一目了然,用户体验不好。菜单方式比较友好,读者直接点击微信界面下方的菜单即可使用相应功能,缺点是功能数量有限。前台服务模块采用界面丰富的菜单式进行交互,让读者更直观、快捷地使用微信公众平台的功能。由于自定义菜单最多包含3个一级菜单,每个一级菜单最多包含5个二级菜单[3],因此在功能设计上必须简单、实用。笔者将微信借书系统的前两个一级菜单作为日常信息查询和互动咨询服务,用于整合原有公众平台的功能,最后一个一级菜单作为微信借书系统,其中,包含“我的读者证”、“读者登录”、“申请微信借书”、“借阅查询”和“图书续借”5项功能[4]。

(1)我的读者证:用于显示读者绑定状态和登陆有效期,如果登陆状态在有效期内,还会显示读者证号、姓名、证类型、有效期、状态和欠款等基本信息。

(2)读者登录:用于使用读者证号、密码和微信openID进行身份认证,默认有效期为当天,也可以自定义设置为7天或30天,有效期内无需再次登录。

(3)申请微信借书:用于申请借书号,申请成功后系统将提供4位随机数字,有效时间为30分钟。

(4)借阅查询:用于查询当前读者微信账户绑定的读者证上所借的图书。

(5)图书续借:用于续借当前读者微信账户绑定的读者证上所借的图书。

2.2.2后台管理模块设计

后台管理模块包括“微信读者绑定”、“微信借书”和“日志查询”功能。为了方便工作人员操作,图书管理系统的办证和借书窗口中增加了后台管理模块的链接,工作人员点击链接按钮后就可快速打开相应功能的页面。

(1) 微信读者绑定:实现查询和验证读者证有效期、生成随机验证码和取消绑定的功能。验证码有效时间为5分钟,读者必须在有效期内完成第一次登录,超时需重新申请验证码。

(2)微信借书:实现通过借书号和图书条码号办理借书业务,能自动判断读者证的状态和图书条码号的有效性,并支持以条码扫描枪方式录入图书条码号。借书号被使用后立即失效。

(3)日志查询:实现通过时间、读者证号、操作员、操作类型等条件进行日志查询。

2.3数据库设计

微信借书系统的数据库WXDB是基于MySQL数据库管理平台建立的,包含reader(读者表)和log(日志表)。reader用于保存与读者相关的信息,设计的字段有id(序号)、readerid(读者证号)、rdname(姓名)、weixinid(微信openID)、sfid(身份证号)、bcode(验证码)、benddate(验证码失效时间)、sign(绑定标识)、startdate(登录开始时间)、enddate(登录失效时间)、yznum(借书号)、yzstartdate(申请时间)、yzenddate(借书号失效时间);log用于记录读者和工作人员的操作日志,设计的字段有id(序号)、type(类型)、readerid(读者证号)、operator(工作人员)、content(内容)、ip(IP地址)、createdate(创建时间)。

3 系统功能的实现

3.1菜单界面的实现

首先,菜单界面的实现需开启微信公众平台的开发模式并通过公众平台的认证;然后在后台开发模式下找到公众平台的AppId和AppSecret两个ID[5],并把这两个ID作为接口https://api.weixin.qq.com/cgi-bin/token? grant_type=client_credential&appid=APPID&secret=APPSECRET中的参数获取一个ACCESS_TOKEN值;最后,进入微信公众平台网页调试工具输入ACCESS_TOKEN值和JSON格式的菜单数据包并进行提交,提交成功后就实现了微信公众平台的菜单界面。

3.2消息接口的实现

微信借书系统前台服务功能的实现需要菜单界面和消息接口,其中,消息接口负责完成用户操作事件的处理。其处理的事件有两类:一类是点击类事件,主要用于“我的读者证”、“申请微信借书”、“借阅查询”和“图书续借”4个功能。消息接口查询数据库中的数据,将结果以图文消息的格式展现给微信客户端。另一类是链接事件,用于读者登录功能。当读者点击“读者登录”菜单后,消息接口打开WAP(Wireless Application Protocol,无线应用协议)登录页面引导读者登录。这种方式登录界面比较友好,比文本方式登录更安全,不会在微信客户端留下证号和密码,但获取openID比较繁琐,需要启用公众平台管理后台的OAuth2.0[3](一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站的私密资源)网页授权功能,让读者授权WAP登录页面。获得授权的登录页面取得openID后才能实现读者登录。

3.3借书功能的实现

微信借书系统子功能的实现关键在于对两个数据库的查询和操作。WXDB数据库由于有详细的数据字典,因而可以直接进行读写。图书管理系统数据库的数据字典属于商业秘密,公司提供JSON接口和ACS接口以获取数据,并且部分接口需要读者证号和密码作为参数。但是,由于微信借书系统为了读者数据的安全与同步,在WXDB数据库中没有保存读者密码,因此,如果通过接口调用数据会使系统实现困难。笔者对湖南图书馆的图书管理系统Interlib进行研究发现,Interlib完成借书操作需要客户端向服务器发送三次Post(客户端与服务器的一种交互方式)请求,第一次是操作员的身份认证,第二次是通过读者证号查询读者基本信息和借阅信息,第三次是录入图书条码号进行借书。在这三次Post请求过程中是不需要读者密码的,因此,如果先将借书号转换成读者证号,再模拟三次Post请求,即可实现微信借书的功能。微信借书系统采用CURL[6](一个利用URL语法规定来传输文件和数据的类库)方法实现模拟Post请求,实现微信借书功能的核心代码非常短(约60行),其算法如下:

4 结 语

随着微信影响力的扩大,微信公众平台已经是图书馆宣传和服务的较好工具,其能够扩大图书馆在互联网时代的影响力。微信借书作为微信公众平台的一项服务,是改变图书馆传统借书方式的一次尝试。微信借书系统采用“三次握手”、随机验证码、限制有效时间等手段保证了读者证号的安全。虽然该系统上线会少量地增加办证人员的工作量,但是会给读者带来更多的方便。未来,笔者将研究更多基于微信公众平台的应用服务,如微信办证、微信押金和欠款支付等。

[1]凤凰网. 微信月活跃用户数已达4.38亿[EB/OL]. [2014-08-14]. http://finance.ifeng.com/a/20140814/12925040_0.shtml.

[2]尹爱兰. 微信公众平台在高校图书馆使用的调查分析:基于高校图书馆的实证分析[J] .农业图书情报学刊, 2014(4):60-63.

[3]微信公众平台_开发者文档[EB/OL]. [2014-08-09]. http://mp. weixin.qq.com/wiki/index.php?title=首页.

[4]孔云. 图书馆微信服务平台的设计与实现[J]. 图书馆论坛, 2014 (2):90-95.

[5]张蓓.开发模式下图书馆微信公众平台服务的设计与实现[J].现代图书情报技术, 2014(1):87-91.

[6]Php Curl[EB/OL].[2014-08-09].http://baike.baidu.com/view/ 10902513.htm?fr=aladdin.

Design and Realization of the Library Book-Borrowing System via Wechat

The book-borrowing system via Wechat is an application based on Wechat public platform of the library. Without the reader's card, the reader could take advantage of this system to borrow books in the library. However, this system faces some problems during the realization process, such as the weak password of the reader's card, the process design of borrowing the book, and calling data between the book-borrowing system via Wechat and the book management system. Therefore,this system could use ''three-way handshake'', the random verification code and limiting the effective time to guarantee the number safety of the reader's card, and also realize functions of the whole system by simulating Post requests.

Library; Wechat public platform; Book-borrowing via Wechat

G250.71

B

姚舜男,1982年生,本科,湖南图书馆现代技术部副主任,馆员,研究方向为数字图书馆建设。

2014-10-09 ]

猜你喜欢

借书菜单公众
图图借书
公众号3月热榜
公众号9月热榜
公众号8月热榜
借书去
公众号5月热榜
中国新年菜单
借书
本月菜单
上海:从书店里借书看