基于Android的移动应用内支付平台设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Android的移动应用内支付平台设计与实现
作者:刘奕君王国珍
来源:《软件导刊》2015年第08期
摘要:设计了一种基于Android的应用内支付平台。支付平台对第三方支付渠道进行二次封装,设计包括面向移动应用开发者的接入SDK和平台管理服务端系统。该支付平台能够让移动应用开发者更快捷地实现应用内支付功能,且平台经过多款手机游戏应用检验。实验表明该设计流程简洁,平台运行稳定。
关键词:移动支付;应用内支付;IAP;SDK
DOIDOI:10.11907/rjdk.151395
中图分类号:TP302
文献标识码:A 文章编号文章编号:16727800(2015)008014004
0 引言
移动支付作为一种新兴的支付方式,其移动便捷性是PC端支付不可替代的,特别是在一些典型应用场景中,如手机购物、手机游戏帐号充值等。移动支付根据实现技术不同可分为远程支付和近场支付。近场支付是手机通过射频、红外、蓝牙等通道与POS机、自动售货机等终端设备实现本地通讯。远程支付依托于移动互联网,通过手机等终端实现,目前主要产品包括使用独立客户端和应用程序内支付。独立客户端支付的代表是支付宝、财付通等客户端,其面向支付平台自有的忠实客户,需厂商开发独立客户端工具。应用内支付通过中间件的形式内嵌到应用内,用户在支付过程中,不用脱离当前页面或应用程序,就可以输入银行卡号或使用与帐号绑定的信用卡等形式完成支付。基于应用内支付特点,其应用场景主要集中在手机游戏购买道具、点卡,电子书购买等。从苹果应用商店和谷歌应用商店相继向开发者和用户推出应用内支付情况看,应用内支付将是未来移动支付的发展趋势。
1 应用内支付
移动应用内支付经历了3个发展阶段。
1.1 短信支付
短信支付[1]是最早出现的支付方式,移动应用通过发送包含特定的短信到指定端口(号码),由运营商代扣费,此种方式是运营商代扣手机号码中剩余话费来充当应用的费用。由于
这种捆绑手机号缴费的支付方式容易被一些恶意软件进行“暗扣”吸费,再加上屡屡发生的短信诈骗案件,使得短信实现应用内支付安全性较低,目前只有极少数应用软件在使用。
1.2 网银支付
目前多数银行都向用户提供了快捷金融服务,各大银行相继自行研发了网上银行和手机银行产品。采用网银支付在用户体验上相对较差,用户在使用网银支付时需输入 19位银行卡号和密码,并且手机网上银行的ActiveX控件在移动设备上支持不够好,容易导致支付出现问题。
1.3 使用第三方支付渠道
第三方支付在PC端应用已经非常广泛,最常见的是第三方支付即支付宝和财付通支付平台。目前支付宝已经向开发者提供手机无线支付SDK以实现IAP方式支付。国外第三方支付Paypal公司提供了MECL(移动快速结账类库)供开发者实现应用内支付功能。目前第三方支付渠道发展迅速,已基本实现了全平台覆盖,可以向用户提供快捷、安全的支付体验。
以上3种方式中,使用较多的是第三方支付渠道方式。但是在应用单独集成第三方渠道时,应用开发者在编写代码集成前,需先研读第三方支付渠道的接入接口文档,熟悉接入流程和复杂的数据交互协议。这一过程无疑增加了开发者工作量和接入难度,延长了应用开发周期。本文所设计的应用内支付平台,通过对第三方支付渠道的二次封装,简化了应用接入API,与第三方支付的核心数据通信全部由平台管理服务端完成,以达到简化开发者接入流程、降低开发难度、缩短开发周期的目的,让开发者能够将主要精力放在应用本身逻辑功能上。
2 平台架构设计
应用内支付平台架构[2]主要分为两部分:平台管理服务端和手机集成SDK(Software Development Kit)开发工具包。平台管理服务端的功能包括向开发者提供应用App的注册和管理、查看用户支付明细和向第三方支付平台发送支付请求并获取支付结果。应用内支付平台架构如图1所示。
图1 应用内支付平台架构
图1不仅描述了应用内支付平台架构,还描述了支付的整个流程[34]:①使用应用时确认发起购买支付,应用内集成的支付SDK向平台服务端发送支付通知;②平台服务端收到支付通知后,按照第三方支付渠道接入要求发起支付请求;③当用户在应用内完成支付后,SDK 开发包获取平台服务端返回的支付结果,SDK再将支付结果返回给应用程序,同时平台管理服务端系统通过回调的方式将支付详情发送到开发者服务端系统。
平台服务端在手机应用程序和第三方支付渠道间搭建起一个桥梁,平台服务端负责将支付请求包装为符合第三方支付渠道的协议格式,支付完成后再将第三方渠道返回的响应结果解析回送给应用程序,应用程序依此响应结果为用户开通相应服务,平台服务端负责完成第三方支付渠道数据包的组装和解析工作。
SDK开发包面向移动应用开发者,供开发者调用接入支付平台以实现应用内支付功能。SDK开发包主要用于简化开发者集成支付时的步骤,向开发者提供更为简洁的接口API。开发者不需了解第三方支付渠道的通信协议和步骤,只需了解SDK的使用步骤就可以快速实现支付功能。Android平台应用的开发语言是Java语言,SDK开发包最终以.jar文件分发给开发者,开发者将其打包到移动应用中[56]。
3 平台设计
3.1 SDK开发包详细设计
SDK开发包架构如图2所示。
(1)基础类库。提供公用的数据加解密算法工具类、字符处理工具类等。
图2 应用内支付SDK架构
(2)配置文件。填写用户在支付时的收款方帐号,此配置文件需开发者在打包应用前修改,SDK在初始化时即读取此配置文件信息,用以支撑后续的第三方支付平台认证和支付。
(3) GUI。通常一个应用内支付不止包括一种第三方渠道,因此须提供一个界面供用户选择;同时在界面上添加问题反馈部分,让应用开发者能够及时获取用户体验结果。
(4)支付逻辑封装。核心内容:SDK中所封装的支付逻辑为不同第三方支付简化后的支付流程,不包括与第三方支付平台交互的数据内容,与第三方支付平台交互的数据由平台服务端发送。
(5)调用接口。由应用开发者调用,封装了支付的整个流程,从初始化认证到最终获取用户支付结果的全过程。应用接口在设计上主要包括了SDK初始化、发送支付请求、用户支付和获取支付结果4个步骤。
依据面向开发者设计的调用接口,SDK开发包的工作流程包括以下几个阶段:
(1)初始化阶段。此阶段完成的工作包括获取手机设备的相关信息(IMEI代码、MAC 地址等),用于在支付平台上标识支付手机端唯一性,检测与三方支付平台联通性,读取并解析本地配置文件。由于初始化阶段需要获取手机硬件相关信息和检测网络是否正常,因此比较耗时,应将此阶段放在后台线程中执行。