如何在使用 Google 应用内结算的 Android 应用中的特定日期结束应用内购买的有效期?

问题描述

所以这就是我想要做的。用户可以购买从 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 集中提取所有课程。

,

为每门课程创建一个新的应用内产品,在他们可以开始购买的日期激活它,并在购买为时已晚时将其停用。