【问题标题】:Android check if in app purchase was bought beforeAndroid检查之前是否购买了应用内购买
【发布时间】:2015-12-22 13:46:12
【问题描述】:

我想在我的 Android 应用中进行应用内购买。我为此使用了谷歌示例:http://developer.android.com/training/in-app-billing/preparing-iab-app.html#GetSample

我在我的 android studio 项目中实现了这个。在开发者控制台中,我将应用内购买和 gmail 地址设置为测试帐户。

在我的设备(不是模拟器)上,我使用此测试帐户登录。我启动我的应用程序并单击“购买高级版”,即可完成此过程。

现在我想显示一个按钮(文本“恢复”),如果他/她之前购买了高级功能,用户可以在其中恢复他/她的应用内购买。

我有这个代码:

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
        public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
            Log.e("-->", "Purchase finished: " + result);



            if (mHelper == null) return;

            if (result.isFailure()) {
                Log.e("-->","Error purchasing: " + result);
                return;
            }
            if (!verifyDeveloperPayload(purchase)) {
                Log.e("-->","Error purchasing. Authenticity verification failed.");
                return;
            }



            SharedPreferences prefs = this.getSharedPreferences("xxx", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("Premium", true);
            editor.commit();
            Log.e("-->", "Premium: " + prefs.getBoolean("Premium", false));


}
};

如果我再次按下“购买”按钮并且我之前购买过这个,我会在 log cat 中收到这条消息:

-->:购买完成:IabResult:无法购买物品(响应:7:物品已拥有),购买:null -->: Error purchase: IabResult: Unable to buy item (response: 7:Item Already Owned)

我的问题是,我如何检查应用内购买之前是否购买过?

【问题讨论】:

    标签: android in-app-purchase


    【解决方案1】:
     mIabHelper.queryInventoryAsync(true, "your_sku", mGotInventoryListener);
    
    // Listener that's called when we finish querying the items and subscriptions we own
        IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
            public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
                Log.d("PAY", "Query inventory finished.");
    
                // Have we been disposed of in the meantime? If so, quit.
                if (mIabHelper == null) return;
                        Purchase purchase = inventory.getPurchase("your_sku");
                        if (purchase != null) {
                            //purchased
                        }                    
                }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2012-08-27
    • 2015-01-21
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多