1. 程式人生 > >谷歌支付總結(下)

谷歌支付總結(下)

  1. 如billing開發文件所說,要在你的應用中實現In-app Billing只需要完成以下幾步就可以了。  


  1. 第一,把你上篇下載的AIDL檔案新增到你的工程裡,第二,把<uses-permissionandroid:name="com.android.vending.BILLING"/>
這個許可權加到你工程的AndroidManifest.xml檔案中,第三,建立一個ServiceConnection,並把它繫結到IInAppBillingService中。完成上面三條後就可以使用支付了。當然這只是一個簡單的介紹。其實Google的這個支付,大部分都是你手機上的Google Play來進行處理的,你只需要處理購買請求,處理購買結果就行了。文件寫的很好,先把這個文件看完,就知道支付流程了。

正文:

1.內購商品相關

針對我的專案而言,我們在Google後臺設定的是受管理可消耗的商品("managed per user account"),具體的就是遊戲裡的水晶,玩家可以多次購買。但是Google後臺的這種可重複購買商品(還有一種是隻能購買一次的商品"subscription")有個要求,就是你購買成功後需要主動向Google Play請求消耗這個商品,等消耗成功後你才可以再次下單購買。因此,在遊戲裡的支付會多出一個操作步驟就是請求消耗購買成功的商品。

2.檢測裝置是否支援Google Play Service

在正式開啟支付前,Google billing會檢查你的手機是否支援Google billing,這個下面會講到。為了更好的使用者體驗,建議在Google billing檢測之前,可以先檢測一下使用者的裝置是否支援Google Play Service,其中基本要求就是安裝了Google Play應用商店和Google Play Service。如果使用者的裝置不具備這兩個,就可以彈出提示引導使用者去安裝。這裡有兩種方式可以用,一種是通過Google Play Service來進行檢測,就是上篇下載的那個Service擴充套件包,一種是自己寫程式碼,遍歷裝置上安裝的應用程式,檢查是否有安裝Google Play。先說第一種。

(1)Google Play Service

上篇下載的Service包裡會有一個庫工程

把這個庫工程匯入你的eclipse,引用到你的工程裡就可以用了,具體操作可以參加docs下的文件,so easy!匯入成功後,呼叫其中的一個方法就可以了。

  1. /**  
  2.  * Check the device to make sure it has the Google Play Services APK.If  
  3.  * it doesn't, display a dialog that allows users to download the APK from  
  4.  * the Google Play Store or enable it in the device's system settings  
  5.  */  
  6. private boolean checkPlayServices()  
  7. {  
  8.     int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);  
  9.     if(resultCode != ConnectionResult.SUCCESS)  
  10.     {  
  11.         if(GooglePlayServicesUtil.isUserRecoverableError(resultCode))  
  12.         {  
  13.             GooglePlayServicesUtil.getErrorDialog(resultCode, this,  
  14.                     PLAY_SERVICES_RESOLUTION_REQUEST).show();  
  15.         }  
  16.         else  
  17.         {  
  18.             Log.i(TAG, "This device is not supported");  
  19.             finish();  
  20.         }  
  21.         return false;  
  22.     }  
  23.     return true;  
  24. }  
如果當前裝置的Google Service不可用,就會彈出提示,引導使用者去設定安裝。如果此裝置不支援的話,就也不需要檢測Google billing是否可用了。多說一句,Google Play Service可以做很多事的,如果覺得只用上面的功能太簡單的話,就可以考慮把應用自動更新也加上,當你在Google Play上傳了新版程式後,Google Play會幫你提示使用者更新程式。還有一個比較好玩的就是如果引入了這個庫工程後,就可以加GCM了(Google Cloud Messaging),就是訊息推送推送功能,當然這個比較麻煩,有興趣的可以去加加看。

(2)遍歷包名

Google Play的程式包名是"com.Android.vending",執行在裝置上的Google Play Service的包名是"com.google.android.gms",可以在程式啟動的時候遍歷下裝置上的包名,如果沒有這兩個東西就引導使用者去安裝。

遍歷包名方法

  1. //Check Google Play  
  2. protected boolean isHaveGooglePlay(Context context, String packageName)  
  3. {  
  4.     //Get PackageManager  
  5.     final PackageManager packageManager = context.getPackageManager();  
  6.     //Get The All Install App Package Name  
  7.     List<PackageInfo>pInfo = packageManager.getInstalledPackages(0);  
  8.     //Create Name List  
  9.     List<String>pName = new ArrayList<String>();  
  10.     //Add Package Name into Name List  
  11.     if(pInfo != null){  
  12.         for(int i=0; i<pInfo.size(); i++){  
  13.             String pn = pInfo.get(i).packageName;  
  14.             pName.add(pn);  
  15.             //Log.v("Package Name", "PackAgeName: = " + pn);  
  16.         }  
  17.     }  
  18.     //Check   
  19.     return pName.contains(packageName);  
  20. }  
提示安裝方法
  1. Uri uri = Uri.parse("market://details?id=" + "要安裝程式的包名");  
  2.             Intent it = new Intent(Intent.ACTION_VIEW, uri);   
  3.             startActivity(it);  
上面這個方法會開啟你手機上的應用商店,定位到要安裝的程式。

不過還是推薦用Google Play Service來檢測,貌似第二種,即使有的使用者裝了Google Play(像國內使用者),也不支援Google Play Service的。3.新增程式碼(終於要加支付程式碼了)

把上篇下載的samples裡util的程式碼全部拷到你的工程裡,可以新建一個包,放到裡面。

這個說明一下,其實這個例子的程式碼還是不錯的,本著天下程式碼一大抄和拿來主義,就直接拿來用吧!當然如果你覺得這個程式碼寫的不好,或者不適用你的工程,你就可以依據文件自己寫適用的程式碼。當然文件裡說過,為了防止別人破解你的遊戲,最好把裡面的變數和方法都改下名字,畢竟這裡的程式碼任何人都看得到。我的做法是照搬過來了,只是把IabHelper.Java改造了下,因為這個是整個支付的關鍵,其他都是輔助的,可以不管。

把這裡的程式碼拷完,把該import的都import了,你就可以照samples中的程式碼開寫自己的支付了。針對單機遊戲,就需要考慮這個程式碼改造和本地的驗證,加密了。針對網路遊戲就要簡單了。因為我其實對java不太熟悉吐舌頭,所以單機的加密,base驗證,混淆什麼的就不做介紹了。下面主要說網路遊戲。

(1)IabHelper.java

這個是支付的關鍵程式碼,其中已經把設定billing,商品查詢,商品購買,商品回撥,商品驗證以及回撥方法都寫好了,你直接參照samples用就可以了。

01.設定billing

就是開篇所說的繫結ServiceConnection到IInAppBillingService。功能很完善,包括成功和失敗都有回撥,還有各種異常。在你程式的啟動Activity裡檢測完裝置是否Google Play Service後,就可以new一個IabHelper,來呼叫這個方法,根據不同的回撥裡做相應的處理。

  1. /**  
  2.      * Starts the setup process. This will start up the setup process asynchronously.  
  3.      * You will be notified through the listener when the setup process is complete.  
  4.      * This method is safe to call from a UI thread.  
  5.      *  
  6.      * @param listener The listener to notify when the setup process is complete.  
  7.      */  
  8.     public void startSetup(final OnIabSetupFinishedListener listener) {  
  9.         // If already set up, can't do it again.  
  10.         checkNotDisposed();  
  11.         if (mSetupDone) throw new IllegalStateException("IAB helper is already set up.");  
  12.         // Connection to IAB service  
  13.         logDebug("Starting in-app billing setup.");  
  14.         mServiceConn = new ServiceConnection() {  
  15.             @Override  
  16.             public void onServiceDisconnected(ComponentName name) {  
  17.                 logDebug("Billing service disconnected.");  
  18.                 mService = null;  
  19.             }  
  20.             @Override  
  21.             public void onServiceConnected(ComponentName name, IBinder service) {  
  22.                 if (mDisposed) return;  
  23.                 logDebug("Billing service connected.");  
  24.                 mService = IInAppBillingService.Stub.asInterface(service);  
  25.                 String packageName = mContext.getPackageName();  
  26.                 try {  
  27.                     logDebug("Checking for in-app billing 3 support.");  
  28.                     // check for in-app billing v3 support  
  29.                     int response = mService.isBillingSupported(3, packageName, ITEM_TYPE_INAPP);  
  30.                     if (response != BILLING_RESPONSE_RESULT_OK) {  
  31.                         if (listener != null) listener.onIabSetupFinished(new IabResult(response,  
  32.                                 "Error checking for billing v3 support."));  
  33.                         // if in-app purchases aren't supported, neither are subscriptions.  
  34.                         mSubscriptionsSupported = false;  
  35.                         return;  
  36.                     }  
  37.                     logDebug("In-app billing version 3 supported for " + packageName);  
  38.                     // check for v3 subscriptions support  
  39.                     response = mService.isBillingSupported(3, packageName, ITEM_TYPE_SUBS);  
  40.                     if (response == BILLING_RESPONSE_RESULT_OK) {  
  41.                         logDebug("Subscriptions AVAILABLE.");  
  42.                         mSubscriptionsSupported = true;  
  43. 相關推薦

    支付總結()

    如billing開發文件所說,要在你的應用中實現In-app Billing只需要完成以下幾步就可以了。   第一,把你上篇下載的AIDL檔案新增到你的工程裡,第二,把<uses-permissionandroid:name="com

    Unity接入支付

    文章理由 前段時間負責Unity接入Google內購功能,一開始研究別人的技術部落格時發現,他們的文章都有些年頭了,有些細節的地方已經不像n年前那樣了,技術永遠是需要更新的,而這篇就作為2016年末的最後一篇接入谷歌內購文章寫給需要的人 準備工作 1.將自己的谷歌賬

    chrome瀏覽器font-size屬性值小於12px時無效問題的解決辦法

    如果單單是想要設定頁面的font-size屬性值小於12px,貌似是一個很簡單、很正常、對於有這個需求的開發者理所當然的事情。 在chrome瀏覽器下,當設定font-size屬性值小於12px時

    python+selenium 啟動和火狐面的flash

    1.安裝火狐 selenium 3.7.0 Firefox 54.0 Python 3.6.2 geckodriver-v0.19.1-win64 一、過程中遇到的問題: 1、報錯:selenium.common.exceptions.WebDriverExcep

    Unity IAP 支付,ios支付——最白話,手把手教你做系列。

    Unity IAP支付接入——谷歌支付,IOS支付。 申請商品ID不再贅述。 兩個部分 一,接入SDK 開啟unity選擇Window——Services出現Services視窗 開啟In-App-Purchasing。 跳轉到下個頁面。選擇

    支付驗證 403錯誤

    1 說明 本文講述後端使用谷歌api驗證支付的過程 流程: 前端支付完畢之後會獲取token,將token傳送至後端,後端將此token發向google進行查詢,如果是正常有效的token,谷歌會返回對應訂單的詳細資訊,驗證通過後再通知前端進行消費(也可以前

    接入支付所遇到的坑

    再提供一個在github上的demo點選開啟連結,一般來說只要按照這個上面的方法,和參考demo中的程式碼。操作起來也就不會很難,這裡主要說說在我開發的時候所遇到的坑1.當你的註冊的服務錯誤的時候,就會

    chrome瀏覽器-DevTool開發者工具-詳細總結

    相關 tail justify 任務管理器 log 兩個 停用 表格 需要 chrome的開發者工具可以說是十分強大了,是web開發者的一大利器,作為我個人而言平時用到的幾率很大,相信大家也很常見,但是不要僅僅停留在點選元素看看樣式的層面上哦,跟著我的總結一起學習實踐一下

    ubuntu(linux)瀏覽器跨域問題,XMLhttprequest跨域問題

    replace mod class req box tps 圖片 ebs nal ubuntu(linux)下谷歌瀏覽器跨域問題 今天在使用谷歌瀏覽器實時調試代碼的時候遇到這樣的錯誤: XMLHttpRequest cannot load http:/

    Ubuntu安裝瀏覽器命令

    googl 獲得 rom 谷歌瀏覽器 www -i 快捷 文章 ref 轉載:http://www.linuxidc.com/Linux/2013-10/91857.htm 對於剛剛開始使用Ubuntu並想安裝谷歌Chrome瀏覽器的新用戶來說,本文所介紹的方法是最快捷的。

    Android——官方拉刷新控件SwipeRefreshLayout(轉)

    reference top 顯示 是個 not ext html blog right 轉自:http://blog.csdn.net/zouzhigang96/article/details/50476402 版權聲明:本文為博主原創文章,未經博主允許不得轉載。

    playstore中應用載量已超150億次

    .cn odi dex odm www wot mdi mdm odex peerjs%E5%AE%9E%E7%8E%B0%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AF%B9%E7%AD%89%E8%BF%9E%E6%8E%A5%E7%9A%84js%E

    花了 2 年時間研究了 180 個團隊,總結出成功的 5 個要素

    力量 不用 一個 googl get 管理 new google years 編者按:如何組建一個成功的團隊,是困擾很多管理者的問題。請看這篇由人力資源專家Michael Schneider在inc.com上撰寫的文章Google Spent 2 Years Studyin

    做了45萬次不同類型的文本分類後,總結出一個通用的“模型選擇算法”...

    machine 產品 梯度 論壇 系統 例子 per 獲取 tis 谷歌做了45萬次不同類型的文本分類後,總結出一個通用的“模型選擇算法”... 2018年07月25日 17:43:55 閱讀數:6 新智元報道 來源:developers.goo

    macchrome瀏覽器的快捷鍵

    1. 標籤頁和視窗快捷鍵 ⌘-N 開啟新視窗。 ⌘-T 開啟新標籤頁。 ⌘-Shift-N 在隱身模式下開啟新

    如何去除input框在瀏覽器的黃色底紋

        現象:谷歌瀏覽器下input框有預設記住功能,此時若選擇了歷史輸入的內容,則變成如下圖;非歷史輸入,是沒有的。    方法一 input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px whi

    【開發除錯】瀏覽器中除錯移動網頁和測試網速頁面效果

    、    今天有幸給大家分享一下谷歌瀏覽器針對移動網頁測試的技巧,主要是最近做個微信公共號網站。所以就要對頁面測試拉。移動網頁我們最長測得就是各種手機大小的頁面效果和出現網路問題的效果展示。 今天就簡單分享下在谷歌瀏覽器測試頁面的適配和網速限制展示。 頁面的適配 自帶的手機模式 首先開啟谷歌瀏覽器按F

    微信掃碼支付功能(1)---通過二維碼工具生成付款碼

    生成付款二維碼 一、微信網站掃碼支付介紹    1、掃碼支付文件   有關微信支付的流程圖微信官方已經說的很清楚了,這裡也無需其它解釋。這邊採用微信支付掃碼模式二(不依賴商戶平臺設定回撥url),所以在生成二維碼之前 要先呼叫微信統一下單支付介面,獲得code_url,再通過谷歌二維碼工具將c

    修改瀏覽器快取位置總結

    啟動Chrome瀏覽器。 在Chrome瀏覽器的位址列輸如chrome:version檢視Chrome瀏覽器儲存檔案的位置 在我的電腦找到上面的個人資料路徑(Profile Path)路徑 Chrome瀏覽器預設的快取檔案在 Cache  資料夾下 把Cache 刪除了,選中 按del,或者右鍵 刪除

    ubuntu13.04 環境chromium中安裝Adobe Flsher Player 外掛

    1 背景介紹 在使用chromimu瀏覽瀏覽器時,會出現播放不了網頁上的視訊的情況,原因是沒有安裝Adobe Flsher Player 外掛,這時網頁的搜尋欄的下部會提示使用者是否安裝Adobe Flsher Player 外掛,點選安裝外掛,會調轉到Adobe Flsher Player