我在我的网站的 Playstore 中有一个应用程序,它提供每月定期订阅,在我的后端,我既授予该月的高级使用费,又记录了在最后一张收据上到期时间用完时发生另一笔付款的事实,并且我使用https://developers.google.com/android-publisher/api-ref/purchases/subscriptions重新查询 Google 订阅以检查它是否仍然有效
我的网站和应用程序上还有其他付款方式,所以我发现这种方法效果最好。但是最近我注意到我的系统记录的付款与 Google 本身报告的相比太多了。
事实证明,在我重新查询订阅的更新时间,谷歌返回它仍然有效但在 1 天后过期,而不是在 30 天内。我的系统将记录必须已经发生付款,然后在 1 天后再次检查(这一次将给出正确的到期时间),然后再次记录必须在 Google 再次报告付款仍处于活动状态时发生付款。
例如:
- 2 月 20 日 - 在应用程序上首次购买,应用程序告诉服务器收据等。30 天后到期。
- 3 月 21 日 - 到期时间已到,因此服务器重新检查状态,Google 显示“3 月 22 日到期”。
- 3 月 22 日 - 到期时间到了,所以服务器重新检查状态,谷歌说“4 月 21 日到期”(这是它上次应该说的)
- 4 月 21 日 - 到期时间已到,因此服务器重新检查状态,Google 再次表示它仅在 1 天后到期,即 4 月 22 日
- ETC
我不知道为什么谷歌每月报告一次错误的到期时间。我没有为我的 IAP 订阅设置任何免费天数/试用期。只要谷歌报告了正确的到期时间,我就会正确记录付款。但是,如果到期时间不可靠,我如何判断是否确实发生了付款?
上述API调用返回的订阅资源没有返回最近一次支付的orderId。我找不到将我在服务器端存储的收据与其 purchaseToken 链接到后续续订付款的任何计费信息的方法。
有没有办法将存储在服务器端的收据/购买令牌链接到使用 Google API 发生的实际付款?如何获取最新的 orderId?