我正在尝试使用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
+订阅期?这甚至可以在自动续订之间工作吗?如果用户将他的手机上的日期更改为一年前呢?似乎应该有一些值,要么给予我到期时间,要么至少一个布尔值true/false来指示订阅是否仍然有效?
3条答案
按热度按时间x6h2sr281#
官方的应用内购买插件处理 * 购买 *,但不提供所有的后端基础设施,你需要专门处理自动续订订阅。
您的问题的简短答案是将此购买信息发送到your server并在那里管理订阅状态。或者,您也可以查看
purchases_flutter
之类的托管解决方案:https://pub.dev/packages/purchases_flutter/jk9hmnmh2#
我用过“purchases_flutter”,这个过程很简单。你可以通过调用插件自带的方法来检查订阅的状态。看看这篇文章,其中包括一个https://medium.com/flutter-community/in-app-purchases-with-flutter-a-comprehensive-step-by-step-tutorial-b96065d79a21的例子
vyswwuz23#
对于任何仍有问题的人,有一个简单的解决方案来验证iOS上的收据
下面是一个简单的js代码片段,您可以使用它从Apple获取实际的收据,并使用它来验证订阅
注意您需要使用Apple Developer帐户为应用生成应用特定密码
进一步帮助
https://developer.apple.com/documentation/appstorereceipts/expiration_intent