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> -> 點選 <code>添加信用卡或借記卡</code>
<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 項目
添加支付必要的權限
GooglePlay 要求,任何需要購買的商品都是要在 GooglePlay 開發者背景建立。
一切順利的話,就可以等待Google的稽核了,通常這個過程會花費2-3個小時不等。稽核通過後,在Android 裝置Google play store上登陸你的測試者賬号,就可以搜尋你上傳的的app了,之後就可以發起正常的購買流程,不需要綁定銀行卡,因為不會真正的付費。
在測試購買的過程中,有可能發現bug了,改了之後需要再上傳apk麼?不用,直接像開發其他功能一樣,直接連着IDE開發調試,購買流程完全不受影響,前提:裝置上需要在google play store登陸測試者賬号。
生産包釋出以後,等 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 開發者背景提供了相應的資料。
币種涉及到兩方面:google play如何跟使用者結算,google play如何結算給開發者
使用者購買時的币種主要由使用者的歸屬地決定,歸屬地依賴于:
1、綁卡使用者由信用卡歸屬地決定。
2、非綁卡使用者,由ip位址決定。
币種為歸屬地的币種,該歸屬地如果在配置價格清單中,按配置價格計算。不在清單中,價格則涉及到匯率換算,換算的匯率按使用者購買時的匯率确定。
結算給開發者的币種,按開發者銀行卡歸宿地确定
價格為使用者付費價格結合分成比例和匯率計算,如果涉及到匯率換算,則按使用者購買時的匯率計算。
當許可測試使用者免費測試應用内物品購買,使用者安裝的APK需滿足以下條件:
安裝APK包名必須與Google Play Console測試管道中APK包名相同。
安裝APK簽名必須與Google Play Console測試管道中APK簽名相同。
安裝APK版本号必須與Google Play Console測試管道中APK版本号相同。
不管你是購買成功、訂閱成功、還是取消訂閱,你都會通過郵件收到通知。
郵件内容包含:訂單編号、訂單時間、商品名字、支付價格、結算币種、付款方式