google 可再生订阅滥用

google renewable subscriptions abuse

我们有一个应用程序在 android 中使用自动续订订阅。

用户正在通过应用程序正常订阅,收据已发送给我们的后端,以便使用 IAP Google API。

到此为止一切都很好,但我们最近发现我们的系统存在漏洞,一些用户订阅并取消订阅并重新启用自动订阅,这样google将发出新的收据发送到我们的后端,我们再给他们一年,这很容易通过只授予收据中给出的持续时间来解决

但随后用户开始使用同一个 google 帐户和我们应用程序的不同帐户,他们通过生成的收据为每个人提供免费订阅

我在这里阅读了 API,但我找不到任何字段告诉我们这张收据只是重新激活而不是新订阅 https://developers.google.com/android-publisher/api-ref/purchases/subscriptions

当我们发送 google api 的请求以获取信息时,这就是我们得到的信息:

status_from_google_play
{
    "autoRenewing": true,
    "cancelReason": null,
    "countryCode": "SA",
    "developerPayload": "",
    "expiryTimeMillis": "1534073485784",
    "kind": "androidpublisher#subscriptionPurchase",
    "linkedPurchaseToken": "sometoken",
    "orderId": "GPA.xxxx-xxxx-xxxx-xxxxx",
    "paymentState": 1,
    "priceAmountMicros": "290000",
    "priceCurrencyCode": "SAR",
    "purchaseType": 0,
    "startTimeMillis": "1534071687580",
    "userCancellationTimeMillis": null
}

没有字段给我这条信息

我错过了什么吗?还有其他方法可以验证吗?

事实证明 linkedPurchaseToken 字段可用于此目的 如果链接令牌不为空,则表示它是 仅重新激活upgrade/downgrade 订阅。

这不是您所看到的直接用法,而是您所知道的。