Extend a Subscription Renewal Date API behavior in sandbox

I'm testing this App Store Server API in the sandbox environment and it seems like this API cannot be properly tested there. https://developer.apple.com/documentation/appstoreserverapi/extend_a_subscription_renewal_date

I can only call this API on an active subscription, but the effectiveDate in ExtendRenewalDateResponse is the same value as the subscription's original expiry date and is not extended at all by the extendByDays I specified in the API request. Also the subscription doesn't renew after it expires, so even if the call to the subscription extension API appeared to have succeeded it has no actual effect.

I suppose this is not the intended behavior and expect that the production environment to behave differently.

Is the expiresDate in the current subscription supposed to be extended after this API call? Or would it remain the same and the extended part of the subscription become a separate transaction after expiresDate?

Accepted Reply

Thank you for reaching out, I'm making some assumptions based on the timing of your post, but here is what I believed happened.

To your first point, about the API having no effect. Due to the way that Sandbox scaling works, when converting the number of days to minutes to extend the subscription, two of your three requests resulted in rounding to 0 minutes. However your middle request was successful in increasing the renewal time by 1 minute. Please file a ticket in Feedback Assistant and post the FB number here if you would like more information.

To your second point, for your final request your subscription had hit its renewal limit in Sandbox, therefore it did not renew. Again looking at your second request of three, it did renew after that request for several more times, and if you fetch the transaction history https://developer.apple.com/documentation/appstoreserverapi/get_transaction_history, you should be able to see this in effect. Again, please feel free to file a ticket in Feedback assistant for more specifics.

Replies

Thank you for reaching out, I'm making some assumptions based on the timing of your post, but here is what I believed happened.

To your first point, about the API having no effect. Due to the way that Sandbox scaling works, when converting the number of days to minutes to extend the subscription, two of your three requests resulted in rounding to 0 minutes. However your middle request was successful in increasing the renewal time by 1 minute. Please file a ticket in Feedback Assistant and post the FB number here if you would like more information.

To your second point, for your final request your subscription had hit its renewal limit in Sandbox, therefore it did not renew. Again looking at your second request of three, it did renew after that request for several more times, and if you fetch the transaction history https://developer.apple.com/documentation/appstoreserverapi/get_transaction_history, you should be able to see this in effect. Again, please feel free to file a ticket in Feedback assistant for more specifics.

Thanks for the reply! Now I have a few more questions.

  1. Is it possible for you to briefly explain or point me in the right direction how sandbox scaling works in this instance?

  2. Is there a way to reset the twice a year limitation in sandbox, like the ability to reset introductory offer eligibility?

  3. when I exceed the twice a year limitation and call the API again, is it correct to assume that I will get a 200 response with the body of a previous extension attempt? since from my observation "success" always seems to be true in the body.

After a bit more testing I'm going to answer myself on a couple of things.

  1. setting extendByDays to 90 days seems to extend the subscription by 38 minutes in Sandbox.
  2. resetting introductory offer eligibility through Settings also seems to reset the twice a year limitation.

It would be great if I can get a little more detail on when "success = false".