当前位置: 首页 > 知识库问答 >
问题:

OnIabPurchaseFinishedListener不调用应用内购买订阅v3

司浩壤
2023-03-14

我试图回到IabHelper。OnIabPurchaseFinishedListener当购买结束时,我的订阅,但问题是它没有调用购买完成。

我已经尝试了onactive结果,但仍然不能在这里工作是我的代码块,我正在扩展下面的片段

public class ConfirmationScreen extends Fragment {

mHelper = new IabHelper(getActivity(), base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
    public void onIabSetupFinished(IabResult result) {
        Log.d(TAG, "Setup finished.");

        if (!result.isSuccess()) {
           // Oh noes, there was a problem.
           complain("Problem setting up in-app billing: " + result);
           return;
        }

        // Have we been disposed of in the meantime? If so, quit.
        if (mHelper == null) return;

        // IAB is fully set up. Now, let's get an inventory of stuff we own.
        Log.d(TAG, "Setup successful. Querying inventory.");
        //  mHelper.queryInventoryAsync(mGotInventoryListener);
    }
});

IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
    public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
        Log.d(TAG, "Query inventory finished.");
        // Have we been disposed of in the meantime? If so, quit.
        if (mHelper == null) return;

        // Is it a failure?
        if (result.isFailure()) {
            complain("Failed to query inventory: " + result);
            return;
        }
        Log.d(TAG, "Query inventory was successful.");

        /*
         * Check for items we own. Notice that for each purchase, we check
         * the developer payload to see if it's correct! See
         * verifyDeveloperPayload().
         */

        Purchase gasPurchase = inventory.getPurchase(SKU);
        if (gasPurchase != null && verifyDeveloperPayload(gasPurchase)) {
            Log.d(TAG, "We have gas. Consuming it.");
            mHelper.consumeAsync(inventory.getPurchase(SKU), mConsumeFinishedListener);
            return;
        }
    }
};

//Callback for when a purchase is finished
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
        Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
        // if we were disposed of in the meantime, quit.
        if (mHelper == null) return;
        Log.d(TAG, "Purchase successful.");
        if (purchase.getSku().equals(SKU)) {
            //bought 1/4 tank of gas. So consume it.
            Log.d(TAG, "Purchase is gas. Starting gas consumption.");
        }
    }
};

我提到了这个链接

共有2个答案

师腾
2023-03-14

您需要在FragmentActive上实现onActivityResult方法

这必须放在活动中,活动实际上运行:

mHelper.launchPurchaseFlow(...);
梁丘诚
2023-03-14

您需要在FragmentActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Pass on the activity result to the helper for handling
    if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
        // not handled, so handle it ourselves (here's where you'd
        // perform any handling of activity results not related to in-app
        // billing...
        super.onActivityResult(requestCode, resultCode, data);
    } else {
        Log.d(TAG, "onActivityResult handled by IABUtil.");
    }
}
 类似资料:
  • 准备工作 付费应用协议 如果你还没有,你需要在 iTunes Connect 签署付费应用协议, 并设置您的银行和税务信息。 iTunes Connect 开发人员帮助: 协议、税务和银行概述 创建您的应用内购买 然后,您需要在iTunes Connect中配置您的应用内购买,并包含名称,定价和说明等详细信息,以突出显示您的应用内购买的功能。 iTunes Connect开发人员帮助:创建应用程序

  • 这个问题(Android应用内计费动态产品列表)是3年前问过的。动态的应用内购买项目在Android上还是不可用的吗? 我之所以要实现这种功能,是因为我的应用程序提供了一种让某些用户创建自己的应用内购买的方式,供其他人购买。

  • 根据谷歌的教程,我用播放计费库1.0实现了应用内购买。我只有一个购买项目,当它解锁时,我会显示一条长度为吐司的吐司消息。LENGTH_SHORT。然而,吐司会在那里停留10秒钟,所以我假设它会被多次调用。它不会发生,当我通过queryPurchase解锁它(如果有人购买它更早,并在此期间重新安装应用程序)。 有人知道为什么祝酒会持续这么久/为什么会被多次叫来吗? 在我的BillingManager

  • 我正在开发一个应用内购买。我已将该应用程序放在 Play 商店进行封闭测试。在帐户设置中使用测试人员电子邮件和添加的测试人员电子邮件。我在 Play 商店中有 2 个托管产品。我在调试模式下测试了 android.test.purchased 并且工作正常。但是在我购买 SKU 时从 Play 商店安装的发布版本中,它成功完成了购买,但由于某种原因我收到了失败响应。我试图弄清楚这一点。此外,我在购

  • 问题内容: 我在应用程序购买中玩了几天,直到我尝试在应用程序商店验证收据之前一切正常,因为我一直在找回无效状态。 我将收据数据传递到我的PHP服务器,然后从那里转发到应用商店,一旦收到有效的响应,我打算将收据数据添加到我的数据库中。 商店工具包编程指南和类引用对于这个特定领域并没有什么用,因为它们并没有真正给您提供任何示例,我确实找到了一篇有用的文章,对我有所帮助,但是仍然有些错误。 基本上,我想

  • 我在google play store中有一个应用程序,在添加计费3V以处理订阅时遇到了一些问题。任何新的订阅者在付款和付款完成并出现在谷歌控制台后都无法访问我的应用程序。 我希望能在我的应用程序中帮助我处理应用程序内购买,代码如下: public static void isUserHasSubscription(Context Context,onCheck onCheck){BillingC