问题标签 [android-inapp-purchase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
485 浏览

android - Google Play 应用内购买 - querySkuDetailsAsync 不返回状态(活动/非活动)

我正在尝试显示用户可以购买的所有可能选项,但我不想列出不活动的选项,或者想将它们灰显/隐藏,并且可能很快就会出现。

但是,该调用billingClient.querySkuDetailsAsync()提供了一个列表,SkuDetail并且其中没有状态。

originalJson 可能有它,但我没有检查过,尽管文档似乎没有说它会。

编辑:(我刚刚检查过并且 originalJson 也没有)

0 投票
1 回答
658 浏览

in-app-billing - 用于应用内计费购买验证的后端服务器

BillingClient queryPurchases 方法的谷歌文档说明如下:

“出于安全考虑,建议通过调用以下 API 在您的后端(如果有的话)进行购买验证:https ://developers.google.com/android-publisher/api-ref/purchases/products/get ”

链接在这里:

https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchases(java.lang.String)

我已经设置了一个 API,从我的服务器与它建立了通信,并进行了一些初步测试,但我越研究它,我就越质疑它的必要性。如果您的代码可以反编译,那么您在后端进行的任何验证都肯定会在您的应用程序代码中被破坏。

我的理解是,谷歌在本地设备上缓存这些购买并定期刷新缓存,这个缓存是 queryPurchases 从中提取购买的地方。

通过对这些购买进行后端验证,我将试图阻止哪种类型的攻击?

0 投票
2 回答
1075 浏览

android - Android 应用内结算货币代码始终为美元

我正在尝试使用 getSkuDetails() 方法获取货币代码:https ://developer.android.com/google/play/billing/billing_reference 。然而,privacy_currency_code 始终是美元。我试图做的事情:

(1) 从我的电脑 VPN 到另一个国家并创建一个谷歌帐户,然后将该帐户添加到测试设备 (2) 将测试手机 VPN 到另一个国家

但是在这两种情况下,getSkuDetails 中的privacy_currency_code 仍然是美元,那为什么会这样呢?在 Play 商店控制台中,应用内产品标有美元。不确定这是否是原因。如果这就是为什么它不会自动转换的原因?

0 投票
0 回答
237 浏览

kotlin - 没有为 Android 应用内订阅提供调试消息和响应代码。我还需要配置什么?

我想在应用内购买 Google Play 订阅。当谈到实施时,它会告诉“找不到您尝试购买的商品”。响应代码为 0 且没有调试消息。你能告诉我我必须添加哪些其他参数吗?

鉴于计费客户端已准备就绪并已成功获取订阅详细信息

0 投票
1 回答
1098 浏览

java - 尝试使用具有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

当使用 Java Google Play Developer API(版本 3)并请求购买信息以获取有效的购买令牌时,我收到以下异常。API 调用返回带有以下消息的 400 Bad Request 响应。

不幸的是,没有进一步的信息。我不知道什么值是无效的。

首先,我们已就此联系了 Google 支持。不幸的是,我们在近 2 个月的时间里一直在与 Google 支持来回切换,但他们甚至还没有表示他们正确理解我们的问题是什么。每次他们回复时,他们都会给我们提供与 Google Play Developer API 毫无关系的建议,即使在多次彻底解释问题之后也是如此。这是我 20 年来最令人沮丧的支持体验。谷歌支持显然不会在这里提供任何帮助。

其次,我们已经成功链接了我们的 Google Play 帐户和我们的后端。所有必要的配置都已完成并正常工作。在我们的后端,每当进行 Android 应用内购买时,我们都会收到来自 Google Play 的通知,这些通知包括购买令牌。这需要付出一些巨大的努力,但我相信现在一切都是正确的,我们的服务帐户配置正确,所有权限等都很好。

我能够成功调用返回可用应用内购买产品列表的 API。我得到了我们在 Google Play 中配置的产品的完整和正确列表,供用户在我们的应用程序中购买。为了进行此调用,我们必须提供凭据,并且我假设在我们进行此调用时服务器正在验证这些凭据。由于我可以成功拨打此电话,因此我假设“无效值”与我们的凭据无关。我们正在使用为特定服务帐户创建的 Google 生成的 JSON 文件(不使用 p12 文件)。

我搜索了 StackOverflow,并在互联网上寻找有关此问题的信息。我发现许多页面表明相同或相似的问题,但使用的是旧版本的 Google Play Developer API,它显然做了不同的事情。提供的解决方案似乎不适用于 v3 API。我已经搜索了好几个星期并尝试了各种解决方案,但都没有成功。

我编写了一个在本地 PC 上运行的测试应用程序,当我请求应用内产品列表时它可以工作,但在请求给定购买令牌的购买详细信息时不起作用。我尝试过许多不同的购买代币。我读到测试令牌实际上不适用于此特定 API,因此我实际上将我们的应用程序的构建发布到生产环境中,我可以使用它进行真正的实际购买。我已经这样做了,被谷歌收费了,我们的后端从这些购买中收到了真实有效的购买令牌。

我希望上面的代码给我一个有效的产品购买数据(我可以询问和处理的有效 ProductPurchase 实例)的响应。相反,我在这里得到的只是一个 400 Bad Request 响应,表明一些值(我不知道哪个)是无效的。实际的反应是:


更新:

我在下面对这个问题提供了我自己的答案。

0 投票
3 回答
18161 浏览

android - Google Play In-app Billing API 版本低于 3

我刚开始对 Play 商店计费库的 2.0 更新进行 beta 测试,我的很多用户都遇到了这个错误Google Play In-app Billing API version is less than 3

这只是他们更新之前的时间问题,还是某些设备卡在旧版本上或什么?

0 投票
0 回答
30 浏览

android - Error in class IabHelper, Method launchPurchaseFlow

I try to buy my subscription, but when I try in my phone next error appears!

"The item you were attempting to purchase couldn't be found"

My subs in the google play console are active, and API is available, please help me.

I have tried buy with product test and everything is fine, but when I try to buy with my subs, I get this error:

"The item you were attempting to purchase couldn't not be found"

I need buy my subs that already reconfigured in google play console.

0 投票
2 回答
18232 浏览

android - 如何在android中确认应用内购买?

我已经浏览了 Play 计费库 https://developer.android.com/google/play/billing/billing_library_overview 您必须在三天内确认所有购买。未能正确确认购买会导致这些购买被退款。该过程没有明确说明如何确认购买。这就是我尝试过的这是正确的方法吗?提前致谢

0 投票
1 回答
26 浏览

android - 应用在生产中时,如何使用测试用户的帐户进行实际购买以购买相同的产品?

我开发了一个带有计费购买的应用程序。

我在 google play 控制台中有测试用户帐户列表,我可以作为测试用户购买(alpha 版本)。

测试购买一切都很好。现在我已经在生产中发布了该应用程序。我想购买作为测试用户购买的相同产品。我的问题是我无法通过同一个谷歌帐户购买相同的产品。它抛出“项目已拥有”错误消息。

0 投票
1 回答
414 浏览

android - 为什么 queryPurchaseHistoryAsync 不适用于促销代码?

我一直只queryPurchaseHistoryAsync在 Android 上用于应用内购买,它一直运行良好。使用促销代码后,我注意到我的代码看不到它。是否有一个原因?通常这个函数应该返回所有最近的购买并且兑换码是最近的购买。我在这里想念什么?