使用 Flutter 应用内购买插件检查订阅有效性?

Check subscription validity using Flutters in-app-purchase plugin?

我正在尝试使用 the official Flutter In-App-Purchase plugin 实现应用内购买。我已经开始工作了,除了我无法弄清楚如何判断用户订阅是否仍然有效或是否已过期。即使在我取消测试订阅后,我在连接和执行 queryPastPurchases() 后获得的值与订阅处于活动状态时相同:

productId: test_subscription_1   
transactiondate: 1565682346568   
status: null

verificationData
    source: IAPSource.GooglePlay   
    localVerificationData: {
        "orderId":"GPA.1234-1234-1234-12345",
        "packageName":"com.example.myapp",
        "productId":"test_subscription_1",
        "purchaseTime":1565682346568,
        "purchaseState":0,
        "purchaseToken":"<long string>",
        "autoRenewing":false
    }   
    serverVerificationData: "<long string>"

我是否应该简单地硬编码我的订阅期并将当前时间与 purchaseTime + 订阅期进行比较?这甚至适用于自动续订吗?如果用户将 phone 上的日期更改为一年前怎么办?似乎应该有一些值应该给我到期时间或至少一个布尔值 true/false 来指示订阅是否仍然有效?

官方应用内购买插件处理进行购买,但不提供专门处理自动续订订阅所需的所有后端基础设施。

您问题的简短回答是将此购买信息发送至 your server and manage subscription status there. Alternatively you can look into a managed solution like purchases_flutter: https://pub.dev/packages/purchases_flutter/

我用过“purchases_flutter”,过程很简单。您可以通过调用插件自带的方法来检查订阅状态。查看这篇文章,其中包含一个示例 https://medium.com/flutter-community/in-app-purchases-with-flutter-a-comprehensive-step-by-step-tutorial-b96065d79a21