android 在应用程序计费 v3 中使用 php

2023-11-25

我正在尝试在我的远程 php 服务器上验证应用程序计费 v3 中的 android。

但是,我的代码似乎有问题。

我认为这个 openssl_verify 函数有问题。

结果总是失败!

我找不到要使用 openssl_verify 验证的第一个参数。实际上,我很困惑第一个参数的合理格式是什么:(

你能帮我解决吗?

    $result = openssl_verify($data["purchaseToken"], base64_decode($signature), $key); // original // failed

下面是完整的测试代码。

    <?php
    $responseCode = 0;
    $encoded='{
            "orderId":"12999763169054705758.1111111111111",
                    "packageName":"com.xxx.yyy",
                    "productId":"test__100_c",
                    "purchaseTime":1368455064000,
                    "purchaseState":0,
                    "purchaseToken":"tcmggamllmgqiabymvcgtfsj.AO-J1OwoOzoFd-G-....."
}';
$data = json_decode($encoded,true);

$signature = "tKdvc42ujbYfLl+3sGdl7RAUPlNv.....";

$publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2kMri6mE5+.....";

$key = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($publicKey, 64, "\n") . "-----END PUBLIC KEY-----";
$key = openssl_get_publickey($key);
if (false === $key) {
        exit("error openssl_get_publickey");
}
var_dump($key);

$result = openssl_verify($data["purchaseToken"], base64_decode($signature), $key); // original // failed
//$result = openssl_verify($data, base64_decode($signature), $key); // failed
//$result = openssl_verify($encoded, base64_decode($signature), $key); // failed
//$result = openssl_verify(base64_decode($data["purchaseToken"]), base64_decode($signature), $key); // failed
//$result = openssl_verify(base64_decode($signature),$data["purchaseToken"],  $key,OPENSSL_ALGO_SHA512 ); // failed
if ($result == 1) {
        echo "good";
} elseif ($result == 0) {
        echo "bad";
} else {
        echo "error";
}
echo($result);

谢谢 :)


你传错了$data值转化为openssl_verify()。该值应该是您从 Google Play 获取的完整 JSON 字符串,而不是其中的购买令牌。 JSON 字符串保持不变非常重要,因为即使您向其中添加空格或换行符,签名也将不再起作用。

您在上面的代码中所需要做的就是更改此行:

$result = openssl_verify($data["purchaseToken"], base64_decode($signature), $key);

to

$result = openssl_verify($data, base64_decode($signature), $key);

假设您使用正确的公钥并且 JSON 购买字符串有效,您应该会成功。我很确定您的 JSON 字符串不是来自 Google 的原始字符串,因为来自 Google 的字符串不包含换行符。这将是一长行 JSON 文本。确保这就是您要传递的内容openssl_verify().

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

android 在应用程序计费 v3 中使用 php 的相关文章

  • ScrollView 中的 ViewPager 不会垂直滚动

    我有一个layout有一个ViewPager自定义内部ScrollView并且 ViewPager 不会垂直滚动 自定义 ScrollView 用于修复使用 ScrollView 进行可怕的选项卡滑动的问题 是的 有足够的内容可以滚动 我已
  • Android 拒绝来电

    我想拒绝android中的传入 我从这些链接中看到了很多代码 Android 完全控制手机 信息亭模式 可能吗 如何 https stackoverflow com questions 7121508 android taking comp
  • 如何使用 Magento 测试 cron?

    首先我需要了解 Magento cron 是如何工作的 我知道 cron 在 Linux 上如何工作 使用crontab e 我知道我需要设置 Magento 的 cron php 定期运行 但是当我在 magento 配置文件中定义 cr
  • 在php word中将两个徽标对齐在同一行

    我使用 php word 添加了两个徽标 但两个徽标不在同一行 我希望两个徽标位于同一行 如下所示 我的错误在哪里 if file exists logo table gt addRow table gt addCell 20000 arr
  • RecyclerView 未按预期滚动

    我有一个项目 我使用水平回收器视图 并且我想将一个元素居中 我的实现有效 但并非在所有情况下都可以检查此 GIF 正如您可能注意到的 如果我从左边来 它会正确滚动 如果我从右边来 它会过度滚动很多 我不知道如何停止也不知道如何解决这个问题
  • Php mail() vs Yahoo:有人可以简单解释YAHOO从php邮件功能接收邮件所需的步骤吗?

    我已经看到了关于这个主题的数千个类似问题 并且可以肯定的是我知道 标记为重复问题 SO中的事情 然而 仍然不清楚如何或必须做什么 简单来说 才能从 PHP mail 函数接收雅虎收件箱电子邮件 在雅虎网站上 他们提供了一个示例脚本来发送邮件
  • 提交表单时显示警告框

    所以我有这两页 pageOne php and pageTwo php 表格在pageOne php
  • Laravel 中 Twitter Bootstrap 导航的自动活动类

    和大多数人一样 我正在使用 Twitter Bootstrap 来构建我目前在 Laravel 中开发的网站 到目前为止 我很喜欢使用 Laravel 作为与 Rails 相当的 PHP 但我想知道是否有更好的方法来制作导航栏 我试图确保我
  • Apache POI 的 ProGuard 设置

    我正在构建一个使用 Apache POI 库的应用程序 当我调试应用程序 在不运行 Proguard 的情况下编译它 时 一切都运行良好 但是在导出 APK 后 当我运行应用程序并打开 Excel 文件时 出现以下异常 RuntimeExc
  • 如何将 Facebook App 的 accessToken 添加到 GraphRequest.newGraphPathRequest 方法? [复制]

    这个问题在这里已经有答案了 我复制了下面的代码Facebook Graph Api console 但是 Android Studio 无法识别accessToken 我已经创建了一个Facebook App我得到了它acesstoken
  • android listactivity onCheckedChangeListener

    我正在开发一款应用程序 并且我有一个ListActivity 其选择模式设置为choice mode multiple 现在我想重写方法 当一项被调用时调用该方法选中 未选中 我发现onCheckChanged 方法仅针对RadioGrou
  • 使用react-native使用WebView设置用户代理

    我想修改 WebView 中的用户代理字符串 以便在服务器端我可以检测到请求来自我的反应本机应用程序 我想使用 WebView 中的 source 属性来做到这一点 对于 IOS 和 Android 我该如何执行此操作 您只需将其设置为 W
  • 如何在Android中将字体粗细设置为细、常规

    我有 3 个文本视图 我需要将它们的粗细设置为 轻 常规 和 压缩 有人可以帮助我如何在 Android 中实现这一目标吗 Use android textStyle on a TextView设置文本样式 例如bold italic或正常
  • Firebase:获取对第一个项目/元素的引用

    我正在尝试获取对 firebase Array 中第一个项目的引用 就我而言 它会是 ElmmycgjS1Nvq albums IrdMMds 但我不确定如何构造查询 dbRef child ElmmycgjS albums child n
  • Jpgraph:如何在php中设置组条形柱形图的标签

    这是我的 jpgraph 演示代码
  • PDF:在现有 PDF 文件中插入一行文本

    我有一个 PDF 文件 我希望在所有页面 前两页除外 的页脚上添加一行纯文本 不是徽标或类似内容 有谁有一个如何做到这一点的例子 用任何语言 Update 原始 PDF 是用 Scribus 制作的 我可以完全控制它 因此 如果更容易进行查
  • 如何从下到上连续移动图像?

    我一直在研究这个例子http obviam net index php a very basic the game loop for android http obviam net index php a very basic the ga
  • Android Nougat 无法显示某些矢量文件 (Resources$NotFoundException)

    我一直在开发一个包含许多矢量图形的应用程序 最近我开始在 Nougat 上测试它 发现它立即崩溃了 logcat 在加载矢量时显示 Resources NotFoundException 这让人想起带有矢量图形的 Android 早期版本中
  • 如何获取 EC2 实例的 CloudWatch 指标数据

    我想获取我的 EC2 实例的 Cloudmetrics 数据 以便我可以使用这些数据绘制图表并将其显示在我的 Android 设备上 我怎么做 有相同的示例程序或教程吗 提前致谢 这就是我正在做的 private static void f
  • 如何对“2-1”这样的字符串进行数学计算以产生“1”?

    我只是想知道 PHP 是否有一个函数可以接受像这样的字符串2 1并产生它的算术结果 或者我必须手动执行此操作explode 获取算术运算符左侧和右侧的值 我知道这个问题很老了 但我昨晚在寻找不太相关的东西时遇到了它 而且这里的每个答案都很糟

随机推荐