ios: cancel invalid subscriptions without errors (#11035)

This commit is contained in:
Matteo Pagliazzi
2019-02-27 18:48:13 +01:00
committed by GitHub
parent cc766d2260
commit 45a9d6d17b

View File

@@ -239,6 +239,9 @@ api.cancelSubscribe = async function cancelSubscribe (user, headers) {
await iap.setup(); await iap.setup();
let dateTerminated;
try {
let appleRes = await iap.validate(iap.APPLE, plan.additionalData); let appleRes = await iap.validate(iap.APPLE, plan.additionalData);
let isValidated = iap.isValidated(appleRes); let isValidated = iap.isValidated(appleRes);
@@ -248,8 +251,14 @@ api.cancelSubscribe = async function cancelSubscribe (user, headers) {
if (purchases.length === 0) throw new NotAuthorized(this.constants.RESPONSE_INVALID_RECEIPT); if (purchases.length === 0) throw new NotAuthorized(this.constants.RESPONSE_INVALID_RECEIPT);
let subscriptionData = purchases[0]; let subscriptionData = purchases[0];
let dateTerminated = new Date(Number(subscriptionData.expirationDate)); dateTerminated = new Date(Number(subscriptionData.expirationDate));
if (dateTerminated > new Date()) throw new NotAuthorized(this.constants.RESPONSE_STILL_VALID); if (dateTerminated > new Date()) throw new NotAuthorized(this.constants.RESPONSE_STILL_VALID);
} catch (err) {
// If we have an invalid receipt, cancel anyway
if (!err || !err.validatedData || err.validatedData.is_retryable === true || err.validatedData.status !== 21010) {
throw err;
}
}
await payments.cancelSubscription({ await payments.cancelSubscription({
user, user,