verifyReceipt is providing strange results lately in the sandbox environment

verifyReceipt is providing strange results lately in the sandbox environment.

  1. Instead of returning the expiration time of the latest receipt in returns something from the past
  2. The [pending_renewal_info] returns multiple entries and none of them are for the current receipt

Any one experiencing the same issues?

  • Hi,

    All the information is detailed in Feedback #FB13190581. Also sharing here some of the details.

    Environment: Sandbox environment.App using StoreKit2, running on iPad model 7.11 (iOS 16.6.1).Purchase type: Auto-Renewal subscription.Our backend uses VerifyReceipt (with exclude-old-transactions=true) to validate the receipt and check expiration.
Add a Comment

Replies

Could you please file a ticket in Feedback Assistant (http://feedbackassistant.apple.com) with the receipt(s) that are experiencing this behavior and post the FB number here?

All the information is detailed in Feedback #FB13190581

Here are more details about the issues we are experiencing:

  • Environment: Sandbox environment.
  • App using StoreKit2, running on iPad model 7.11 (iOS 16.6.1).
  • Purchase type: Auto-Renewal subscription.
  • Our backend uses VerifyReceipt (with exclude-old-transactions=true) to validate the receipt and check expiration.

Issues we observed:

  1. Increase in the number of 21107 responses from the apple sandbox server. This are intermediate error as a retry of the call will sometime succeed.

  2. The expiry date we receive is in the past. This occurs when we initiate a subscription purchase in the app and for some reason we don't get the sandbox user password dialog. The purchase simply succeeds. We see that the expiry time in [latest_receipt_info] is 2023-09-26 11:01:54 Etc/GMT while the purchase was made on 2023-09-27 08:03:43 Etc/GMT. Another issue is that the product_id that is returned in [latest_receipt_info] is not the product Id that was used for the sub purchase.

  3. We got a VerifyReceipt response that included two items in the pending_renewal_info array. I'm aware that this is an array, however, we always got a single item in this array before. Now, we are getting two and there is no way to correlate to the actual sub as none of the product Ids we receive are correct.

In addition, the receipt size is very high as it always increased when a purchase is made (I understand that with StoreKit2 the receipt represents all purchases). However, there is no way to check history. For example: Assume i made a sub purchase A and got a receipt. When I check with verifyReceipt the status during that time i get updated result for purchase A (this is the last purchase). After sub A ends, i do another purchase B and receive an updated receipt. If i now call verifyReceipt with purchase A Receipt i will get updated info for sub B.