Android GooglePay 填坑录
轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/106197857
本文出自【趙彥軍的博客】
目錄
- 1、基礎概念坑
- 2、支付坑
- 3、發(fā)版流程坑
- 那么如何集成 google 結算庫 ?
- 如何添加測試人員?
- 如何創(chuàng)建商品?
- 創(chuàng)建訂閱商品
- 如何上傳 alpha 版本?
- 如何把 alpha 版本轉化為生產包?
- 4、Alpha 測試、Beta 測試 坑
- 5、代碼坑
- 6、數(shù)據(jù)報表坑
- 訂單管理
- 收入情況
- 7、結算幣種
- google play跟用戶結算
- google play跟開發(fā)者結算
- 8、GooglePlay 測試條件
- 9、郵件通知
最近我接了一個大活,領導要求 app接入google支付,來應對商業(yè)化變現(xiàn)困局。
說干就干,經(jīng)過2周的洗禮,我也算從支付小白變成了支付老手,中間踩了很多坑,記錄下來。
在你閱讀本文之前,我強烈建議你,不要馬上動手擼代碼,你要先把本文完完整整一字不漏的讀完,先有一個整體框架
1、基礎概念坑
google支付分為 內購(inapp) 和 訂閱 (subscription)
inapp:內購分為:購買和消耗 兩個步驟。如果購買成功,再調用消耗方法,下次可以繼續(xù)購買。如果購買成功,不調用消耗的方法,那么下次將不能再次購買,返回的錯誤碼為7。
subscription :訂閱只有購買,沒有消耗。 購買成功也就是訂閱成功,訂閱成功后會周期性扣費。訂閱周期是可以自定義的,可以 周訂閱、月訂閱,季度訂閱、年訂閱 。
訂閱成功后,用戶可以取消訂閱,取消成功后,也可以恢復訂閱。需要說明的是,訂閱成功后,48小時內取消訂閱是會退款的,超過 48 小時取消訂閱不會退款,允許用戶繼續(xù)享受訂閱服務到本次訂閱周期結束。
2、支付坑
第一個坑,我們來說說支付坑。
和所有的支付功能一樣,支付需要綁卡,而且卡必須支持境外支付功能的,信用卡和儲蓄卡都行。沒有卡的同學可以去招商銀行申請全幣信用卡(招商VISIA全幣信用卡,招商銀行mastercard全幣信用卡)。
可以去營業(yè)廳申請,嫌麻煩的也可以在 招行 掌上生活 App 申請 。 我當時不知道就跑去營業(yè)廳,到了營業(yè)廳發(fā)現(xiàn)營業(yè)員讓我下載 App 操作,我 TM。。。 , 最后順利申請到 招商VISIA全幣信用卡 ,申請完成后,差不多 5 天左右就收到卡了。
收到信用卡后,就可以在 GooglePlay 上綁定卡,打開手機上的 GooglePlay 。點擊 付款方式 -> 點擊 添加信用卡或借記卡
下面我們來說說沒有卡怎么辦,辦理信用卡也需要時間。再一個方面,支付一直扣自己銀行卡里面的錢,自己也肉疼。 解決這個問題很簡答,就是在 GooglePlay 開發(fā)者后臺添加自己的 GooglePlay 賬號為測試賬號。
當你成為測試人員后,你就可以用測試模式支付了,好處就是可以完整的體驗支付流程,不會真的扣錢。這種方式特別適合開發(fā)和測試,推薦。
我貼一個圖,大家看一下兩種模式的樣子,你對比一下
一定要記得:添加的測試賬號是你手機里面 GooglePlay 登陸賬號才行。具體怎么添加,這里不講,下面章節(jié)會詳細說。
3、發(fā)版流程坑
在以往的發(fā)版中,我們都是在本地測試,測試成功后,直接在 googlePlay 后臺發(fā)生產包,加個 20% 灰度量,就 OK了。
接入支付后,發(fā)版就不能這么隨意了,并不是說你集成了google 結算庫,就具有支付功能了,要想app具有支付功能,你需要下面幾個步驟:
第一步:集成 google 結算庫,添加必要的權限,具體的邏輯代碼可以先不著急寫。
第二步:添加測試人員
第三部:創(chuàng)建商品
第四步:假設你當前的版本號設為 2.0 ,打包。然后在 googlePlay 開發(fā)者后臺,上傳 alpha 版本。
第五步:上傳完 alpha 版本,你的 2.0 apk 就具有支付功能了,就可以編寫具體支付代碼,測試人員就可以測試了。
第四步:如果 alpha 版本測試成功了,就可以從 alpha 版本 一鍵轉為生產包,等審核通過,用戶就可以搜到你的應用了。
那么如何集成 google 結算庫 ?
google 支付依賴包,官方地址:google結算庫使用
如果是 java項目
implementation 'com.android.billingclient:billing:2.1.0'如果是 Kotlin 項目
implementation 'com.android.billingclient:billing-ktx:2.1.0'添加支付必要的權限
<!-- googlePay --> <uses-permission android:name="com.android.vending.BILLING" />如何添加測試人員?
如何創(chuàng)建商品?
GooglePlay 要求,任何需要購買的商品都是要在 GooglePlay 開發(fā)者后臺創(chuàng)建。
創(chuàng)建訂閱商品
如何上傳 alpha 版本?
一切順利的話,就可以等待Google的審核了,通常這個過程會花費2-3個小時不等。審核通過后,在Android 設備Google play store上登陸你的測試者賬號,就可以搜索你上傳的的app了,之后就可以發(fā)起正常的購買流程,不需要綁定銀行卡,因為不會真正的付費。
在測試購買的過程中,有可能發(fā)現(xiàn)bug了,改了之后需要再上傳apk么?不用,直接像開發(fā)其他功能一樣,直接連著IDE開發(fā)調試,購買流程完全不受影響,前提:設備上需要在google play store登陸測試者賬號。
如何把 alpha 版本轉化為生產包?
生產包發(fā)布以后,等 Google 審核通過,用戶就可以搜到帶有支付功能的包了。
4、Alpha 測試、Beta 測試 坑
官方鏈接:https://developer.android.google.cn/distribute/best-practices/launch/beta-tests.html?hl=zh-cn
在 Google Play 的眼里,認為所有的上架包都應該有經(jīng)過測試環(huán)節(jié)測試,測試通過后才可以正式發(fā)布。
Google Play 把測試環(huán)境分為 Alpha 測試 和 Beta 測試 。
Alpha 測試 :官方定義為 封閉式測試 。測試范圍小,人員少。 一般可以認為是內部測試,即供開發(fā)者內部測試人員測試。
Beta 測試 :官方定義為 開放式測試 。測試范圍廣,人員多。普通用戶可以參與的測試環(huán)境。
Google Play 建議標準的測試流程為:先 Alpha 測試 ,然后再 Beta 測試 ,最后發(fā)布生成包。但是在實際開發(fā)過程中,根據(jù)具體環(huán)境自己選擇,比如我在做支付的時候,就只有 Alpha 測試 , 測試通過,直接發(fā)布。
需要注意的事項:
- 確保用戶可以加入測試:不管哪種測試,測試人員都需要有 googlePlay 賬戶
- 選擇合適的測試類型 :Alpha 版測試的用戶群規(guī)模不應太大,而且應當用于測試最不穩(wěn)定的實驗性質的應用版本;而 Beta 版測試的用戶群規(guī)模可以稍大,以便針對即將發(fā)布的較穩(wěn)定應用版本進行測試。
- 檢查您的 APK 版本號:提供給 Alpha 版測試人員使用的 APK 的版本號必須高于您的 Beta 版或正式版,而進行 Beta 版測試的 APK 的版本號必須高于正式版。
5、代碼坑
官方文檔:https://developer.android.com/google/play/billing/billing_library_overview#kotlin
有一點需要注意的是,結算庫現(xiàn)在是 2.1.0 版本 , 我們當做是 2.x 版本。在以前還有 1.x 版本。
官方文檔:各個版本庫的更新說明
相比 1.x 版本,2.x 版本主要的不同點:
- 修復潛在的內存泄漏問題
- 增加"確認購買"概念,每個新購買的商品都需要調用acknowledgePurchase方法來進行確認購買,如果沒有進行確認購買,三天后會遭受系統(tǒng)自動退款。
- 強制刪除BillingFlowParams.setSku()方法,改為使用BillingClient.querySkuDetailsAsync()+BillingFlowParams.Builder.setSkuDetails()來配置發(fā)起購買的參數(shù)。
- 消耗商品和確認購買配置添加setDeveloperPayload()方法,可以將一個字符串傳遞給google,然后可以在查詢商品記錄里面獲得該值。(目前沒在發(fā)起購買里看到這個方法,具體試用場景還不是很明確)
- 增加"待交易"概念,購買商品回調里面,我們需要通過getPurchaseState方法來判斷商品當前的狀態(tài)。(重要)
- 其他一些api修改,問題不大。不過一些開發(fā)者測試之類的功能應該很有用,但我沒有具體去看。
推薦一個開源庫,真心好用。這個開源庫針對 1.x 版本 、2.x 版本 分別做了對應的封裝,可以參考一下;
1.x 版本:https://github.com/TJHello/GoogleBilling
2.x 版本:https://github.com/TJHello/GoogleBilling/tree/2.0/
6、數(shù)據(jù)報表坑
應用發(fā)布以后,怎么看付費情況,怎么看相關的數(shù)據(jù)報表?其實 GooglePlay 開發(fā)者后臺提供了相應的數(shù)據(jù)。
訂單管理
收入情況
7、結算幣種
幣種涉及到兩方面:google play如何跟用戶結算,google play如何結算給開發(fā)者
google play跟用戶結算
用戶購買時的幣種主要由用戶的歸屬地決定,歸屬地依賴于:
1、綁卡用戶由信用卡歸屬地決定。
2、非綁卡用戶,由ip地址決定。
幣種為歸屬地的幣種,該歸屬地如果在配置價格列表中,按配置價格計算。不在列表中,價格則涉及到匯率換算,換算的匯率按用戶購買時的匯率確定。
google play跟開發(fā)者結算
結算給開發(fā)者的幣種,按開發(fā)者銀行卡歸宿地確定
價格為用戶付費價格結合分成比例和匯率計算,如果涉及到匯率換算,則按用戶購買時的匯率計算。
8、GooglePlay 測試條件
當許可測試用戶免費測試應用內物品購買,用戶安裝的APK需滿足以下條件:
-
安裝APK包名必須與Google Play Console測試渠道中APK包名相同。
-
安裝APK簽名必須與Google Play Console測試渠道中APK簽名相同。
-
安裝APK版本號必須與Google Play Console測試渠道中APK版本號相同。
9、郵件通知
不管你是購買成功、訂閱成功、還是取消訂閱,你都會通過郵件收到通知。
郵件內容包含:訂單編號、訂單時間、商品名字、支付價格、結算幣種、付款方式
總結
以上是生活随笔為你收集整理的Android GooglePay 填坑录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Google Play
- 下一篇: Android RxJava 3.x 使