【问题标题】:Not receiving result of Android In-App Purchase using API v3使用 API v3 未收到 Android 应用内购买的结果
【发布时间】:2015-06-05 02:18:15
【问题描述】:

我正在尝试使用 Android In-App Billing 第 3 版 API 并遇到以下问题:

如果我使用launchPurchaseFlow 开始购买,它会按预期显示购买对话框,让我完成购买。购买完成后,如果我再次请求 SKU 详细信息,则该产品将被报告为已拥有。因此,购买过程本身按预期工作。

购买通知本身不起作用。我传递给launchPurchaseFlowOnIabPurchaseFinishedListener 永远不会被调用。无论我取消购买还是完成购买。

我为 IabHelper 类打开了日志记录,并在 LogCat 中得到以下输出:

IabHelper: Starting in-app billing setup.
IabHelper: Billing service connected.
IabHelper: Checking for in-app billing 3 support.
IabHelper: In-app billing version 3 supported for <my app>
IabHelper: Subscriptions AVAILABLE.

IabHelper: Starting async operation: refresh inventory
IabHelper: Querying owned items, item type: inapp
IabHelper: Package name: <my app>
IabHelper: Calling getPurchases with continuation token: null
IabHelper: Owned items response: 0
IabHelper: Continuation token: null
IabHelper: Querying SKU details.
IabHelper: Got sku details: <my test product>
IabHelper: Querying owned items, item type: subs
IabHelper: Package name: <my app>
IabHelper: Calling getPurchases with continuation token: null
IabHelper: Owned items response: 0
IabHelper: Continuation token: null
IabHelper: Querying SKU details.
IabHelper: Ending async operation: refresh inventory

IabHelper: Starting async operation: launchPurchaseFlow
IabHelper: Constructing buy intent for <my test product>, item type: inapp
IabHelper: Launching buy intent for <my test product>. Request code: 1

到此为止。

我的活动在显示购买对话框时收到onPause() 事件,在对话框再次消失时收到onResume() 事件(如果购买被取消或完成)。这两个事件目前在我的应用程序中除了 System.out.println(...) 之外什么都不做。

这是 API 中的错误吗?还是我需要先设置一些东西?任何帮助将不胜感激。

【问题讨论】:

    标签: android api in-app-purchase in-app-billing


    【解决方案1】:

    翻遍IabHelper的源码,我发现了问题:

    购买意图的结果将被发送到Activity的onActivityResult(...)方法。从那里,它需要手动转发到 IabHelper's handleActivityResult(...) 方法,如下所示:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (myIabHelper.handleActivityResult(requestCode, resultCode, data)) return;
        super.onActivityResult(requestCode, resultCode, data);
    }
    

    这解决了成功和中止购买的问题。

    “耶!”获取全面的文档...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      相关资源
      最近更新 更多