2015年2月11日 星期三

[Android] In-App Billing/Purchases 實作與測試

關於Android In-App Billing的簡介請看此篇
本篇將著墨在開發者實作部分,
由於Google Play Billing Library中已經有一個很完整的範例程式。
所以本篇會直接拿來使用,並暫時不講解程式碼。
按照底下步驟做便能完成APK與Google Play Developer Console連動。
  1. 下載Google Play Billing Library
    • 打開Android SDK manager並下載安裝Google Play Billing Library
    • 路徑為: /{SDK路徑}/sdk/extras/google/play_billing
  2. 將範例程式Import到Eclipse當中
    • 在Eclipse中點擊File -> Import -> Android -> Existing Android Code Into Workspace
    • 範例程式路徑為: /{SDK路徑}/sdk/extras/google/play_billing/samples/TrivialDrive
  3. 將Package Name更名
    • 原先的Package為com.example.android.trivialdrivesample, 由於com.example.android會無法上傳至Google Play Developer Console. 所以需要先行更名。
  4. 前往Google Play Developer Console建立一個新的應用程式
    • 點擊"新增應用程式"
    • 填入標題
    • 倘若您無法進入此頁面,代表您沒有支付25美金的上架費
  5. 將此應用程式的Public Key複製起來
  6. 將剛才的Key填入程式碼當中
    • 在MainActivity.java中可以看到下列程式碼,將之取代成剛才的Key
    • String base64EncodedPublicKey = "CONSTRUCT_YOUR_KEY_AND_PLACE_IT_HERE";
  7. 此應用程式有三個內購項目,我們必須先記下他的名稱,才方便我們等下在Google Play Developer Console建立內購項目
    • 從程式碼可以得知"premium"是屬於非消耗品,"gas"屬於消耗品,"infinite_gas"屬於訂閱項目
    • // SKUs for our products: the premium upgrade (non-consumable) and gas (consumable)
      static final String SKU_PREMIUM = "premium";
      static final String SKU_GAS = "gas";
      
      // SKU for our subscription (infinite gas)
      static final String SKU_INFINITE_GAS = "infinite_gas";
  8. 將此Project輸出成signed的APK, 不能使用debug key.
    • 對專案按右鍵Android Tools -> Export Signed Application Package...
    • 到此處整個Project應該不會有任何錯誤,若有錯誤需先處理再做此步驟
  9. 上傳剛才的APK至Google Play Developer Console
    • 將APK上傳至ALPHA階段,才能作測試用
  10. 至應用程式內產品加入剛才的三項產品
    • 在API v3中,納入管理的產品和為納入管理的產品是一樣的
    • "premium"和"gas"為納入管理的產品,"infinite_gas"則為訂閱
    • 在訂閱項目中,有一個免費試用期,建議填寫7天,好方便測試
    • 將需要的資訊填好後,記得儲存並啟用
  11. 將其他的Google帳號加入測試帳號中,之後才能透過此帳號進行購買測試。
    • 您無法使用發佈此App的Google帳號進行內購測試
    • 被加入的帳號必須登陸信用卡資訊才能進行測試
  12. 接下來您可以決定是否要發佈,發佈前仍需要將其他資訊填好,直到發佈應用程式的按鈕亮起
    • 如果沒有發佈,第11步驟的測試帳號仍可測試內購已簽章的APK,為測試購買
    • 如果發佈,第11步驟的測試帳號的購買行為是測試購買,其他帳號則是真實購買
  13. 發佈後,將您的Android手機登入剛才加入測試的Google帳號,安裝Signed好的APK檔,便能測試購買
    • 發佈後,需要等待幾個小時才能順利購買,這期間您可能在購買過程中發生錯誤,包括"需要認證,請登入Google帳號"等錯誤訊息
    • 底下是此範例程式的執行結果
請注意,納入管理的產品屬於測試訂單,不會扣錢。
可是訂閱則是真實訂單,是會扣錢的,
所以前面才會提醒要填寫7天的免費試用期,
在測試的時候記得7天內要記得取消訂閱,
才不會被扣到款。
超過7天沒有取消就會被扣款了,
只能透過商家電子錢包進行退款。
而且Google Play屬於國外交易,
大部分的信用卡都會收取國外交易手續費的喔。

另外要提醒的是,
所有在Google Play Developer Console的動作,
都不會馬上生效,
需要等待幾個小時甚至一兩天才會生效。
建議每一個動作都要想清楚再做!

如果想要給別的朋友或帳號測試,
可以將signed的APK傳給別人並將帳號加入測試。
或者建立一個Google網上論壇,
並在Google Play Developer Console將此論壇加入至ALPHA測試人員也可。
如何使用Google網上論壇可參照此篇文章

針對測試購買的結論
  • 不發佈APP,只有測試帳號才能測試購買。發佈APP,所有帳號都能購買,只是測試帳號屬於測試購買,其他帳號屬於真實購買。
  • 對於測試帳號,納入管理的產品屬於測試購買,訂閱是真實購買,所以將訂閱設定試用期,可免去退款動作。
  • 因為發佈ALPHA版本並不會在Google Play上公開,所以建立Google網上論壇只是方便特定測試人員能在Google Play上下載,並非必要動作。
  • 所有在Google Play Developer Console的動作都不會馬上生效,請至少等待數個小時甚至一天。

沒有留言:

張貼留言