面向Android的电子商务移动客户端的设计与开发
刁云霞+张辉+康雪薇+卢洁
摘要:面向移动终端的电子商务客户端开发成为当前研究的热点。课题针对Android智能平台,结合富客户端设计理念及RSA非对称签名算法,用JSON数据格式实现客户端和服务器端的信息交互。为解决移动客户端与服务端之间的无缝整合,提供一个方便、安全和较好用户体验的设计方案。
关键词:电子商务;客户端;Android;JSON数据
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)12-0287-02
Abstract: The development of Electronic commerce client for mobile terminal has become a hot research topic. According to the Android intelligent platform, combining with the rich client design concept and the RSA asymmetric signature algorithm, the information interaction between client and server is realized by using JSON data format. To solve the seamless integration between mobile client and server, providing a convenient, safe and good user experience design.
Key words:electronic commerce; Client; Android; JSON data
随着电子商务的爆炸式发展,网上购物成为一种趋势,手机客户端交易额占67%左右。课题结合富客户端技术,使用户能够通过手机客户端实现浏览商品、购买商品、收藏商品、浏览最新的商品信息以及在线购买、查询物流状态等功能。
1 关键技术
1.1 JSON数据格式解析
JSON(JavaScript Object Notation) 是目前最流行的轻量级数据交换格式之一。在解析过程中首先以字符串格式转换JavaScript对象中的一组数据,然后这个字符串可以在函数之间传递,或者在异步交互式程序中将字符串从Web客户机传递给服务器端程序[1]。
1.2 RSA算法
RSA是一种非对称的签名算法,用户签名使用私钥,公钥则用于验证签名。使用支付宝进行交易时,会产生两对公私钥,一对是商户公私钥,另一对是支付宝公私钥。
1)商户公私钥:商户使用私钥对发给支付宝的数据进行签名,公钥上传到支付宝,支付宝用收到的公钥对商户发过来的数据进行验证签名。
2)支付宝公私钥:公钥由支付宝提供给商户,商户收到后,用于验证签名。
该算法可以有效防止数据在传输过程中被篡改,确保支付订单和支付结果安全。
3)对商品信息进行RSA签名:
public static String signKey(String content, String prikey)
String content:设置签名字符串变量
String prikey:设置保存商户私钥字符串变量
返回值:签名值(传递之前使用URL编码处理)
4)使用RSA类进行验签:
public static boolean goCheckKey(String content, String signkey, String pubkey)
String content:设置等待验证签名的字符串变量
String signkey:设置签名值变量
String pubkey:设置支付宝公钥变量
返回值:验签成功则返回true,反之返回false。
RSA原理如图1所示:
1.3 支付服务
在本地Android操作系统上安装安全支付服务组件,该组件中,MobileSecurePayer类封装了对安全支付的调用;MobileSecurePayHelper 类实现安全支付插件的检测、更新、下载和安装;PartnerConfig类实现了商户账户信息配置;ResultChecker 类通过AlixPay返回结果的解析处理。
2 系统设计与开发
2.1 客户端与服务器交互模块
Web服务器端与Android客户 端的数 据交互流程:首先由Http协议 将客户端的数据请求发送到Web服务器,然后服务器端将数据请求封装成JSON格式,再通过Http协议将解析结果返回至Android客户端,客户端将接收到的数据进行解析后以适当的格式显示在界面上。
2.2 数据库设计
手机淘宝系统主要有12张数据表:购物车表、类目表、商品表、用户表、商品评价表、广告状态表、广告列表、推荐商品表、订单主表、订单详情表、订单状态表、商品浏览表。在客户端对SQLite的操作,Android提供SQLiteDataBase和SQLiteOpenHelper两个类。
3 主要功能模块实现
3.1 服务端功能模块
服务端与数据库的连接,利用jar包加载JDBC驱动,加载数据库,然后通过IP地址、数据库名、帐号、密码连接数据库。
以手机支付模块为例:支付宝通知服务器在支付完成时以POST的方式请求商户服务器,POST参数为notify_data、sign。notify_data为通知的具体业务参数,sign为支付宝对通知内容的签名数据。
1)商户地址:支付宝以POST方式调用商户提供的URL地址;
2)通知触发条件:设置交易的状态,如从“创建”到“成功”或“关闭”;
3)商户返回信息:商户服务器接收到“success”通知,该通知不能包含其他文本;
4)通知重发:如果支付宝没有收到商户返回的“success”通知,将进行周期性重发;
5)交易判断条件:收到trade_status=TRADE_FINISHED的请求后才可判定交易成功(其它trade_status 状态请求可以不作处理)。
ShoppingCartAdapter.java:在修改状态,调用notifyDataSetChanged方法,重新获取列表。
在ShoppingCartAdapter.java内创建了一个isModify对象,判断所处状态。点击结算按钮,系统调用安全支付接口,完成支付。
4 结束语
电子商务系统是一个比较庞大的系统,课题针对Android网络购物系统客户端进行设计与开发,满足移动客户端实时性、交互性需求,并具有较好用户体验,为开发同类应用提供参考。
参考文献:
[1] 李伟梦. Android编程入门经典[M]. 北京: 清华大学出版社, 2012.
[2] 王强, 郑世钰, 宋志明. 基于Android的交互式学习微阅览器设计与实现[J]. 现代教育技术, 2012(9): 89-92.
[3] 耿东久, 索岳, 陈渝, 等. 基于Android手机的远程访问和控制系统[J]. 计算机应用, 2011, 31(2).
[4] [C]// Qinghuangdao, China: International Conference on Computer Design and Appliations, 2010: 373-376.
[5] Sandeep Kumar.Location Based Services using Android[C]. Internet Multimedia Services Architecture and Applications(IMSAA), IEEE International Conference, 2009.