国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的移動應(yīng)用內(nèi)支付平臺設(shè)計與實現(xiàn)

2015-09-18 13:10:33劉奕君王國珍
軟件導刊 2015年8期
關(guān)鍵詞:移動支付

劉奕君 王國珍

摘要:設(shè)計了一種基于Android的應(yīng)用內(nèi)支付平臺。支付平臺對第三方支付渠道進行二次封裝,設(shè)計包括面向移動應(yīng)用開發(fā)者的接入SDK和平臺管理服務(wù)端系統(tǒng)。該支付平臺能夠讓移動應(yīng)用開發(fā)者更快捷地實現(xiàn)應(yīng)用內(nèi)支付功能,且平臺經(jīng)過多款手機游戲應(yīng)用檢驗。實驗表明該設(shè)計流程簡潔,平臺運行穩(wěn)定。

關(guān)鍵詞:移動支付;應(yīng)用內(nèi)支付;IAP;SDK

DOIDOI:10.11907/rjdk.151395

中圖分類號:TP302

文獻標識碼:A 文章編號文章編號:16727800(2015)008014004

0 引言

移動支付作為一種新興的支付方式,其移動便捷性是PC端支付不可替代的,特別是在一些典型應(yīng)用場景中,如手機購物、手機游戲帳號充值等。移動支付根據(jù)實現(xiàn)技術(shù)不同可分為遠程支付和近場支付。近場支付是手機通過射頻、紅外、藍牙等通道與POS機、自動售貨機等終端設(shè)備實現(xiàn)本地通訊。遠程支付依托于移動互聯(lián)網(wǎng),通過手機等終端實現(xiàn),目前主要產(chǎn)品包括使用獨立客戶端和應(yīng)用程序內(nèi)支付。獨立客戶端支付的代表是支付寶、財付通等客戶端,其面向支付平臺自有的忠實客戶,需廠商開發(fā)獨立客戶端工具。應(yīng)用內(nèi)支付通過中間件的形式內(nèi)嵌到應(yīng)用內(nèi),用戶在支付過程中,不用脫離當前頁面或應(yīng)用程序,就可以輸入銀行卡號或使用與帳號綁定的信用卡等形式完成支付?;趹?yīng)用內(nèi)支付特點,其應(yīng)用場景主要集中在手機游戲購買道具、點卡,電子書購買等。從蘋果應(yīng)用商店和谷歌應(yīng)用商店相繼向開發(fā)者和用戶推出應(yīng)用內(nèi)支付情況看,應(yīng)用內(nèi)支付將是未來移動支付的發(fā)展趨勢。

1 應(yīng)用內(nèi)支付

移動應(yīng)用內(nèi)支付經(jīng)歷了3個發(fā)展階段。

1.1 短信支付

短信支付[1]是最早出現(xiàn)的支付方式,移動應(yīng)用通過發(fā)送包含特定的短信到指定端口(號碼),由運營商代扣費,此種方式是運營商代扣手機號碼中剩余話費來充當應(yīng)用的費用。由于這種捆綁手機號繳費的支付方式容易被一些惡意軟件進行“暗扣”吸費,再加上屢屢發(fā)生的短信詐騙案件,使得短信實現(xiàn)應(yīng)用內(nèi)支付安全性較低,目前只有極少數(shù)應(yīng)用軟件在使用。

1.2 網(wǎng)銀支付

目前多數(shù)銀行都向用戶提供了快捷金融服務(wù),各大銀行相繼自行研發(fā)了網(wǎng)上銀行和手機銀行產(chǎn)品。采用網(wǎng)銀支付在用戶體驗上相對較差,用戶在使用網(wǎng)銀支付時需輸入 19位銀行卡號和密碼,并且手機網(wǎng)上銀行的ActiveX控件在移動設(shè)備上支持不夠好,容易導致支付出現(xiàn)問題。

1.3 使用第三方支付渠道

第三方支付在PC端應(yīng)用已經(jīng)非常廣泛,最常見的是第三方支付即支付寶和財付通支付平臺。目前支付寶已經(jīng)向開發(fā)者提供手機無線支付SDK以實現(xiàn)IAP方式支付。國外第三方支付Paypal公司提供了MECL(移動快速結(jié)賬類庫)供開發(fā)者實現(xiàn)應(yīng)用內(nèi)支付功能。目前第三方支付渠道發(fā)展迅速,已基本實現(xiàn)了全平臺覆蓋,可以向用戶提供快捷、安全的支付體驗。

以上3種方式中,使用較多的是第三方支付渠道方式。但是在應(yīng)用單獨集成第三方渠道時,應(yīng)用開發(fā)者在編寫代碼集成前,需先研讀第三方支付渠道的接入接口文檔,熟悉接入流程和復(fù)雜的數(shù)據(jù)交互協(xié)議。這一過程無疑增加了開發(fā)者工作量和接入難度,延長了應(yīng)用開發(fā)周期。本文所設(shè)計的應(yīng)用內(nèi)支付平臺,通過對第三方支付渠道的二次封裝,簡化了應(yīng)用接入API,與第三方支付的核心數(shù)據(jù)通信全部由平臺管理服務(wù)端完成,以達到簡化開發(fā)者接入流程、降低開發(fā)難度、縮短開發(fā)周期的目的,讓開發(fā)者能夠?qū)⒅饕Ψ旁趹?yīng)用本身邏輯功能上。

2 平臺架構(gòu)設(shè)計

應(yīng)用內(nèi)支付平臺架構(gòu)[2]主要分為兩部分:平臺管理服務(wù)端和手機集成SDK(Software Development Kit)開發(fā)工具包。平臺管理服務(wù)端的功能包括向開發(fā)者提供應(yīng)用App的注冊和管理、查看用戶支付明細和向第三方支付平臺發(fā)送支付請求并獲取支付結(jié)果。應(yīng)用內(nèi)支付平臺架構(gòu)如圖1所示。

圖1 應(yīng)用內(nèi)支付平臺架構(gòu)

圖1不僅描述了應(yīng)用內(nèi)支付平臺架構(gòu),還描述了支付的整個流程[34]:①使用應(yīng)用時確認發(fā)起購買支付,應(yīng)用內(nèi)集成的支付SDK向平臺服務(wù)端發(fā)送支付通知;②平臺服務(wù)端收到支付通知后,按照第三方支付渠道接入要求發(fā)起支付請求; ③當用戶在應(yīng)用內(nèi)完成支付后,SDK開發(fā)包獲取平臺服務(wù)端返回的支付結(jié)果,SDK再將支付結(jié)果返回給應(yīng)用程序,同時平臺管理服務(wù)端系統(tǒng)通過回調(diào)的方式將支付詳情發(fā)送到開發(fā)者服務(wù)端系統(tǒng)。

平臺服務(wù)端在手機應(yīng)用程序和第三方支付渠道間搭建起一個橋梁,平臺服務(wù)端負責將支付請求包裝為符合第三方支付渠道的協(xié)議格式,支付完成后再將第三方渠道返回的響應(yīng)結(jié)果解析回送給應(yīng)用程序,應(yīng)用程序依此響應(yīng)結(jié)果為用戶開通相應(yīng)服務(wù),平臺服務(wù)端負責完成第三方支付渠道數(shù)據(jù)包的組裝和解析工作。

SDK開發(fā)包面向移動應(yīng)用開發(fā)者,供開發(fā)者調(diào)用接入支付平臺以實現(xiàn)應(yīng)用內(nèi)支付功能。SDK開發(fā)包主要用于簡化開發(fā)者集成支付時的步驟,向開發(fā)者提供更為簡潔的接口API。開發(fā)者不需了解第三方支付渠道的通信協(xié)議和步驟,只需了解SDK的使用步驟就可以快速實現(xiàn)支付功能。Android平臺應(yīng)用的開發(fā)語言是Java語言,SDK開發(fā)包最終以.jar文件分發(fā)給開發(fā)者,開發(fā)者將其打包到移動應(yīng)用中[56]。

3 平臺設(shè)計

3.1 SDK開發(fā)包詳細設(shè)計

SDK開發(fā)包架構(gòu)如圖2所示。

(1) 基礎(chǔ)類庫。提供公用的數(shù)據(jù)加解密算法工具類、字符處理工具類等。

圖2 應(yīng)用內(nèi)支付SDK架構(gòu)

(2) 配置文件。填寫用戶在支付時的收款方帳號,此配置文件需開發(fā)者在打包應(yīng)用前修改,SDK在初始化時即讀取此配置文件信息,用以支撐后續(xù)的第三方支付平臺認證和支付。

(3) GUI。通常一個應(yīng)用內(nèi)支付不止包括一種第三方渠道,因此須提供一個界面供用戶選擇;同時在界面上添加問題反饋部分,讓應(yīng)用開發(fā)者能夠及時獲取用戶體驗結(jié)果。

(4) 支付邏輯封裝。核心內(nèi)容:SDK中所封裝的支付邏輯為不同第三方支付簡化后的支付流程,不包括與第三方支付平臺交互的數(shù)據(jù)內(nèi)容,與第三方支付平臺交互的數(shù)據(jù)由平臺服務(wù)端發(fā)送。

(5) 調(diào)用接口。由應(yīng)用開發(fā)者調(diào)用,封裝了支付的整個流程,從初始化認證到最終獲取用戶支付結(jié)果的全過程。應(yīng)用接口在設(shè)計上主要包括了SDK初始化、發(fā)送支付請求、用戶支付和獲取支付結(jié)果4個步驟。

依據(jù)面向開發(fā)者設(shè)計的調(diào)用接口,SDK開發(fā)包的工作流程包括以下幾個階段:

(1) 初始化階段。此階段完成的工作包括獲取手機設(shè)備的相關(guān)信息(IMEI代碼、MAC地址等),用于在支付平臺上標識支付手機端唯一性,檢測與三方支付平臺聯(lián)通性,讀取并解析本地配置文件。由于初始化階段需要獲取手機硬件相關(guān)信息和檢測網(wǎng)絡(luò)是否正常,因此比較耗時,應(yīng)將此階段放在后臺線程中執(zhí)行。

(2) 發(fā)送支付請求階段。此階段拆分為兩個小的步驟:①發(fā)送支付請求前應(yīng)完成與第三方支付平臺的認證,獲得認證成功信息后再進行后續(xù)支付操作;②按照第三方支付平臺要求發(fā)送支付參數(shù)(商品名稱、價格、數(shù)量等)。這一部分功能的實現(xiàn)全部由平臺服務(wù)端完成,這一設(shè)計一方面可以簡化開發(fā)者在使用SDK時的難度和復(fù)雜度,另一方面提高了支付過程的安全性。SDK開發(fā)包與平臺服務(wù)端之間進行交互后,平臺服務(wù)端收到SDK開發(fā)包發(fā)送的支付通知,平臺服務(wù)端自動向第三方支付渠道發(fā)起支付請求。

(3) 用戶支付階段。此階段是平臺服務(wù)端向第三方支付渠道成功發(fā)送支付參數(shù)后,SDK根據(jù)第三方支付平臺的要求打開支付界面。支付界面根據(jù)用戶錄入方式的不同而不同。例如Paypal支付平臺要求用戶必須在瀏覽器中顯示paypal官方頁面,用戶在官方頁面中輸入登錄名密碼后,由綁定的信用卡號完成支付。

(4) 獲取支付結(jié)果。在用戶支付完成后,SDK將獲取第三方支付平臺返回的結(jié)果,SDK將結(jié)果返回給應(yīng)用程序,應(yīng)用程序根據(jù)支付結(jié)果為用戶開通相應(yīng)服務(wù)。

3.2 平臺服務(wù)端詳細設(shè)計

平臺服務(wù)端封裝了支付過程中關(guān)鍵的數(shù)據(jù)請求部分,負責與第三方支付渠道通信。同時平臺服務(wù)端又包括了應(yīng)用App注冊和管理、支付明細查詢功能。平臺服務(wù)端的功能結(jié)構(gòu)如圖3所示。

圖3 平臺服務(wù)端功能結(jié)構(gòu)

平臺服務(wù)端主要分為4大模塊,各模塊功能如下:

(1)應(yīng)用App注冊及管理模塊:應(yīng)用App接入平臺前需先進行注冊,由平臺分配密鑰作為應(yīng)用的唯一標識,此密鑰存儲在SDK配置文件中,在SDK初始化時自動讀取密鑰完成與平臺的認證。應(yīng)用管理進行App基礎(chǔ)信息的維護更新、密鑰的更新。

(2)支付明細查詢模塊:以報表形式向開發(fā)者提供按日、按月的用戶支付明細,包括支付時間、金額、商品名稱、應(yīng)用名稱,幫助開發(fā)者進行數(shù)據(jù)統(tǒng)計。

(3)第三方支付渠道通信模塊:封裝了與第三方支付渠道通信時所需的數(shù)據(jù)格式,完成與第三方支付渠道的交互。目前絕大多數(shù)第三方支付平臺在執(zhí)行支付前,需先完成客戶端的認證工作,并向客戶端分配會話令牌,此會話令牌是一次支付的標識,每次支付所獲取的會話令牌是不同的,獲取支付令牌后才能完成支付的后續(xù)操作。不同支付平臺要求的數(shù)據(jù)格式不同,此模塊封裝了在支付時最復(fù)雜的通信數(shù)據(jù)格式和消息請求步驟,將一些非重要參數(shù)屏蔽,向開發(fā)者提供更簡潔的接口。

(4)網(wǎng)絡(luò)通信模塊:封裝了底層TCP通信和HTTP通信的過程代碼,作為基礎(chǔ)工具向上一層模塊提供服務(wù)。

4 Paypal支付實例

Paypal是歐美國家使用最廣泛的在線支付渠道之一[7]。Paypal官方為應(yīng)用開發(fā)者提供了MECL(Mobile Express Checkout Library)類庫來實現(xiàn)應(yīng)用內(nèi)支付。MECL類庫在分發(fā)形式上為后綴.jar的文件,此文件需打包到支付SDK中[8]。MECL類庫支持兩種編程方式:第一種是支付請求在應(yīng)用程序內(nèi)部發(fā)起,即用戶點擊移動應(yīng)用中的某個按鈕來發(fā)起支付;第二種是支付在開發(fā)者的移動網(wǎng)站上發(fā)起。本文所述應(yīng)用內(nèi)支付使用第一種方式。支付請求由應(yīng)用發(fā)起的編程流程為:

(1) 初始化MECL類庫,獲取手機設(shè)備令牌。此令牌是手機設(shè)備信息的加密組合,作為手機設(shè)備的唯一標識,在支付時將發(fā)送到Paypal服務(wù)器端。

(2) 獲取Paypal支付按鈕并添加到應(yīng)用界面中,同時監(jiān)聽按鈕的單擊事件。

(3) 當用戶點擊支付按鈕時,平臺服務(wù)器向Paypal服務(wù)端發(fā)送SetExpressCheckout請求,Paypal服務(wù)端獲取此請求后將向平臺服務(wù)端返回支付令牌,此支付信息將作為后續(xù)支付操作的依據(jù)。

(4) 打開瀏覽器跳轉(zhuǎn)到Paypal支付頁面,用戶完成登錄和支付確認操作,Paypal自動調(diào)用平臺服務(wù)端對應(yīng)的回調(diào)地址,平臺服務(wù)端繼續(xù)向Paypal服務(wù)器發(fā)送GetExpressCheckoutDetails請求和DoExpressCheckoutPayment請求。GetExpressChekcoutDetails請求用于獲取詳細的支付參數(shù),DoExpressCheckoutPayment請求用于向Paypal服務(wù)端進行確認支付。

(5) 平臺服務(wù)端獲取到Paypal返回的支付結(jié)果后,將支付結(jié)果傳遞給移動應(yīng)用程序。

從以上流程可以看出,為了提高Paypal支付在手機端使用時的安全性,對于與Paypal交互的所有請求全部由平臺服務(wù)器發(fā)出,而不是由手機端發(fā)出。整合Paypal支付的SDK代碼結(jié)構(gòu)如圖4所示。

圖4 整合Paypal支付的SDK結(jié)構(gòu)

圖4中包含3個類,分別是Paypal_Callback類、Paypal_Config類、Paypal_Main類,其中Paypal_Main類是開發(fā)者進行調(diào)用的,Paypal_Main類對實現(xiàn)Paypal支付進行了封裝。其中initialize()方法封裝了參數(shù)文件讀取;validate()方法用于驗證SDK中密鑰是否正確,判斷手機端與平臺服務(wù)端是否連通;initLibrary()方法用于初始化Paypal MECL組件,設(shè)置組件參數(shù);fetchCheckoutButton()方法用于獲取Paypal支付按鈕,由開發(fā)者將其添加到應(yīng)用主界面中;buildWebView()方法是核心,此方法用于訪問Paypal官方網(wǎng)站的瀏覽器,用戶在瀏覽器中輸入賬號密碼進行登錄,然后確認支付。SDK監(jiān)控瀏覽器跳轉(zhuǎn)狀態(tài),當支付完成后獲取平臺服務(wù)端返回的支付結(jié)果。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的應(yīng)用內(nèi)支付實現(xiàn)效果如圖5所示。

圖5 應(yīng)用內(nèi)Paypal支付效果

在圖5中,用戶首先點擊Paypal支付按鈕,應(yīng)用打開瀏覽器跳轉(zhuǎn)到Paypal官方頁面,輸入賬號密碼完成登錄操作,然后是支付確認,最后在應(yīng)用中獲取支付時間、支付結(jié)果等信息。

平臺管理服務(wù)端的運行效果如圖6所示。

圖6展示了接入多款手機游戲的平臺服務(wù)端,為了便于擴展,平臺在設(shè)計時支持某一款應(yīng)用集成多種第三方支付渠道,且為每一種支付渠道分配唯一密鑰[910]。在平臺服務(wù)端開通第三方支付渠道后,只需修改SDK中的配置文件便可在應(yīng)用內(nèi)進行支付。

圖6 平臺管理服務(wù)端運行效果

5 結(jié)語

移動應(yīng)用開發(fā)在添加應(yīng)用內(nèi)支付功能時,若分別與第三方支付渠道集成,會花費很大精力,延長應(yīng)用開發(fā)周期。采用本文所設(shè)計的應(yīng)用內(nèi)支付平臺將會減少開發(fā)者大量工作,開發(fā)者不再需要自己調(diào)試第三方支付渠道的API,而是按支付平臺所設(shè)計的簡潔、統(tǒng)一的API來完成。本文所設(shè)計平臺已經(jīng)在多款手機游戲上得到應(yīng)用,受到開發(fā)者一致好評。

參考文獻:

[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平臺的應(yīng)用開發(fā)盈利模式探討[J].上海電力學院學報,2012(5):490495.

[3] 呂旭峰 ,尹亞偉, 華錦芝.移動支付技術(shù)發(fā)展趨勢簡析[J].軟件產(chǎn)業(yè)與工程,2012(6):2327.

[4] 徐世鵬.手機支付平臺的設(shè)計與實現(xiàn)[D].成都:電子科技大學,2012.

[5] 鄒杰.基于Android的移動支付客戶端設(shè)計與實現(xiàn)[D].北京:北京郵電大學,2011.

[6] 楊豐盛.Android技術(shù)內(nèi)幕[M].北京:機械工業(yè)出版社,2011.

[7] 陳文, 郭依正.深入理解Android網(wǎng)絡(luò)編程[M].北京:機械工業(yè)出版社,2013.

[8] 王青林 ,陸軍, 李響.國內(nèi)外第三方支付市場發(fā)展實踐研究[J].金融電子化,2012(7):221226.

[9] 楊斌 ,高海燕.利用SDK開發(fā)智能手機的移動學習資源[J]. 甘肅廣播電視大學學報,2012,22(3):5658.

[10] 謝若晨.統(tǒng)一支付清算系統(tǒng)的分析與設(shè)計[D].北京:北京郵電大學,2012.

(責任編輯:杜能鋼)

猜你喜歡
移動支付
以微信紅包為例分析移動支付對互聯(lián)網(wǎng)金融的促進作用
從財務(wù)角度探討支付寶移動支付業(yè)務(wù)對醫(yī)院的挑戰(zhàn)與對策
財會學習(2016年23期)2017-01-07 13:39:47
移動支付中NFC創(chuàng)意新技術(shù)
電子商務(wù)環(huán)境下移動支付模式研究
打車軟件的普及對城市交通壓力緩解情況研究
山東青年(2016年9期)2016-12-08 16:07:36
移動支付時代大學生消費行為研究
市場競爭中的“藍海戰(zhàn)略”
中國市場(2016年24期)2016-07-06 04:46:05
微信紅包移動支付中的詐騙行為與法律監(jiān)管
人民論壇(2016年11期)2016-05-17 12:14:51
基于O2O模式的餐飲POS機設(shè)計策略研究
商(2016年3期)2016-03-11 12:37:32
移動支付方式在農(nóng)村金融中推廣的困境分析
中國市場(2016年8期)2016-03-07 17:15:01
太仆寺旗| 福建省| 台北市| 绍兴市| 湘西| 成都市| 顺昌县| 江山市| 宜章县| 隆化县| 修武县| 水城县| 吴忠市| 林州市| 新津县| 类乌齐县| 津南区| 丰台区| 抚顺市| 曲沃县| 榆社县| 合作市| 当雄县| 潮州市| 自治县| 安仁县| 永定县| 赤城县| 孝感市| 鹿泉市| 贵溪市| 皋兰县| 英山县| 西宁市| 朝阳县| 祁门县| 中牟县| 宁明县| 新化县| 巩义市| 阿拉善盟|