Android Google In APP Billing 刪除測試物品 android.test.Purchase 筆記
2014-12-11 22:31
453 查看
在寫 Google In APP Billing(以下稱 IAB) 時若是一不小心或是程序有問題時 沒刪除到購買過的 測試物品 就無法再購買一次~要購買會出現google 返回In-app billing error: Unable to buy item, Error response: 7:Item Already Owned實在挺麻煩的,以下提供一個網路上搜尋到的方法 來刪除他囉
Step 1.先開啟 IAB SDK 下的 Security.java ( 以防出現
Failed to query inventory: IabResult: Error refreshing inventory (querying owned items). (response: -1003:Purchase signature verification failed) )
Step 2. 將當中回傳值 為 false的值 改為 回傳 true
Step 3. 在你的 QueryInventoryFinishedListener 中加入
Step 4. 在一次運行你的app 進行支付動作 在 OnIabSetupFinishedListener後就會進行刪除購買的動作了
Step 5. 記得將 Security.java 中在 Step 2 改成 true 的改回 false 與 刪除Step 3 的 code
補充筆記
幾個 callback 大概是
mHelper.startSetup Callback OnIabSetupFinishedListener
mHelper.launchPurchaseFlow Callback OnIabPurchaseFinishedListener
mHelper.consumeAsync Callback
OnConsumeFinishedListener
mHelper.queryInventoryAsync Callback QueryInventoryFinishedListener
該注意的是 不管哪個 都得先 運行 mHelper.startSetup 才能進行其他 三個功能
比較好的理解是 就是Setup是初始化 其他是功能
另外 很容易忽略的一點是忘了在Activity 中寫 onActivityResult 方法
若沒寫此方法 將不會執行 Callback 的動作
以上參考改寫+翻譯+分享 http://megatuto.com/Formation-Java.php?java_Example=Error+refreshing+inventory.+In-app+Billing+Categorie+java&article=6043
Step 1.先開啟 IAB SDK 下的 Security.java ( 以防出現
Failed to query inventory: IabResult: Error refreshing inventory (querying owned items). (response: -1003:Purchase signature verification failed) )
Step 2. 將當中回傳值 為 false的值 改為 回傳 true
Step 3. 在你的 QueryInventoryFinishedListener 中加入
if (inventory.hasPurchase("android.test.purchased")) {</span> mHelper.consumeAsync(inventory.getPurchase("android.test.purchased"),null); }
Step 4. 在一次運行你的app 進行支付動作 在 OnIabSetupFinishedListener後就會進行刪除購買的動作了
Step 5. 記得將 Security.java 中在 Step 2 改成 true 的改回 false 與 刪除Step 3 的 code
補充筆記
幾個 callback 大概是
mHelper.startSetup Callback OnIabSetupFinishedListener
mHelper.launchPurchaseFlow Callback OnIabPurchaseFinishedListener
mHelper.consumeAsync Callback
OnConsumeFinishedListener
mHelper.queryInventoryAsync Callback QueryInventoryFinishedListener
該注意的是 不管哪個 都得先 運行 mHelper.startSetup 才能進行其他 三個功能
比較好的理解是 就是Setup是初始化 其他是功能
另外 很容易忽略的一點是忘了在Activity 中寫 onActivityResult 方法
若沒寫此方法 將不會執行 Callback 的動作
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d("onActivityResult", "onActivityResult(" + requestCode + "," + resultCode + "," + data); //必须使用此方法 否则googlepay付款成功后 不会回到OnFinishLsnrPurchaseGooglePay 监听事件 if (mHelper != null && !mHelper.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } else { Log.d("onActivityResult", "onActivityResult handled by IABUtil."); } }
以上參考改寫+翻譯+分享 http://megatuto.com/Formation-Java.php?java_Example=Error+refreshing+inventory.+In-app+Billing+Categorie+java&article=6043