Billingservice Android - 无签名

2023-12-01

我遵循了以下很棒的教程:http://blog.blundell-apps.com/simple-inapp-billing- payment/

我已经完成了教程中所说的所有内容,并且已将所有内容重新阅读了 3 遍,但我仍然没有收到签名intent.getStringExtra(INAPP_SIGNATURE) in onReceive() : BillingReceiver.java

这使我的应用程序崩溃,因为应用程序无法比较签名来验证购买是否正确完成。

这是我的 BillingReceiver 的样子:

public class BillingReceiver extends BroadcastReceiver {

    private static final String TAG = "BillingService";

    @Override
    public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Log.i(TAG, "Received action: " + action);
    if (ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
        String signedData = intent.getStringExtra(INAPP_SIGNED_DATA);
        String signature = intent.getStringExtra(INAPP_SIGNATURE);
        Log.e(TAG, "<!-- SIGNATURE : "+ intent.getExtras().getString("inapp_signature"));


        Log.i(TAG, "<!-- SIGNATURE : "+intent.getStringExtra(INAPP_SIGNATURE));

        purchaseStateChanged(context, signedData, signature);
    } else if (ACTION_NOTIFY.equals(action)) {
        String notifyId = intent.getStringExtra(NOTIFICATION_ID);
        notify(context, notifyId);
    } else if (ACTION_RESPONSE_CODE.equals(action)) {
        long requestId = intent.getLongExtra(INAPP_REQUEST_ID, -1);
        int responseCodeIndex = intent.getIntExtra(INAPP_RESPONSE_CODE, C.ResponseCode.RESULT_ERROR.ordinal());
        checkResponseCode(context, requestId, responseCodeIndex);
    } else {
       Log.e(TAG, "unexpected action: " + action);
    }
    }

    private void purchaseStateChanged(Context context, String signedData, String signature) {
            Log.i(TAG, "purchaseStateChanged got signedData: " + signedData);
            Log.i(TAG, "purchaseStateChanged got signature: " + signature);
            BillingHelper.verifyPurchase(signedData, signature);
    }

    private void notify(Context context, String notifyId) {
            Log.i(TAG, "notify got id: " + notifyId);
            String[] notifyIds = {notifyId};
            BillingHelper.getPurchaseInformation(notifyIds);
    }

    private void checkResponseCode(Context context, long requestId, int responseCodeIndex) {
            Log.i(TAG, "checkResponseCode got requestId: " + requestId);
            Log.i(TAG, "checkResponseCode got responseCode: " + C.ResponseCode.valueOf(responseCodeIndex));
    }
}

您的测试设备上的主帐户是否与您的 Google Play 开发者帐户相同?

否则,您将无法在 android.test.* 静态响应上获得签名,除非该应用之前已在 Play 上发布。

请参阅表http://developer.android.com/guide/market/billing/billing_testing.html#static-responses-table以获得全套条件。

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

Billingservice Android - 无签名 的相关文章

  • Android 主机意图过滤器通配符

    是否可以在 android host 属性上使用通配符 就像是 android host site com android pathPattern android pathPrefix m android scheme http gt Or
  • 按回键隐藏软键盘

    我有一个EditText in an Activity我希望当我打开它时它处于活动状态并且软键盘处于打开状态Activity 这是我的xml for EditText
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • 为什么我将可绘制文件重命名为 .9.png 后出现“Some file crunching failed”?

    我正在测试 9 patch 图像 在一切正常之前 我重命名drawable file ic button beat box default png to ic button beat box default 9 png 然后我收到错误 某些
  • Android Lollipop prepareAsync() 需要很长时间才能返回

    在 Samsung Galaxy Note 4 上的 Android Lollipop 几周前刚刚从 4 4 4 更新 上 prepareAsync 几乎需要 20 秒来加载实时流 在 4 4 4 上 只需要 2 3 秒 并且没有错误 见下
  • 连接到不可发现的蓝牙设备

    我正在开发一个安卓应用程序 只是一个一般性问题 是否可以连接到公开不可发现的设备 提前致谢 如果您之前已与该设备配对 则即使该设备未处于可发现模式 也可以再次连接到该设备 参见这篇文章 以编程方式连接到配对的蓝牙设备 https stack
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • 从多个选项卡中的编辑文本字段获取文本

    我正在尝试创建一个使用选项卡作为输入表单的 Android 应用程序 基本上 我希望对其进行设置 以便用户可以在一个选项卡上输入一些信息 然后提交该信息 或者转到另一个选项卡并输入更多信息 然后从两个选项卡提交信息 我正在使用操作栏和片段来
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • 如何从android获取应用程序安装时间

    我尝试了一些方法 但没有成功 请帮助我 PackageManager pm context getPackageManager ApplicationInfo appInfo pm getApplicationInfo app packag
  • 加快 ImageView 中的缩放功能

    我目前正在处理非常大的图像 7 10mb 由于多种原因无法调整大小或压缩 现在 我们的想法是在自定义 ImageView 中显示它们 使用户能够进行双击缩放 捏合缩放等 我使用这个库来完成这项工作 https github com Mike
  • 在 AppAuth-Android 中注销

    我有一个用JAVA开发的Android应用程序 对于这个应用程序 我使用的是身份服务器4 https github com IdentityServer IdentityServer4作为我的 STS 一切正常 但我找不到任何注销的实现Ap
  • jar 中的 apklib 有什么优点?

    我正在关注这个问题 https stackoverflow com questions 6059502 whats the difference between apklib and jar files但它并没有完全回答我的问题 jar 中
  • 如何在Android Compose中使用otf类型字体文件?

    我正在学习使用 Android Jetpack Compose 现在我有一个正则 otf字体文件在资产 字体 我想在文本中使用它 java lang RuntimeException Font asset not found commonu
  • 如何从 Facebook 邀请好友到 Android 应用程序? - 给出错误

    我正在开发一个 Android 应用程序 我正在努力将 邀请朋友 功能添加到我的应用程序中 它转到我的AppLinkUrl成功但显示错误 我的清单代码如下
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • Android - iphone 风格 tabhost [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • android:layout_alignParentBottom 在没有显式布局高度作为 ListView 中的行的情况下使用时会被忽略

    当我使用RelativeLayout与任一fill parent or wrap content作为高度和一个指定的元素 android layout alignParentBottom true 它被忽略并在顶部对齐 设置高度Relati
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da

随机推荐

  • 如何在 Swift 3 中将核心数据导出到 CSV?

    我想导出我的实体 Log 的所有数据 我找到了这个代码示例 https gist github com kenechilearnscode 2d5d35f550f593332319但这对我不起作用 它不添加核心数据的数据 我得到的唯一输出是
  • 在登录时将多个身份验证提供商与 Firebase 链接

    我希望在用户登录应用程序时链接多个身份验证提供商 Firebase 文档提供了一种将新的身份验证提供程序与已登录的身份验证提供程序链接的方法 但我希望在登录 注册时进行链接 以便用户可以选择任何身份验证提供程序 而无需手动链接它们 对此有何
  • Python正则表达式匹配所有5位数字但不匹配更大的数字

    我正在尝试将分布在 HTML 网页中的 5 位优惠券代码进行字符串匹配 例如 53232 21032 40021等等 我可以处理任何 5 位数字符串的简单情况 0 9 5 尽管这也匹配 6 7 8 n 位数字 有人可以建议我如何修改这个正则
  • 重新运行不稳定的 JUnit 测试,以防失败

    我在 Jenkins 中有一个工作 A 用于我的自动化测试 如果另一个工作 B 构建成功 就会触发该测试 作业 A 运行多个测试 有些测试很不稳定 所以我想再次运行它们几次 让它们有机会通过 这样我的构建就不会不稳定 失败 有什么插件我可以
  • gdb 失败并出现“无法找到进程 ID 的 Mach 任务端口”错误

    我的应用程序运行良好 但 gdb 无法调试它并出现以下错误 gdb run Starting program path to app Unable to find Mach task port for process id 83767 os
  • BLE 连接后未调用 didDiscoverServices

    我正在使用需要验证的 BLE 设备 我使用的BLE代码如下 Pragma Bluetooth Methods func centralManagerDidUpdateState central CBCentralManager if cen
  • alamofire multipartformdata 使用 urlrequest

    我想使用Alamo火多部分表单数据使用请求 例如我使用上传API let profile self photoView imageView image let parameters String String homePageUrl web
  • 如何用CSS将图像放入div中?

    我希望将所有图像都放在 CSS 中 我知道的唯一方法是将它们作为背景图像放入 但这个解决方案的问题是你永远不能让 div 占据图像的大小 所以我的问题是 最好的方法是什么 div img src div in CSS 这个答案由Jaap d
  • R 中的等值线地图 - TIGER Shapefile 问题

    有一个关于使用 R 进行绘图的问题 特别是有关 R 中的分区统计图的问题 我有一个分配给某个区域的邮政编码数据集和一些相关数据 数据集是here 我的最终数据格式是 区域 ID 邮政编码 概率值 客户计数 区域概率和区域客户总数 我试图通过
  • CakePHP HABTM 表单提交

    我有两张桌子 questions and tags 具有 HABTM 关系 添加问题时 我希望能够为问题指定一个标签 这只是第一个标签 以后可以添加更多标签 标签是从他们的桌子上拉出来的 如何配置我的应用程序 以便在添加问题并指定标签时 连
  • Django 模型中的任意类型数据

    我有一个模型 比如说 Item 我想在其上存储任意数量的属性 例如标题 描述 发布日期 我希望它们不仅仅是字符串 还有 python 类型 所以字符串 布尔值 日期时间等 我在这里有什么选择 由于所有值的数据库类型相同 因此具有单独的名称
  • 对 MERN Stack 等 Web 和 API 解决方案进行身份验证和授权的最佳方式是什么?

    我正在尝试找到实施授权的最佳方法 此时 我唯一需要的是一个简单的免费帐户 但稍后我可能会包含使用 Stripe 等支付系统的 高级 帐户的用户角色 我已经开始阅读和尝试 Auth0 但后来发现了一些其他方法可以做到这一点 Passport
  • Word 非数字中的 rmarkdown 方程是 q‌u‌e‌s‌t‌i‌on 标记

    在 RStudio 中 rmarkdown 方程符号未在 Word 中重现 当我点击Knit Word时 A pi r 2 在Word文档中变成这样 2 html pdf都没有问题 None
  • 如何影响 Shopware 6.4.13.0 中的模板加载顺序

    这与Shopware 6 插件按什么顺序加载 当覆盖不同插件中的模板时 加载顺序很重要并且取决于插件安装日期 我相信在最近的 Shopware 版本中可以以更好的方式解决这个问题 这是如何运作的 您可以从上一个版本开始添加getTempla
  • php 会话在 Android 应用程序中被破坏

    我正在android中构建一个登录应用程序 其中我点击一个url 带有用户名和密码 直到该部分它工作正常 但之后每当我点击一个url 一旦用户通过身份验证 它什么都不返回 即错误消息 例如请先登录 然而 它在非常相似的 iPhone 应用程
  • 更新面板中的按钮正在执行完整的回发?

    我正在遵循一个如何使用此处的更新面板的简单示例 http www asp net Ajax Documentation Live tutorials IntroductionUpdatePanel aspx 在更新面板之外 我有另一个 ht
  • 在 R 中动态子集调查设计对象

    我试图弄清楚如何动态地对调查设计对象进行子集化 我已经构建了循环来发送字符串 但不知道如何删除引号 因此 R 将其读取为调用 我想循环遍历这样的一些 尽管这显然会中断 因为 SUBSET VARIABLE in 4 需要是一个调用而不是一个
  • Java字节码与不同版本的Java兼容吗?

    如果我使用 Java 5 代码将应用程序编译为字节码 生成的 class 文件能够在 Java 1 4 下运行吗 如果后者可以工作并且我正在尝试在我的 Java 1 4 应用程序中使用 Java 5 框架 是否有有什么我应该注意的吗 Nop
  • JSP形式的空字段是null还是“”?

    当表单传递到 servlet 时 是空字段 还是 null 例如 在一个表单中 您将名字作为字段 将姓氏作为字段院长 名字 姓那么它在 servlet 中注册为什么呢 提前致谢 Dean 简单 如果参数名称存在 但值不存在 则它为空 如果参
  • Billingservice Android - 无签名

    我遵循了以下很棒的教程 http blog blundell apps com simple inapp billing payment 我已经完成了教程中所说的所有内容 并且已将所有内容重新阅读了 3 遍 但我仍然没有收到签名intent