21

Yesterday this error started appearing when testing my apps from nowhere.

Error: There is no information available for In-App Purchases. Try again later. 21105. Environment: Sandbox

It's happening upon calling restoreCompletedTransactions() at app startup.

What does this error mean and is there anything I can do to avoid this error?

double-beep
  • 5,031
  • 17
  • 33
  • 41
Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358
  • I am experiencing the same only on newly created sandbox accounts I think it's the latest version of ios? it started when I upgraded my iPhone to the latest version – Z. Cajurao Aug 27 '20 at 08:26
  • Yes, exactly, it started in ios 13.6.1. – Bartłomiej Semańczyk Aug 27 '20 at 08:27
  • I ran into this issue on 13.6. I was able to resolve the issue by erasing all content and settings, and NOT restoring from iCloud backup. – mattwindwer Aug 27 '20 at 15:22
  • 3
    I’m voting to close this question because it's about an issue with 3rd party services, not about programming as defined by the [help]. It's also a temporal issue that will likely not last longer than a few hours/couple of days. – TylerH Aug 28 '20 at 14:57
  • I am voting to keep it opened and allow users to know what is really going on with very common problem – Bartłomiej Semańczyk Aug 28 '20 at 14:58
  • 4
    @BartłomiejSemańczyk the question doesn't need to be open to accomplish that. That aside, this site isn't the place to keep users informed of a temporal issue with Apple 3rd party service status. – TylerH Aug 28 '20 at 15:05
  • I've attempted to edit the question to hopefully make it more on topic. – mbauman Aug 28 '20 at 15:30
  • Please add additional comments to [this](https://developer.apple.com/forums/thread/125164?answerId=629310022) thread on the Developer Forum. – Caleb Jones Aug 28 '20 at 19:57
  • This seems to be an issue with new sandbox test accounts. I happen to have an old one, and that works fine. Anytime I create a new test account, same issue. Hope Apple fixes this soon coz the review team doesn't understand that its an Apple issue. – xoail Sep 01 '20 at 20:41
  • any update? Still getting the message – Dani Oct 05 '21 at 18:46

7 Answers7

6

It's apple's internal servers that are causing this. From what I researched a few hours ago, this happens on SOME testers (apparently not all). And it only happens on test accounts, so production app is safe.

Gene Sy
  • 1,325
  • 2
  • 10
  • 17
4

I have asked an Apple using Apple Developer Center, and they replied to me like this:

Hello Bartlomiej Semanczyk,

I’ve review the problem description presented below. This looks like a bug report issue to be investigated by the App Store Server QA engineers. The error string presented in the Stack Overflow page is new to me. However, this issue needs to be investigated by the Server QA team as it’s likely that the server is issuing this error string. Please follow these instructions to install the StoreKit profile and capture a console log, then submit a bug report. I will review the bug report and make sure that it’s forwarded to the Server QA team for investigation. BTW, I just ran an old StoreKit sample ad I’m not seeing this issue. I wonder if the issue only occurs with new in-app purchase identifiers.

and here they attached a lot of instructions ho to install StoreKit and capture the device console log.

desertnaut
  • 57,590
  • 26
  • 140
  • 166
Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358
1

One of my TestFlight users has also been experiencing this error, while others haven't strangely. Most of them are on ios 13.6.1. Others on the Apple dev forum thread (where I found your link to here) are experiencing this in production as well. Seems this problem has started roughly 48 hours ago with no concrete answer from Apple. At any rate, to answer your question:

When setting up your server side to communicate with Apple to check the receipt, you need to hit the production api first:

https://buy.itunes.apple.com/verifyReceipt

You will get a json response from Apple that includes a "status" key and a corresponding numerical value. If the "status" returns "21007" it means the receipt is for Sandbox not production. You then hit the testing api instead:

https://sandbox.itunes.apple.com/verifyReceipt

Dave C
  • 11
  • 2
  • Ok, but there is no server side for my app, especially my own server side. – Bartłomiej Semańczyk Aug 27 '20 at 07:57
  • Apple (and myself) strongly recommends not validating receipts directly from the app as stated on this page: https://developer.apple.com/documentation/storekit/in-app_purchase/validating_receipts_with_the_app_store – Dave C Aug 27 '20 at 08:06
  • Yes, you are right, but I didnt validate any receipt before...;( – Bartłomiej Semańczyk Aug 27 '20 at 08:07
  • I dont think the issue is not having a servers to validate receipts for this one tho. Since it's returning error even before a purchase is made – Gene Sy Aug 27 '20 at 11:45
  • Same issue here for a tester on Testflight just after checking the user receipts on App Store from the app and before getting the list of the subscriptions. Probably it will trigger after any interaction with the App Store... – GDM Aug 28 '20 at 10:14
1

I have received the same error on my test device with an old sandbox user. The following steps have kind of solved this issue for me:

  1. Sign out sandbox user from test device
  2. Create a new sandbox user
  3. Sign in with the new sandbox user.
  4. Try to restore the In-App Purchase without purchasing it in the first place. Get the error in question.
  5. Try to purchase the In-App Purchase... Purchase successful.
  6. Delete the app.
  7. Re-build the app on the test device.
  8. Restore the In-App Purchase. Restore successful.

I know this may not be a definite solution but I just wanted to share this information with the hope of being helpful. I will update my answer once the app's latest version is approved by the App Store.

Luke
  • 965
  • 8
  • 21
  • Yes it may be good solution, but how to told the Apple reviewers to do that while they review my app? – Bartłomiej Semańczyk Aug 27 '20 at 21:10
  • @BartłomiejSemańczyk I thought that if we can solve in our local test devices by simply using a new sandbox user, it proves that the problem is not related to the app itself, and therefore I conclude that Apple Reviewers should not refuse approving the app for a reason not related to the app. However, if this is not the case I guess there is nothing more we can do other than contacting them via developer support channels: https://developer.apple.com/contact/#!/topic/select – Luke Aug 27 '20 at 21:50
  • My issue right now is that they're ignoring everything i'm saying and just "retrying" the same test again and again. I even ask why my previous builds that are on production have the same issue and they just ignore my statements – Gene Sy Aug 28 '20 at 04:48
1

This happened to me also when installing a build from TestFlight. I had a sandbox account configured but that account was not part of the team the build belonged to. So I logged out of the sandbox account and the dialog disappeared. I logged in with proper sandbox account that belong to the team, even then I didn't get the dialog.

I know that when installing the build from TestFlight it uses the actual iTunes store account configured on the device, but my guess is that it has something to do with the sandbox account. To avoid this dialog remove the sandbox account when installing the build from TestFlight or use a proper sandbox account that belongs to the team or account that the build belongs to

Pradeep K
  • 3,671
  • 1
  • 11
  • 15
1

Just check the bundle id in appstoreconnect/App information , make sure is the same with your App bundle id

Govan
  • 1,322
  • 1
  • 14
  • 13
0

Today I encountered a 21105 response code when validating a receipt against Apple's server for a sandbox user and found this thread.

In my case, I had just recently cleared the purchase history for all of the sandbox testers in my Apple Developer Account, so I assume that because I cleared the purchase history, the receipt data is no longer valid.

At least according to Apple's documentation on what valid status codes can be returned, they don't have a definition for this one specifically as it falls under their range of internal data access errors:

Status codes 21100-21199 are various internal data access errors.

Anyone with the appropriate access rights can clear the purchase history for a sandbox tester under "App Store Connect" → "Users and Access" by first clicking "Edit" and then selecting a user account to enable the "Clear Purchase History" button:

enter image description here

That said, after making another in-app purchase with the same user account, all following receipt validation calls were successful.

Derek Lee
  • 3,452
  • 3
  • 30
  • 39