I have just figured out that Client/ValidateIOSReceipt fails for every product in the receipt if any of them cannot be validated.
I purchased an item on Sandbox, and surprisingly enough the Apple receipt had two entries in the "in_app" array - one for the actual item I just purchased, the other one for an old item that I probably tried to buy a couple of months ago while developing the game. Such item IS NOT PRESENT anymore in the main catalog and has been revoked and removed from iTunes connect. Nevertheless, for some unknown reason, Apple keeps sending that back in any receipt.
When I added an item with that id back into our main catalog the purchase went well and the problem was resolved, but I have to keep that old item in the main catalog just to validate any transaction.
I was wondering if:
- There is a way to Validate (and grant) all the VALID items in the receipt instead of faling for all of them if there's one that is not valid?
- Are you suggesting that we should never remove items from the main catalog once they were available for purchase in order to avoid this problem?
Or maybe there's another approach and I am missing something?
(Note: I haven't tested Android, and I wonder if there might be a similar problem or not?)