gpt4 book ai didi

Android In App Subscription 总是返回初始收据,我从来没有得到续订

转载 作者:IT老高 更新时间:2023-10-28 22:10:25 25 4
gpt4 key购买 nike

我的 Android 应用程序有问题。我正在尝试实现每月订阅。我已经创建了 IAP,该应用程序处于测试阶段,我已注册为测试人员。
购买订阅时一切正常。我可以作为测试者购买它,这意味着订阅实际上是不收费的,而且它每天都会更新。
但这是我的问题开始的地方。我总是得到原始收据,带有原始 purchaseTimepurchaseToken .每当应用程序启动时,我都会调用 queryInventoryAsync我希望得到最新的续订收据。但我总是收到原始收据。
我的想法错了吗?我不应该得到更新的收据,新的 orderID ? (正如谷歌文档所说,我应该得到 orderID 之类的 GPA.blabla..0|1|2 。我知道有一些缓存机制,但我已经等了三天,我仍然得到原始订单,而我应该得到最新的一。
我总是在人行横道上使用cordova,我使用以下插件进行购买:https://github.com/j3k0/cordova-plugin-purchase .我不知道这是否重要,它不应该因为它使用与所有其他插件相同的 IABHelper 类,但也许他们的代码有问题?
我记录了从对 mService.getPurchases(3, mContext.getPackageName(), itemType, continueToken); 的调用中收到的确切响应。它包含错误的数据(原始收据)。为什么? :(
其他人有类似的问题吗?是因为测试订阅吗?实际购买时会起作用吗?我已经开始用真钱进行测试,但订阅续订需要一周时间。
太感谢了。
编辑 :从 Google Play 商店应用程序中清除缓存不是一种选择。我不能要求我的用户这样做。另外,我确实测试了这个,它不起作用!
编辑 2 生产订阅(真钱,没有测试)也不起作用!还是拿到正本收据!
编辑 3 我还没有解决这个问题。检测续订的正确方法是什么?我是否应该在后端运行一个 cronjob 并针对 Google 的购买状态 API 查询每个订阅?
编辑 4 谢谢你的回答。我已经在后端使用购买状态 API 来确定订阅是否已续订。但这有点糟糕,因为如果我获得 100.000 个订阅怎么办?遍历所有这些并查询 Google 的 API 的脚本将花费非常长的时间......而且该脚本可能应该每天运行!
但是让我们把事情弄清楚。
这是否意味着官方文档已过时? .
GPA.blabla..0 GPA.blabla..1样式更新已死 ?
编辑 2016 年 12 月 5 日更新 :
我已经在生产中运行订阅几个月了,但我仍然没有得到 ..0, ..1 的续订。
我所做的是设置一个每天运行的 cronjob。它通过我的 Activity 订阅并根据谷歌的购买 API 查询它们。如果 API 返回的到期日期与我的数据库中保存的不同,则表示订阅已续订。
编辑 2017 年 7 月 6 日更新
我仍然依赖我的每日脚本,它解析所有订阅,并通过使用购买 API https://developers.google.com/android-publisher/api-ref/purchases/subscriptions 查询 Google 来更新它们的状态。 .到目前为止,它一直运行良好。
编辑 2018 年 10 月 7 日更新
Google 现在有实时通知:https://developer.android.com/google/play/billing/realtime_developer_notifications
我实现了这些通知,并将它们与每日 cronjob 一起使用,以获取每个订阅的真实状态和到期日期。
小提示:批量查询订阅!我做了一些测试,我能够在同一个请求中 bundle 多达 1.000 个订阅。该限制由 API 的最大响应大小强加。

最佳答案

Google Play 的原始收据用于查询 Google Play 的 API 以获取订阅信息。 Apple 的 IAP 的工作方式非常相似。对于这些应用内购买机制,您使用收据中的 subscriptionId 来查询 Google/Apple 的 API 以确定订阅有效性。

这些应用内购买机制的工作原理是为了防止欺诈,用户可以在没有您的应用参与的情况下更改订阅信息。

这是您应该感兴趣的 API:

GET  /{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}
Checks whether a user's subscription purchase is valid and returns its expiry time.

应用内购买验证的一般流程是:
  • 通过 Google/Apple 验证收据
  • 根据订阅标识符
  • 从 Google/Apple 查询购买数据

    您不应该相信设备收据中返回的数据,而应该相信从 Apple/Google 远程 API 返回的数据。

    关于此主题的另一个 StackOverflow 讨论: Android : inApp purchase receipt validation google play

    关于Android In App Subscription 总是返回初始收据,我从来没有得到续订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38973903/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com