in typescript/src/services/appleValidateReceipts.ts [123:161]
function checkResponseStatus(
response: AppleValidationServerResponse,
): AppleValidationServerResponse {
if (
(response.status >= 21100 && response.status <= 21199) ||
response['is-retryable']
) {
console.error(
`Server error received from Apple, got status ${response.status}, will retry`,
);
throw new ProcessingError(`Server error, status ${response.status}`, true);
}
if (response.status === 21007) {
const msg = `Got status 21007 and we're in ${Stage}, so we are processing a receipt from the wrong environment.`;
console.error(msg);
throw new GracefulProcessingError(
`Got status ${response.status} and we're in ${Stage}`,
);
}
if (response.status === 21008) {
console.error(
`Got status ${response.status} and we're in ${Stage}, so we are processing a receipt from the wrong environment`,
);
throw new ProcessingError(
`Got status ${response.status} and we're in ${Stage}`,
);
}
if (response.status != 0 && response.status != 21006) {
console.error(
`Invalid receipt, got status ${response.status} for ${response.latest_receipt}`,
);
throw new ProcessingError(`Invalid receipt, got status ${response.status}`);
}
if (!response.latest_receipt_info && !response.latest_expired_receipt_info) {
console.error(`No receipt info`);
throw new ProcessingError(`Invalid validation response, no receipt info`);
}
return response;
}