question

Francois Boucher-Genesse avatar image
Francois Boucher-Genesse asked

Auto-renewed subscriptions doesn't work on iOS for multi platform support

Hello,

We’re using the beta functionality for subscriptions and my question is about this, so let me know if you would rather not discuss this publicly while the feature isn’t available at large. As it stands, it seems like we can’t use the feature for auto renewed subscriptions with multi platforms support.

We are trying to build a subscription service with which users can subscribe on a platform and play on any platform (Google Play and iOS at the moment). This means we need to lazily validate receipts remotely, which we have done successfully on Google Play using PlayFabClientAPI.ValidateGooglePlayPurchase. As the user buys a new subscription, we save the receipt in the cloud. Later on, when the user opens the app on another device, it fetches the receipt from the cloud and validates it using PlayFabClientAPI.ValidateGooglePlayPurchase again. This allows us to get the current status of the subscription, as it can change outside of our app.

This approach worked fine for Google Play, but doesn’t work on iOS. If we use the original iOS receipt used to buy a subscription, and validate it using PlayFabClientAPI.ValidateIOSReceipt during the first subscription period, the membership is updated properly. However if we wait until the second billing period of the renewable subscription, then try to validate the original receipt again through PlayFabClientAPI.ValidateIOSReceipt, the membership won’t be active. Our understanding is that Apple creates a new receipt for every automatic renewal, such that a server needs to fetch all of them and then validate the very latest receipt to get the current state of the subscription. PlayFabClientAPI.ValidateIOSReceipt doesn’t seem to do this.

This basically means that we can’t support multi platforms with Playfab’s receipt validation as it stands currently. The client might not have access to the latest receipt, as this is something that only iOS devices logged in with the proper iOS account have access to. A different iOS device or a Google Play device on the same Playfab account will only have access to the last receipt that was uploaded by an iOS device, which may already be expired and cannot be validated to get the current status.

We’re about to implement server to server communication ourselves for both platforms now and essentially not use Playfab’s receipt validation anymore, but thought we would check with you first to make sure we understand its limitations accurately.

We have another issue regarding the fact that only one playfab account can be used to validate receipts from an Apple account. We’ll detail this further if needed, but at the moment the issue discussed here is the deal breaker for us.

Thanks!

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Seth Du avatar image
Seth Du answered

The community forum won't provide technical support for preview features. Please feel free to submit a ticket for dedicated support. Thanks for your understanding.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Francois Boucher-Genesse avatar image
Francois Boucher-Genesse answered

Understood, thanks @SethDu!

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.