标签: android-inapp-purchase

在 Google 发布者 api Subscriptions.Get 上获取错误 400 测试订阅自动续订

我正在尝试使用 Google Publisher API 对我的 Android 应用程序的订阅进行后端升级/降级操作。

我在 Alpha 通道中发布了该应用程序,并让一些测试人员进行“测试”购买。在生成订阅的同一天,一切看起来都很好。我可以使用购买令牌查看有效数据,调用方法:

Purchases.Subscriptions.Get
Run Code Online (Sandbox Code Playgroud)

我的问题是,当“测试”订阅自动续订(第二天)时,看起来购买令牌不再可用,当我调用该方法时:

Purchases.Subscriptions.Get
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

购买令牌与包名称不匹配。[400]

看起来当“测试”订阅自动续订时,购买令牌也会发生变化。

  • 有人有我同样的问题吗?
  • 有什么想法为什么购买令牌会在订阅自动续订时发生变化吗?
  • 即使在自动续订后,购买令牌不应该始终保持不变吗?

android in-app-purchase android-inapp-purchase

5
推荐指数
0
解决办法
1164
查看次数

Android 订阅 - 获取可靠的介绍性价格信息

我有一个订阅项目,介绍价格为 1 个周期。我可以通过getIntroductoryPrice()方法在应用程序中获取这个价格。购买完成后,我无法获得服务器端订阅支付的确切价格。特别是:

  • 在应用程序方面,即使用户不符合条件(例如,他正在从全价订阅更改订阅),我从上面的电话中获得的“介绍价格”信息似乎是相同的。有没有办法查看用户实际支付的价格(从应用程序或服务器端?)

  • 在服务器端,当我从服务器请求购买收据时,我得到了关于正常价格的信息,没有介绍价格,也没有用户实际支付的费用。

有什么方法可以让我获得有关用户实际为包含介绍期的订阅支付了多少费用的可靠信息?

android android-billing in-app-subscription android-inapp-purchase play-billing-library

5
推荐指数
0
解决办法
263
查看次数

取消测试订阅在 Android 中无法正常工作

我知道 Google 最近更新的测试订阅更新比平时更快,以帮助测试。例如:1 个月 - 5 分钟。https://android-developers.googleblog.com/2018/01/faster-renewals-for-test-subscriptions.html

我购买了一个订阅,一分钟内我取消了它,我等了 5 到 10 分钟,然后我查询了订阅,mBillingClient.queryPurchases("subs")但我仍然可以在结果中看到被取消的项目,购买状态为 0(已购买)。我尝试了多次,在 queryPurchases 之前有超过 10-15 分钟的间隔,但没有运气。

即使经过漫长的等待,我也不知道为什么取消的商品会显示在购买中。

后来我注意到如果我清除 Playstore 数据和缓存,一切都会暂时有效。1 小时后,如果我尝试购买它显示的相同产品Error retrieving information from server[RPC:S-7:AEC-500 NWDB-WFVV-ZPAXE]

这是我们必须测试取消订阅的方式吗?如果我再次购买订阅,会出现什么错误?

在此处输入图片说明

android android-billing android-inapp-purchase

5
推荐指数
0
解决办法
206
查看次数

关于如何在服务器上验证 Google In App Purchase 购买令牌的说明?

鉴于我的服务器端点已收到与 Google In App Billing 购买相关的购买令牌,我该如何以编程方式对其进行验证并获得对其内容的访问权限?

我已经可以使用以下方法验证 Google登录令牌php

$client = new Google_Client(['client_id' => $client_id]);

$payload = $client->verifyIdToken($token);

if ($payload)
    return $payload['sub'];
Run Code Online (Sandbox Code Playgroud)

但是我将如何使用Google_Client来验证购买令牌并访问其内容。

它真的只是GET下面的 Ruby 示例一样将 a 发送到 Google 服务器的情况吗?

或者他们是Google_Client我应该调用的特定命令?

我开始认为这是在php使用中复制提到的 Ruby 代码OAuth2或其他东西的情况,因为 Google Docs 确实说一旦服务器拥有购买令牌:

使用 Google Play Developer API 的 Subscriptions 和 In-App Purchases 部分执行 GET 请求以从 Google Play 检索购买详细信息(Purchases.products 用于一次性产品购买或 Purchases.subscriptions 用于订阅)。GET 请求包括应用程序包名称、产品 ID 和令牌(购买令牌)。

如果可能的话只是想澄清一下?谢谢。

google-api-php-client android-inapp-purchase

5
推荐指数
1
解决办法
3268
查看次数

Android Google BillingClient 如何获取未消耗的物品?

问题:使用 Google Play BillingClient 1.1 我怎样才能只获得消费的购买?

背景:

在我们的 Android 应用程序中,我们希望使用新的

com.android.billingclient:billing:1.1
Run Code Online (Sandbox Code Playgroud)

这个想法是使用

BillingClient.queryPurchases(BillingClient.SkuType.INAPP)

为了获得用户所做的所有购买的“历史”。这就是 API 所说的(https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchases(java.lang.String))并且它工作正常。在旧版本中,您只会获得未消费的物品,这对于“购买历史”之类的东西是无用的。但是,如果我想知道是否有未消耗的物品,则无法再获得该信息。

对于queryPurchaseHistoryAsync().

Purchase 对象似乎不包含有关其消费的任何信息。我怎样才能只获得未消耗的物品(或至少过滤它们)?

请注意,我知道购买最终必须在我们的服务器端进行管理。但是,在此操作成功之前,最好知道哪个项目已被“兑换”(已消费)。所以我不能只依赖我们的后端。

- - 编辑 - -

来自查询的购买对象 (JSON) 都如下所示:

{
  "orderId": "[Id]",
  "packageName": "[just the app's package]",
  "productId": "[the SKU name]",
  "purchaseTime": 1531224460215,
  "purchaseState": 0,
  "purchaseToken": "[a purchase token]"
}
Run Code Online (Sandbox Code Playgroud)

所以没有什么似乎是消费状态。

---- 编辑 2 ----

我找到了一个(坏的)解决方案。当尝试消费购买时,谷歌用它的返回码告诉我它是否已经消费。但这对我们来说不是一个解决方案,因为我们希望将其“标记为未消费”,直到它在我们的服务器上被兑换。

android in-app-purchase in-app-billing android-inapp-purchase

5
推荐指数
1
解决办法
3659
查看次数

突然无法在 google play 控制台中添加应用产品(请检查下面的列表是否有问题。)

我的应用程序是在大约 4-5 个月前发布的。我的应用内产品运行良好。突然间我无法添加或编辑新的应用内商品。它显示错误“请检查下面的列表是否有问题。” ,但列表中没有问题。任何帮助将不胜感激。

控制台截图

google-play android-inapp-purchase

5
推荐指数
1
解决办法
694
查看次数

删除并重新安装应用程序后如何查看购买历史记录

我正在开发一个允许用户使用 In App Purchase 购买的应用程序,我想在购买后删除广告。我可以使用下面的代码成功购买

BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                        .setSku("android.test.purchased")
                        .setType(BillingClient.SkuType.INAPP)
                        .build();
mBillingClient.launchBillingFlow(getActivity(), flowParams);
Run Code Online (Sandbox Code Playgroud)

但是当我再次打开应用程序并在下面调用此方法时,我看不到 queryPurchaseHistoryAsync 的结果。

mBillingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP, new PurchaseHistoryResponseListener() {
            @Override
            public void onPurchaseHistoryResponse(int responseCode, List<Purchase> purchasesList) {

                purchasesList.size();
            }
        });
Run Code Online (Sandbox Code Playgroud)

购买列表.大小()== 0

“queryPurchaseHistoryAsync”方法无法显示测试购买还是我做错了什么?

编辑:删除并再次安装应用程序后,queryPurchaseHistoryAsync 方法是否检查购买。

android in-app-purchase in-app-billing android-inapp-purchase

5
推荐指数
1
解决办法
794
查看次数

如何获取使用 Google Play Billing 制作的购买历史记录?

我正在使用 Google Play 结算库 v 4.0。有没有办法检索设备当前登录帐户的所有采购订单(采购历史记录)?我尝试过queryPurchaseHistoryAsync(String skuType, PurchaseHistoryResponseListener listener)billingClient 和回调内的结果onPurchaseHistoryResponse(BillingResult billingResult, List<PurchaseHistoryRecord> purchaseHistoryRecordList),列表 - 有 10 个元素,但不是最新的。

在调用该函数之前,计费客户端已设置并startConnection()已被调用。

在文档中,据说 queryPurchaseHistoryAsync() “返回用户对每个 SKU 进行的最近购买,即使该购买已过期、取消或消耗。”

任何想法都会有用。:)

编辑:

queryPurchaseHistoryAsync() 返回每个 sku 的最后一次购买,因此它们是最新的,但对于每个产品而言。是否有机会像 Google Play 应用 -> 付款和订阅 -> 预算和历史记录那样获取历史记录?

android android-billing android-inapp-purchase play-billing-library

5
推荐指数
0
解决办法
1182
查看次数

Android:为什么 BillingClient queryPurchasesAsync() 在应用程序重新安装后返回空列表?

我正在将应用内购买功能添加到我的 Android 应用中。我在模拟器上尝试了以下行为:

  • 启动应用程序并伪造应用内购买(使用 SKU android.test.purchased
  • 确保应用内购买经过验证和确认,再次启动应用程序时queryPurchasesAsync()包含此购买
  • 从模拟器中删除了该应用程序
  • 重新安装了

再次调用时queryPurchasesAsync(),结果列表现在为空。这是正常的吗,因为我在模拟器上运行该应用程序?

感谢您的帮助

android in-app-purchase android-inapp-purchase billingclient

5
推荐指数
1
解决办法
618
查看次数

Google Play 应用内购买错误:“无法完成您的购买”

我正在将应用内购买添加到我的 Android 应用程序中。我已完成获取产品、向用户显示产品并启动购买流程的所有步骤。现在,我正在尝试测试它。为此,我在 Google Play Console 中向许可证测试人员添加了一个测试帐户。

当我开始购买流程时,我得到这个用户界面:

购买流程

但是当我单击“一键购买”时,出现以下错误:

无法完成您的购买。 检查您在 Play 帐户中选择的国家/地区是否正确。

以下是我已经尝试过的一些事情:

  • 我检查了我的 Play 帐户中是否选择了正确的国家/地区:

检查了国家

  • 我确保测试帐户付款资料中的地址具有正确的国家/地区。
  • 我确保该应用程序已在生产、开放测试和内部测试渠道上发布。
  • 我确保测试帐户已注册到内部和封闭测试轨道中。
  • 我尝试在模拟器和物理设备上进行测试。
  • 我清除了设备上 Google Play 商店的应用数据和缓存数据。
  • 我安装并使用 VPN 来测试来自不同国家的购买。

知道什么可能导致这个问题吗?另外,如果您对我应该尝试的东西有任何建议,请告诉我,即使您不确定它们是否真的有效。

android in-app-purchase google-play android-inapp-purchase

5
推荐指数
1
解决办法
1万
查看次数