Как мы действовали: мы смотрели связку подписки с её последним платежом и проверяли, был ли он с критичной ошибкой. Если был, то точно отписывали. В итоге в базе остались только те карты, которые мы определили, как не имеющие критичной ошибки.
Еще одной сложностью стала невозможность проверить срок действия карт. Потому что в последнее время из-за санкций российские банки продлевают карты без перевыпуска. В связи с этим мы не могли старых пользователей отписать по признаку истекшего срока действия карты. Поэтому мы добавили их в очередь с попыткой один раз у всех списать деньги. И так как эта нагрузка должна быть распределенной, мы разделили тестовые платежи на транши.
Еще мы нашли одну закономерность, которую не учли, потому что сразу никто из нас не допёр: я не могла это предугадать, а клиент не подумал, что это может быть важно. Соответственно, это мы тоже исправили.
После тестового прогона убедились, что все списывается хорошо, процент ошибок ожидаемый, и, соответственно, все это дело запустили. На все это ушло 6 дней.