问题描述
所以这就是我想要做的。用户可以购买从 4 月 15 日到 8 月 18 日运行的特定课程。用户也可以在中间(例如六月)加入,但必须支付相同的金额。现在,我想在 8 月 19 日结束所有购买的有效期,并从 20 日重新开始运行课程。我该如何实施?真的有办法实现吗?
解决方法
您需要出售可以访问课程的定时密钥(许可证?),而不是出售课程。
在 April
之后购买的任何密钥的结束日期为 August
。
在 August
之后购买的任何密钥的结束日期为 April
。
因此只会创建一门课程,您的密钥会根据时间范围授予访问权限。
但是因为您可能不希望在 April/2021
购买了密钥的人可以访问 April/2022
中的课程,所以您需要为每个时间范围创建一个密钥。这与其他解决方案没有什么不同,但这样您就将课程与时间范围分开了。这将提供更大的灵活性,例如授予访问多个课程的权限。而不是授予对多门课程的访问权限的课程,这意义不大。
使用 java 对象编辑小的深入解释。
public class Course{
public long id; //id for the course
public String name; // name of the course for display
}
//one per purchasable item
//once a item is no longer purchasable a new Key will need to be made
//with the new values.
public class Key {
public long id;
public String name; //optional name for a bundle of courses.
public long startDate; //state date in epoch
public long endDate; //end date in epoch
public String price; // price of the key
public List<Course> courses; // list of all courses this key provides access to.
}
public class User {
public long id;
public String username;
public String email;
public List<Key> keys; // List of current keys user has access to.
}
当用户登录时,应用程序将有权访问用户 keys
。
然后,该应用将从用户拥有的 keys
集中提取所有课程。
为每门课程创建一个新的应用内产品,在他们可以开始购买的日期激活它,并在购买为时已晚时将其停用。