Our app has 3 possible auto-renewing subscription plans - monthly, 6 months and yearly. They are defined in Google Play and work well when purchasing.
Recently, we've added an option to change plan using the new API - https://developer.android.com/google/play/billing/billing_subscriptions#Allow-upgrade
For downgrades (shorter subscription period), we use DEFERRED
proration mode.
For upgrades, we use IMMEDIATE_AND_CHARGE_PRORATED_PRICE
.
During our tests, we've discovered that all changes work fine, except when changing "6 months" into "yearly". Whenever we do that (user already has 6 month subscription, trying to change to yearly), instead of getting the normal purchase flow, we get an error. The displayed error message is
"Error while retrieving information from server [DF-DFERH-01]"
The actual error code that we receive from the library is SERVICE_UNAVAILABLE
.
Again - all other flows work right, such as monthly -> yearly, monthly -> 6 months.
There is a lack of documentation and clarity about what's going on, and logcat is not showing anything useful.
6 months -> 1 year
is the last one you are trying? Or is it that you are trying that change right after some other action that might be influencing the outcome? (basically trying to confirm that it is indeed isolated issue). Also what is the exact line of code / API request that fails? – Jadajadd