in typescript/src/pubsub/apple-common.ts [376:412]
function parseUnifiedReceipt(
payload: unknown,
): Result<string, UnifiedReceiptInfo> {
if (!isObject(payload)) {
return err("The unified receipt object that Apple gave us isn't an object");
}
const latestReceiptInfo = parseArray(parseAppleReceiptInfo)(
payload.latest_receipt_info,
);
const pendingRenewalInfo = parseArray(parsePendingRenewalInfo)(
payload.pending_renewal_info,
);
if (latestReceiptInfo.kind === ResultKind.Err) {
return latestReceiptInfo;
}
if (pendingRenewalInfo.kind === ResultKind.Err) {
return pendingRenewalInfo;
}
if (typeof payload.environment !== 'string') {
return err('parseUnifiedReceipt: missing field: environment');
}
if (typeof payload.latest_receipt !== 'string') {
return err('parseUnifiedReceipt: missing field: latest_receipt');
}
if (typeof payload.status !== 'number') {
return err('parseUnifiedReceipt: missing field: status');
}
return ok({
environment: payload.environment,
latest_receipt: payload.latest_receipt,
status: payload.status,
latest_receipt_info: latestReceiptInfo.value,
pending_renewal_info: pendingRenewalInfo.value,
});
}