在多个平台上维护和组织采购

Maintaining and organizing purchases on multiple platforms

我有一个适用于各种平台的应用程序。让它们为 iOS、Android 和 Windows。要使用一个应用程序,需要支付月费,但只需支付一次就可以使用所有平台。和Spotify一样,一次付费,所有平台都可以使用。

根据Google和Apple的指引,我需要提供In-App Purchases来支付月费。该系统连接到由我控制的服务器管理的用户帐户。我正在存储用户的订阅数据,因此如果用户在 iOS 上使用应用内购买,信息将被传输到中央服务器以解锁 Android-App(在如果已经在另一个平台上支付了)

问题是以下场景: 用户有一个有效的订阅,该订阅已通过 Google Play 支付。 iOS 和 Windows 应用程序也已解锁。现在用户卸载 Android 应用程序,转到 Google Play 网站并取消订阅。在当前情况下,我无法检测到这一点,订阅将对所有其他平台有效。

问题是: 有什么模式可以规避这个问题吗? Spotify 和合作伙伴也在解决这个问题,因此必须有解决方案

那么,处理用户授权的服务器(也就是你的服务器)应该查询Google订阅API,检查当前订阅是否仍然有效。每个 SubscriptionPurchase 资源都包含有关订阅何时到期的信息。

(参见 https://developers.google.com/android-publisher/api-ref/purchases/subscriptions

对于 Apple,同样适用:您会收到一张收据,有了这张收据,您可以随时查询服务器以检查该订阅是否仍然有效。

有一张幻灯片很好地总结了这些要点和陷阱:https://speakerdeck.com/rosapolis/the-recurring-nightmare-cross-platform-in-app-subscription-purchases

底线:如果没有在两个商店之间进行通信的服务器,您将无法做到这一点。但是,如幻灯片所示,它也有问题。

奖金:The talk from which the slides are taken is also on Youtube