天天看點

Android GooglePay 填坑錄

1、基礎概念坑

2、支付坑

3、發版流程坑

那麼如何內建 google 結算庫 ?

如何添加測試人員?

如何建立商品?

建立訂閱商品

如何上傳 alpha 版本?

如何把 alpha 版本轉化為生産包?

4、Alpha 測試、Beta 測試 坑

5、代碼坑

6、資料報表坑

訂單管理

收入情況

7、結算币種

google play跟使用者結算

google play跟開發者結算

8、GooglePlay 測試條件

9、郵件通知

最近我接了一個大活,上司要求 app接入google支付,來應對商業化變現困局。

說幹就幹,經過2周的洗禮,我也算從支付小白變成了支付老手,中間踩了很多坑,記錄下來。

<code>在你閱讀本文之前,我強烈建議你,不要馬上動手撸代碼,你要先把本文完完整整一字不漏的讀完,先有一個整體架構</code>

google支付分為 <code>内購(inapp)</code> 和 <code>訂閱 (subscription)</code>

inapp:内購分為:<code>購買</code>和<code>消耗</code> 兩個步驟。如果購買成功,再調用消耗方法,下次可以繼續購買。如果購買成功,不調用消耗的方法,那麼下次将不能再次購買,傳回的錯誤碼為7。

subscription :訂閱隻有購買,沒有消耗。 購買成功也就是訂閱成功,訂閱成功後會周期性扣費。訂閱周期是可以自定義的,可以 周訂閱、月訂閱,季度訂閱、年訂閱 。

訂閱成功後,使用者可以取消訂閱,取消成功後,也可以恢複訂閱。<code>需要說明的是,訂閱成功後,48小時内取消訂閱是會退款的,超過 48 小時取消訂閱不會退款,允許使用者繼續享受訂閱服務到本次訂閱周期結束。</code>

第一個坑,我們來說說支付坑。

和所有的支付功能一樣,支付需要綁卡,而且卡必須支援境外支付功能的,信用卡和儲蓄卡都行。沒有卡的同學可以去招商銀行申請全币信用卡(<code>招商VISIA全币信用卡</code>,<code>招商銀行mastercard全币信用卡</code>)。

可以去營業廳申請,嫌麻煩的也可以在 招行 <code>掌上生活</code> App 申請 。 我當時不知道就跑去營業廳,到了營業廳發現營業員讓我下載下傳 App 操作,我 TM。。。 , 最後順利申請到 <code>招商VISIA全币信用卡</code> ,申請完成後,差不多 5 天左右就收到卡了。

收到信用卡後,就可以在 GooglePlay 上綁定卡,打開手機上的 GooglePlay 。點選 <code>付款方式</code> -&gt; 點選 <code>添加信用卡或借記卡</code>

Android GooglePay 填坑錄

<code>下面我們來說說沒有卡怎麼辦,辦理信用卡也需要時間。再一個方面,支付一直扣自己銀行卡裡面的錢,自己也肉疼。 解決這個問題很簡答,就是在 GooglePlay 開發者背景添加自己的 GooglePlay 賬号為測試賬号。</code>

當你成為測試人員後,你就可以用測試模式支付了,好處就是可以完整的體驗支付流程,不會真的扣錢。這種方式特别适合開發和測試,推薦。

我貼一個圖,大家看一下兩種模式的樣子,你對比一下

<code>一定要記得:添加的測試賬号是你手機裡面 GooglePlay 登陸賬号才行。具體怎麼添加,這裡不講,下面章節會詳細說。</code>

在以往的發版中,我們都是在本地測試,測試成功後,直接在 googlePlay 背景發<code>生産包</code>,加個 20% 灰階量,就 OK了。

接入支付後,發版就不能這麼随意了,并不是說你內建了google 結算庫,就具有支付功能了,要想app具有支付功能,你需要下面幾個步驟:

第一步:內建 google 結算庫,添加必要的權限,具體的邏輯代碼可以先不着急寫。

第二步:添加測試人員

第三部:建立商品

第四步:假設你目前的版本号設為 2.0 ,打包。然後在 googlePlay 開發者背景,上傳 alpha 版本。

第五步:上傳完 alpha 版本,你的 2.0 apk 就具有支付功能了,就可以編寫具體支付代碼,測試人員就可以測試了。

第四步:如果 alpha 版本測試成功了,就可以從 alpha 版本 一鍵轉為生産包,等稽核通過,使用者就可以搜到你的應用了。

如果是 java項目

如果是 Kotlin 項目

添加支付必要的權限

Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄

GooglePlay 要求,任何需要購買的商品都是要在 GooglePlay 開發者背景建立。

Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄

一切順利的話,就可以等待Google的稽核了,通常這個過程會花費2-3個小時不等。稽核通過後,在Android 裝置Google play store上登陸你的測試者賬号,就可以搜尋你上傳的的app了,之後就可以發起正常的購買流程,不需要綁定銀行卡,因為不會真正的付費。

在測試購買的過程中,有可能發現bug了,改了之後需要再上傳apk麼?不用,直接像開發其他功能一樣,直接連着IDE開發調試,購買流程完全不受影響,前提:裝置上需要在google play store登陸測試者賬号。

Android GooglePay 填坑錄

生産包釋出以後,等 Google 稽核通過,使用者就可以搜到帶有支付功能的包了。

在 Google Play 的眼裡,認為所有的上架包都應該有經過測試環節測試,測試通過後才可以正式釋出。

Google Play 把測試環境分為 <code>Alpha 測試</code> 和 <code>Beta 測試</code> 。

<code>Alpha 測試</code> :官方定義為 <code>封閉式測試</code> 。測試範圍小,人員少。 一般可以認為是内部測試,即供開發者内部測試人員測試。

<code>Beta 測試</code> :官方定義為 <code>開放式測試</code> 。測試範圍廣,人員多。普通使用者可以參與的測試環境。

Google Play 建議标準的測試流程為:先 <code>Alpha 測試</code> ,然後再 <code>Beta 測試</code> ,最後釋出生成包。但是在實際開發過程中,根據具體環境自己選擇,比如我在做支付的時候,就隻有 <code>Alpha 測試</code> , 測試通過,直接釋出。

需要注意的事項:

<code>確定使用者可以加入測試</code>:不管哪種測試,測試人員都需要有 googlePlay 賬戶

<code>選擇合适的測試類型</code> :Alpha 版測試的使用者群規模不應太大,而且應當用于測試最不穩定的實驗性質的應用版本;而 Beta 版測試的使用者群規模可以稍大,以便針對即将釋出的較穩定應用版本進行測試。

<code>檢查您的 APK 版本号</code>:提供給 Alpha 版測試人員使用的 APK 的版本号必須高于您的 Beta 版或正式版,而進行 Beta 版測試的 APK 的版本号必須高于正式版。

有一點需要注意的是,結算庫現在是 <code>2.1.0 版本</code> , 我們當做是 <code>2.x</code> 版本。在以前還有 <code>1.x</code> 版本。

官方文檔:各個版本庫的更新說明

相比 1.x 版本,2.x 版本主要的不同點:

修複潛在的記憶體洩漏問題

增加"确認購買"概念,每個新購買的商品都需要調用acknowledgePurchase方法來進行确認購買,如果沒有進行确認購買,三天後會遭受系統自動退款。

強制删除BillingFlowParams.setSku()方法,改為使用BillingClient.querySkuDetailsAsync()+BillingFlowParams.Builder.setSkuDetails()來配置發起購買的參數。

消耗商品和确認購買配置添加setDeveloperPayload()方法,可以将一個字元串傳遞給google,然後可以在查詢商品記錄裡面獲得該值。(目前沒在發起購買裡看到這個方法,具體試用場景還不是很明确)

增加"待交易"概念,購買商品回調裡面,我們需要通過getPurchaseState方法來判斷商品目前的狀态。(重要)

其他一些api修改,問題不大。不過一些開發者測試之類的功能應該很有用,但我沒有具體去看。

推薦一個開源庫,真心好用。這個開源庫針對 1.x 版本 、2.x 版本 分别做了對應的封裝

1.x 版本

2.x 版本

應用釋出以後,怎麼看付費情況,怎麼看相關的資料報表?其實 GooglePlay 開發者背景提供了相應的資料。

Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄
Android GooglePay 填坑錄

币種涉及到兩方面:google play如何跟使用者結算,google play如何結算給開發者

使用者購買時的币種主要由使用者的歸屬地決定,歸屬地依賴于:

1、綁卡使用者由信用卡歸屬地決定。

2、非綁卡使用者,由ip位址決定。

币種為歸屬地的币種,該歸屬地如果在配置價格清單中,按配置價格計算。不在清單中,價格則涉及到匯率換算,換算的匯率按使用者購買時的匯率确定。

結算給開發者的币種,按開發者銀行卡歸宿地确定

價格為使用者付費價格結合分成比例和匯率計算,如果涉及到匯率換算,則按使用者購買時的匯率計算。

當許可測試使用者免費測試應用内物品購買,使用者安裝的APK需滿足以下條件:

安裝APK包名必須與Google Play Console測試管道中APK包名相同。

安裝APK簽名必須與Google Play Console測試管道中APK簽名相同。

安裝APK版本号必須與Google Play Console測試管道中APK版本号相同。

不管你是購買成功、訂閱成功、還是取消訂閱,你都會通過郵件收到通知。

郵件内容包含:訂單編号、訂單時間、商品名字、支付價格、結算币種、付款方式

Android GooglePay 填坑錄

繼續閱讀