Cheat sheet for working with iOS, iTunes, AppStore auto-renewables or Android, GooglePlay subscriptions
How to test auto-renewable subscriptions on iOS and Android?
There are three reserved product IDs for testing static Google Play Billing responses:
android.test.purchased
When you make an Google Play Billing request with this product ID, Google Play responds as though you successfully purchased an item. The response includes a JSON string, which contains fake purchase information (for example, a fake order ID).
android.test.canceled
When you make an Google Play Billing request with this product ID Google Play responds as though the purchase was canceled. This can occur when an error is encountered in the order process, such as an invalid credit card, or when you cancel a user's order before it is charged.
android.test.item_unavailable
When you make an Google Play Billing request with this product ID, Google Play responds as though the item being purchased was not listed in your application's product list.
Test purchases are not automatically canceled, so you might want to manually cancel a test purchase to continue testing. To do so, open the app page in the Play Store. If the test purchase that you want to cancel is a subscription, you can also use the cancel() method of the Purchases.subscriptions API.
Important: The refund() and revoke() methods of the Purchases.subscriptions API don't support test purchases.
There are events available for iOS:
To receive status update notifications, configure a subscription status URL for your app in App Store Connect. The App Store will deliver JSON objects via an HTTP POST to your server for the key subscription events. Your server is responsible for parsing, interpreting, and responding to all statusUpdateNotification posts.
Apple Developer
How we implemented Apple Server To Server notifications
And Android:
Google Play Billing provides server push notifications that let you monitor state changes for Play-managed subscriptions. By enabling Real-Time Developer Notifications, you'll receive a purchase token directly from Cloud Pub/Sub anytime there is an update to an existing subscription.
Test purchases
Sandbox | Live | |
iOS | Sandbox account | TestFlight internal/external |
Android | License testing group via Alpha Channel Release Management > App releases > Manage Alpha > Manage testers |
License testing account via Alpha/Internal Channel Settings > Account details > Gmail accounts with testing access |
Reduced test subscription time
Test subscriptions renew more quickly than normal to aid in testing. The following table identifies the testing renewal times for subscriptions of various durations.
Note: Test subscriptions will renew a maximum of 6 times.
iOS AppStore Connect
Note: Test subscriptions will renew a maximum of 6 times; after that you can continue testing with the user.
Actual Duration
|
Test Duration
| ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1 week | 3 minutes | ||||||||||
1 month | 5 minutes | ||||||||||
2 months | 10 minutes | ||||||||||
3 months | 15 minutes | ||||||||||
6 months | 30 minutes | ||||||||||
1 year | 1 hour |
Android Google Play
Production subscription period | Test subscription renewal |
---|---|
1 week | 5 minutes |
1 month | 5 minutes |
3 months | 10 minutes |
6 months | 15 minutes |
1 year | 30 minutes |
The time-based features available for subscriptions, such as free-trials, are also shortened for testing. The following table identifies the testing time periods associated with time-based subscription features:
Feature
|
Test period
|
---|---|
Free trial | 3 minutes |
Introductory price period | Same as subscription test period |
Grace period (both 3- and 7-day) | 5 minutes |
Account hold | 10 minutes |
Testing Google Play Billing Responses
There are three reserved product IDs for testing static Google Play Billing responses:
android.test.purchased
When you make an Google Play Billing request with this product ID, Google Play responds as though you successfully purchased an item. The response includes a JSON string, which contains fake purchase information (for example, a fake order ID).
android.test.canceled
When you make an Google Play Billing request with this product ID Google Play responds as though the purchase was canceled. This can occur when an error is encountered in the order process, such as an invalid credit card, or when you cancel a user's order before it is charged.
android.test.item_unavailable
When you make an Google Play Billing request with this product ID, Google Play responds as though the item being purchased was not listed in your application's product list.
Cancelling test purchases or sandbox purchases
Android
Google Play accumulates completed test purchases for each user but does not pass them on to financial processing.Test purchases are not automatically canceled, so you might want to manually cancel a test purchase to continue testing. To do so, open the app page in the Play Store. If the test purchase that you want to cancel is a subscription, you can also use the cancel() method of the Purchases.subscriptions API.
Important: The refund() and revoke() methods of the Purchases.subscriptions API don't support test purchases.
iOS
You cannot continue to test the auto-renewing aspect of the subscription for that test user after 5 renewals. To test the auto-renewing aspect you must create a new test user.Server-side real-time update of subscription changes
There are events available for iOS:
To receive status update notifications, configure a subscription status URL for your app in App Store Connect. The App Store will deliver JSON objects via an HTTP POST to your server for the key subscription events. Your server is responsible for parsing, interpreting, and responding to all statusUpdateNotification posts.
Apple Developer
How we implemented Apple Server To Server notifications
And Android:
Google Play Billing provides server push notifications that let you monitor state changes for Play-managed subscriptions. By enabling Real-Time Developer Notifications, you'll receive a purchase token directly from Cloud Pub/Sub anytime there is an update to an existing subscription.
Additionally, your app can deep link customers to the payment details page within App Store on their device by opening this URL
For users who wish to cancel their subscription, your app can open the following URL:
Links
iOS
- Test in-app purchases
- How to cancel Auto-renewable subscription by test user in Sandbox environment?
- Auto-Renewable Subscriptions for iOS
- https://itunespartner.apple.com/en/apps/videos#testflight-beta-testing
- https://developer.apple.com/testflight/
- https://help.apple.com/app-store-connect/#/devdc42b26b8
- https://developer.apple.com/documentation/storekit/in-app_purchase/handling_subscriptions_billing
Android
Comments
Post a Comment