此问题与Microsoft Store的Get subscriptions for User API中提供的有关用户订阅的详细信息一致。
参考上图,用户在第0天购买了monthly auto renewing
订阅计划,该计划预计将在第30天由商店更新。我们每6个小时运行一次更新工作,这些工作会在下一个即将到期的工作中进行选择6个小时左右。
因此,在第29天的某个地方,我们的续签工作将运行,以检查商店是否已经向用户收取了续签费用。作业运行时可能会出现不同的方案状态:
根据文档,有两个有趣的属性可以帮助我们识别上述情况:
根据我们的理解,我们针对以下情况提出了该表格:
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。现在,假设商店在第14天向用户收费,而他在第20天(对于下一个周期)关闭了订阅,Microsoft将向用户退款以及该状态如何反映在API响应中。
PS:
如果我们必须检查日期是从当前日期过去还是未来,那么我们仍然很好。
在第30天之后运行的续签作业将无法选择候选人,因为如果直到30天才续签,我们的下游系统将自动取消订阅。更改下游系统中的逻辑。