28
votes

I use In App Payment to sell ingame consumables. After successfull payment I forward the payment receipt to my backend, which validates the receipt with the iTunes payment backend. This works flawlessly in the sandbox environment.

Now I submitted my app so it can be approved by the Apple guys and be published in the App Store. Of course I made sure that my backend will be validating the payment receipts with the production environment of the itunes backend, because I expected the Apple guys to test the app in production mode. However, the app was rejected. As a reason I was told that the purchase of my consumables does not work (refused by my backend because of an invalid receipt). After checking my logs I see 3 attempted purchases. I decoded the receipts that were used and see, that all of these are "environment" = "Sandbox".

Does this mean that Apple tests submitted apps in sandbox mode? That would be crazy! Am I supposed to allow sandbox payment in my production environment or what? Any facts about this?

3

3 Answers

45
votes

Thomas, you should definitely read Apple's FAQ on In-App Purchase: https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

Always verify your receipt first with the production URL; proceed to verify with the sandbox URL if you receive a 21007 status code. Following this approach ensures that you do not have to switch between URLs while your application is being tested or reviewed in the sandbox or is live in the App Store.

So yes, they are kinda crazy. But we knew that, didn't we?

1
votes

@Jan P's answer is correct. If you're looking for a quick YES/NO answer, the specific answer from the FAQ is;

You should use the sandbox while your application is in review.

(15) What url should I use to verify my receipt ? Use the sandbox URL https://sandbox.itunes.apple.com/verifyReceipt while testing your application in the sandbox and while your application is in review.

1
votes

quick answer: if your app in review, use sandbox.

What url should I use to verify my receipt? Use the sandbox URL https://sandbox.itunes.apple.com/verifyReceipt while testing your application in the sandbox and while your application is in review.

Use the production URL https://buy.itunes.apple.com/verifyReceipt once your application is live in the App Store.