Which status codes are conclusive proof of invalidity?

I have my IAP setup all working, but one thing I am not sure about is how to react to each of the status codes that can be generated for Receipt Validation on the server.


Status of 0 is success. That is clear, but of the others, which ones say conclusively "This is definitely not a valid receipt"? Seems like a fundamental question, but it is not clear to me from the docs: https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html


Eg.

21002 is clearly a problem with the request, so doesn't necessarily mean the receipt is false.

21005 is clearly not a receipt problem.

21007 and 21008 are simply asking the wrong server, not a receipt problem.

21010 does seem to indicate the receipt is invalid.

21003 says the receipt could not be authenticated. Does that mean the user mistyped their password? Or is this, just like 21010, conclusive proof the receipt is invalid?


Thanks in advance.

Drew

In all cases you tell the user [NSString string WithFormat: “sorry, but the receipt for your IAP could not be verified at this time. Please try again later. If you wish to discuss this problem with us use the contact button and tell us the error code is %@“, error code]. No need to include “Gottcha, you crook” if particular error codes appear.

Which status codes are conclusive proof of invalidity?
 
 
Q