Google InAppBilling onPurchaseStateChange 从未被调用

2024-01-20

回调方法onPurchaseStateChange从未被调用过。我做了自己的演示应用程序,并尝试使用谷歌提供的演示(地下城)。

我正在打电话requestPurchase(String productId, String payload)来自onClick method.


    @Override
    public void onClick(View view) {
        if(view == requestPurchaseButton) {
            mBillingService.requestPurchase("android.test.purchased", "10");
        }
    }

回调方法onRequestPurchaseResponse(Request, ResponseCode)叫做。 这responseCode这里给出了值RESULT_OK。这样请求就已经发送到服务器了。


       @Override
       public void onRequestPurchaseResponse(RequestPurchase request,
                ResponseCode responseCode) 
       {
              if(responseCode == ResponseCode.RESULT_OK) {
            Log.d("AJ", "onRequestPurchaseResponse.ResponeCode.RESULT_OK");
            textView.append(request.mProductId + "\n");
          } else if(responseCode == ResponseCode.RESULT_USER_CANCELED) {
                      //doesn't go here
          } else { 
                     //doesn't go here
          }
       }

该方法的 javadoc 指出

当我们收到来自 Market 的针对我们发出的 RequestPurchase 请求的响应代码时,将调用此函数。这不用于任何购买状态更改。所有购买状态更改均在 onPurchaseStateChange(PurchaseState, String, int, long) 中接收。这用于报告各种错误,或者用户退出并没有购买该商品。可能的响应代码有: RESULT_OK 表示订单已成功发送到服务器。当订单被收取或取消时, onPurchaseStateChange() 将在稍后调用(购买状态为 PURCHASED 或 CANCELED)。如果市场管理的商品的订单已发送到服务器,也可能会出现此响应代码。 RESULT_USER_CANCELED 表示用户没有购买该商品。 RESULT_SERVICE_UNAVAILABLE 表示我们无法连接到 Android Market 服务器(例如,如果数据连接断开)。 RESULT_BILLING_UNAVAILABLE 表示尚不支持应用内结算。 RESULT_ITEM_UNAVAILABLE 表示此应用程序出售的商品在服务器端目录中不存在(或未发布)。 RESULT_ERROR 用于任何其他错误(例如服务器错误)。

但回调方法


    @Override
        public void onPurchaseStateChange(PurchaseState purchaseState,
                String itemId, int quantity, long purchaseTime,
                String developerPayload) {
            Log.d("AJ", "onPurchaseStateChanged");

        }

从未被调用过。

我错过了什么吗?地下城(Google 提供的演示)和onPurchaseStateChange不被调用。

The 应用内计费测试 http://developer.android.com/guide/market/billing/billing_testing.html文档显示我们必须能够达到已购买状态。但当我尝试时,我只看到

android.test.purchased:发送购买请求。


我也遇到了同样的问题,但只是为自己解决了。我在代码中使用了我工作的公钥,但尝试在我的个人手机上运行该应用程序。由于我是用我的个人帐户在手机上登录的,我猜谷歌正确地认为我不是开发者。我认为他们会发回一条错误消息。当我将个人密钥插入代码后,它在我的手机上运行良好。因此密钥可能也不适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google InAppBilling onPurchaseStateChange 从未被调用 的相关文章

随机推荐

  • SQL Server SMO - 备份 - 如何确定失败/成功?

    如果使用 SMO 执行备份 成功完成后 我测试 SqlError 是否为 null 认为备份已完成且没有错误 但是 正如您所看到的 它实际上返回了 0 类编号 3014 的错误 这意味着成功 所以问题是 问 如何确定备份是否成功完成 以及如
  • 与 jasperReports 完全混淆

    在开始工作前两天 我才刚刚接触 jasper 我下载了 jasperReports 和 iReports 并在我的 salesforce 帐户中安装了 iReports 并安装了 jasper4salesforce 但没有找到任何 jasp
  • jQuery - 内联调用函数

    我正在尝试将一个变量传递给内联 jQuery 函数 即 使用onMouseOver function 在实际链接内 这是图像映射中的区域标记 仅当我将其放在之前时才会调用该函数 document ready function 行 但这样做会
  • 大文件上传(WebException:连接意外关闭)

    UPDATED 看帖子 3 https stackoverflow com questions 1060966 big files uploading webexception the connection was closed unexp
  • android manifestPlaceholders - 如何使用布尔值

    我创建的清单占位符如下所示 manifestPlaceholders appDrawerName Staging canExport true 我正在尝试使用它来设置活动的以下导出属性
  • Forge Viewer 在多模型上下文中选择

    我们的扩展目前利用viewer select 和模型中的dbId 列表 我们的客户希望在同一查看器中看到辅助模型 我们让他们能够在加载第一个模型后加载参考模型 然而 我们遇到了多个模型的问题 观众从其中一个模型中进行选择以外当我们调用vie
  • 有没有办法在Delphi中仅跟踪项目源?

    我正在使用 Delphi 2010 我想知道是否有一种方法可以跟踪项目中的代码 而无需跟踪对包含的 VCL 的调用 For example you put in a breakpoint and then use Shift F7 to t
  • CanCan - 访问被拒绝 - 如何让 CanCan 在 LOG 中指定 为什么?

    我正在努力实现 CanCan 由于某种原因 当我尝试获取有关模型权限的具体信息时 CanCan 不断给出 访问被拒绝 的信息 我不明白为什么 有没有办法让 CanCan 具体说明 也许是在日志中或在开发过程中了解为什么访问被拒绝 比如 没有
  • 非静态模板成员:可能吗?

    是否可以在类中创建非静态模板字段 如果没有 如何解决 此类字段应根据需要在编译时创建 Example 我有很多B 类 如B1 B2 B3 在实际情况中 它们有更有意义的名称 我想创建一个类D具有非静态模板函数add
  • R - 绘制六边形镶嵌

    我想生成一些正方形图 其中有六边形数组 如图所示here http gwydir demon co uk jo tess bighex htm 我想绘制规则 几何规则 和异常六边形镶嵌 所以我认为 sp 包中的工具不起作用 下面是我使用 o
  • 如何将 LinqPAD 中的数据导出为 JSON?

    我想创建一个 JSON 文件作为简单 Web 原型设计练习的一部分 LinqPAD 非常适合以我需要的形式从数据库访问数据 但是我无法轻松地将其作为 JSON 获取 我并不真正关心模式是什么 因为我可以调整我的 JavaScript 以处理
  • 如何在 C# 中检查 Microsoft Edge Chromium 是否安装

    C 中检测 Microsoft Edge Chromium 是否已安装并且同时不检测 Edge 仍在系统中而 Chromium 应覆盖 旧 Edge 的最佳方法是什么 最好使用 Windows 注册表 For 检测旧边缘 https sta
  • 使用 jest 和 vue-test-utils 进行 Vue 测试无法解析通过 app.component() 引入的组件

    我目前正在尝试向我的 Vue 3 Vite 应用程序引入测试 我为此使用 jest 和 vue test utils 这工作正常 除了当我尝试安装包含我的基本组件的组件时 我在 app mount app 之前用 app component
  • Android:从应用程序执行二进制文件

    正如标题所示 我想从我的 android 应用程序执行一个二进制文件 我使用 NDK 创建了一个二进制文件 并可以使用 adb shell 运行它 然后我尝试使用 Runtime exec 运行它 但权限被拒绝 我尝试了不同的目录并更改文件
  • 更改 Android Studio 默认模板中导航抽屉图标的颜色

    Android Studio 中新的默认导航抽屉活动模板 在菜单文件中定义其标题和图标activity main drawer像这样
  • RadioGroup 按钮在 listView 滚动后失去其状态

    I struggle with a common problem however I can t see the solution to it What I m trying to achieve is to display the lis
  • 是否dispatch_async(dispatch_get_main_queue(), ^{...});等到完成?

    我的应用程序中有一个场景 我想在一个方法中执行一些耗时的任务 其中包括一些数据处理和 UI 更新 我的方法看起来像这样 void doCalculationsAndUpdateUIs DATA PROCESSING 1 UI UPDATE
  • 为什么我的文件不存在,即使我给了它一个存在的路径?

    我的 if 条件为imgFile exist 给我错误 但当 Log d 打印其结果时 我可以看到该文件存在于路径中 我只是尝试从路径加载图像以将其作为活动微型图像的背景 我的清单中也有读 写权限android permission WRI
  • 如何使用 json.net 进行 json 的递归下降?

    我正在尝试使用 json net 解析 json 文件 该文件看起来像这样 X Title foo xxxx xxxx Y ZZ Title bar 我试图递归这个结构来处理具有 Title 属性的所有对象 但我很困惑JToken JPro
  • Google InAppBilling onPurchaseStateChange 从未被调用

    回调方法onPurchaseStateChange从未被调用过 我做了自己的演示应用程序 并尝试使用谷歌提供的演示 地下城 我正在打电话requestPurchase String productId String payload 来自on