网站首页  词典首页

请输入您要查询的论文:

 

标题 基于Android的移动应用内支付平台设计与实现
范文 刘奕君 王国珍
摘要:设计了一种基于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地址等),用于在支付平台上标识支付手机端唯一性,检测与三方支付平台联通性,读取并解析本地配置文件。由于初始化阶段需要获取手机硬件相关信息和检测网络是否正常,因此比较耗时,应将此阶段放在后台线程中执行。
(2) 发送支付请求阶段。此阶段拆分为两个小的步骤:①发送支付请求前应完成与第三方支付平台的认证,获得认证成功信息后再进行后续支付操作;②按照第三方支付平台要求发送支付参数(商品名称、价格、数量等)。这一部分功能的实现全部由平台服务端完成,这一设计一方面可以简化开发者在使用SDK时的难度和复杂度,另一方面提高了支付过程的安全性。SDK开发包与平台服务端之间进行交互后,平台服务端收到SDK开发包发送的支付通知,平台服务端自动向第三方支付渠道发起支付请求。
(3) 用户支付阶段。此阶段是平台服务端向第三方支付渠道成功发送支付参数后,SDK根据第三方支付平台的要求打开支付界面。支付界面根据用户录入方式的不同而不同。例如Paypal支付平台要求用户必须在浏览器中显示paypal官方页面,用户在官方页面中输入登录名密码后,由绑定的信用卡号完成支付。
(4) 获取支付结果。在用户支付完成后,SDK将获取第三方支付平台返回的结果,SDK将结果返回给应用程序,应用程序根据支付结果为用户开通相应服务。
3.2 平台服务端详细设计
平台服务端封装了支付过程中关键的数据请求部分,负责与第三方支付渠道通信。同时平台服务端又包括了应用App注册和管理、支付明细查询功能。平台服务端的功能结构如图3所示。
图3 平台服务端功能结构
平台服务端主要分为4大模块,各模块功能如下:
(1)应用App注册及管理模块:应用App接入平台前需先进行注册,由平台分配密钥作为应用的唯一标识,此密钥存储在SDK配置文件中,在SDK初始化时自动读取密钥完成与平台的认证。应用管理进行App基础信息的维护更新、密钥的更新。
(2)支付明细查询模块:以报表形式向开发者提供按日、按月的用户支付明细,包括支付时间、金额、商品名称、应用名称,帮助开发者进行数据统计。
(3)第三方支付渠道通信模块:封装了与第三方支付渠道通信时所需的数据格式,完成与第三方支付渠道的交互。目前绝大多数第三方支付平台在执行支付前,需先完成客户端的认证工作,并向客户端分配会话令牌,此会话令牌是一次支付的标识,每次支付所获取的会话令牌是不同的,获取支付令牌后才能完成支付的后续操作。不同支付平台要求的数据格式不同,此模块封装了在支付时最复杂的通信数据格式和消息请求步骤,将一些非重要参数屏蔽,向开发者提供更简洁的接口。
(4)网络通信模块:封装了底层TCP通信和HTTP通信的过程代码,作为基础工具向上一层模块提供服务。
4 Paypal支付实例
Paypal是欧美国家使用最广泛的在线支付渠道之一[7]。Paypal官方为应用开发者提供了MECL(Mobile Express Checkout Library)类库来实现应用内支付。MECL类库在分发形式上为后缀.jar的文件,此文件需打包到支付SDK中[8]。MECL类库支持两种编程方式:第一种是支付请求在应用程序内部发起,即用户点击移动应用中的某个按钮来发起支付;第二种是支付在开发者的移动网站上发起。本文所述应用内支付使用第一种方式。支付请求由应用发起的编程流程为:
(1) 初始化MECL类库,获取手机设备令牌。此令牌是手机设备信息的加密组合,作为手机设备的唯一标识,在支付时将发送到Paypal服务器端。
(2) 获取Paypal支付按钮并添加到应用界面中,同时监听按钮的单击事件。
(3) 当用户点击支付按钮时,平台服务器向Paypal服务端发送SetExpressCheckout请求,Paypal服务端获取此请求后将向平台服务端返回支付令牌,此支付信息将作为后续支付操作的依据。
(4) 打开浏览器跳转到Paypal支付页面,用户完成登录和支付确认操作,Paypal自动调用平台服务端对应的回调地址,平台服务端继续向Paypal服务器发送GetExpressCheckoutDetails请求和DoExpressCheckoutPayment请求。GetExpressChekcoutDetails请求用于获取详细的支付参数,DoExpressCheckoutPayment请求用于向Paypal服务端进行确认支付。
(5) 平台服务端获取到Paypal返回的支付结果后,将支付结果传递给移动应用程序。
从以上流程可以看出,为了提高Paypal支付在手机端使用时的安全性,对于与Paypal交互的所有请求全部由平台服务器发出,而不是由手机端发出。整合Paypal支付的SDK代码结构如图4所示。
图4 整合Paypal支付的SDK结构
图4中包含3个类,分别是Paypal_Callback类、Paypal_Config类、Paypal_Main类,其中Paypal_Main类是开发者进行调用的,Paypal_Main类对实现Paypal支付进行了封装。其中initialize()方法封装了参数文件读取;validate()方法用于验证SDK中密钥是否正确,判断手机端与平台服务端是否连通;initLibrary()方法用于初始化Paypal MECL组件,设置组件参数;fetchCheckoutButton()方法用于获取Paypal支付按钮,由开发者将其添加到应用主界面中;buildWebView()方法是核心,此方法用于访问Paypal官方网站的浏览器,用户在浏览器中输入账号密码进行登录,然后确认支付。SDK监控浏览器跳转状态,当支付完成后获取平台服务端返回的支付结果。buildWebView()方法的主要代码为:
public WebView buildWebView(Pitaya_Callback callback) {
String loadingUrl = fetchLoadURL();
final WebView _webView = new webView(this.context);
_webView.getSettings().setJavaScriptEnabled(true);
_webView.addJavascriptInterface(callback,"handler");
_webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(
WebView view,String url) {
if (_webView.getUrl().toLowerCase()
.startsWith(Pitaya_Config.RETURN_URL
.toLowerCase())) {
view.setVisibility(View.INVISIBLE);
view.loadUrl("javascript:window.handler.onClick(document.body.innerText);");
} else {
super.onPageFinished(view,url);
}
}
});
_webView.loadUrl(loadingUrl);
_webView.requestFocus(View.FOCUS_DOWN);
return _webView;
}
整合Paypal的应用内支付实现效果如图5所示。
图5 应用内Paypal支付效果
在图5中,用户首先点击Paypal支付按钮,应用打开浏览器跳转到Paypal官方页面,输入账号密码完成登录操作,然后是支付确认,最后在应用中获取支付时间、支付结果等信息。
平台管理服务端的运行效果如图6所示。
图6展示了接入多款手机游戏的平台服务端,为了便于扩展,平台在设计时支持某一款应用集成多种第三方支付渠道,且为每一种支付渠道分配唯一密钥[910]。在平台服务端开通第三方支付渠道后,只需修改SDK中的配置文件便可在应用内进行支付。
图6 平台管理服务端运行效果
5 结语
移动应用开发在添加应用内支付功能时,若分别与第三方支付渠道集成,会花费很大精力,延长应用开发周期。采用本文所设计的应用内支付平台将会减少开发者大量工作,开发者不再需要自己调试第三方支付渠道的API,而是按支付平台所设计的简洁、统一的API来完成。本文所设计平台已经在多款手机游戏上得到应用,受到开发者一致好评。
参考文献:
[1] TIAN XIUXIA , SHENG YIHANG.Discussion on Android platform application development profit model [J].Journal of Shanghai University of Electric,2012(5):490495.
[2] 田秀霞, 盛翌航.Android平台的应用开发盈利模式探讨[J].上海电力学院学报,2012(5):490495.
[3] 吕旭峰 ,尹亚伟, 华锦芝.移动支付技术发展趋势简析[J].软件产业与工程,2012(6):2327.
[4] 徐世鹏.手机支付平台的设计与实现[D].成都:电子科技大学,2012.
[5] 邹杰.基于Android的移动支付客户端设计与实现[D].北京:北京邮电大学,2011.
[6] 杨丰盛.Android技术内幕[M].北京:机械工业出版社,2011.
[7] 陈文, 郭依正.深入理解Android网络编程[M].北京:机械工业出版社,2013.
[8] 王青林 ,陆军, 李响.国内外第三方支付市场发展实践研究[J].金融电子化,2012(7):221226.
[9] 杨斌 ,高海燕.利用SDK开发智能手机的移动学习资源[J]. 甘肃广播电视大学学报,2012,22(3):5658.
[10] 谢若晨.统一支付清算系统的分析与设计[D].北京:北京邮电大学,2012.
(责任编辑:杜能钢)
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/11 10:23:36