您的位置:首页 > 移动开发 > Android开发

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 中加入

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  google 支付 android