Этот вопрос соответствует предоставленным сведениям о пользовательских подписках в Получить подписки для пользователей в Магазине Microsoft. API .
Ссылка на изображениевыше, пользователь покупает план подписки monthly auto renewing
в день 0, который, как ожидается, будет продлен магазином в день 30. У нас есть задания по обновлению, выполняемые каждые шесть часов, которые выбирают кандидатов, срок действия которых истекает в ближайшие 6 часов или около того.
Итак, где-то на 29-й день будет запущена наша работа по продлению, чтобы проверить, не забрал ли уже магазин пользователя за продление.Во время выполнения задания могут возникать различные состояния сценария:
- Подписка пользователя уже продлена для следующего цикла.
- Магазин еще не попытался продлить подписку пользователя в Магазине.(маловероятно).
- Пользователь решил отключить продление для следующего цикла.
- Магазин не смог зарядить пользователя и пытается повторно выставить счет.
- Подписка пользователябыл отменен разработчиком (с возмещением или без него).
На основании документации есть два свойства, которые могут помочь нам определить приведенные выше сценарии:
- recurrenceState
- expirationTime
Исходя из нашего понимания, мы создали эту таблицу для вышеуказанных сценариев:
Case # Recurrence State Expiration Time
1 Active Day 60
2 Active Day 30
3 Active Day 30
4 InDunning Day 30
5 Canceled Less than day 30
Вопросы
Есть ли способ, которым мы можем различить случаи 2 и 3?
Кроме того, мы можем игнорировать случай 2, потому что это маловероятно,Но мы все же потребовали бы, чтобы были проведены вычисления дат, чтобы различать случаи 1 и 3, поскольку обе даты являются будущими датами от текущей даты.Есть ли лучший способ для этого, чем полагаться на расчеты даты?
Случай 2 маловероятен, поскольку Microsoft Store начинает взимать плату с пользователя за 14 дней до даты продления.В случае сбоя биллинга он переходит в состояние 4. Теперь допустим, что Store взимает плату с пользователя в 14-й день, а он отключает подписку в 20-й день (для следующего цикла), будет ли пользователь возвращен Microsoft и как это отразится на этом состоянии.в ответе API.
PS:
Мы по-прежнему хороши, если нам нужно проверить, истекла ли будущая или текущая дата с текущей даты.
Невозможно, чтобы задание продления, запущенное после 30-го дня, выбрало кандидатов, поскольку наша последующая система автоматически отменит подписку, если она не будет продлена до 30 дня, и мыУ меня нет контроля для изменения этой логики в нисходящей системе.