Flutter 在应用程序购买中我应该在 _verifyPurchase() 中包含啥

Posted

技术标签:

【中文标题】Flutter 在应用程序购买中我应该在 _verifyPurchase() 中包含啥【英文标题】:Flutter In App Purchase What Should I Include in _verifyPurchase()Flutter 在应用程序购买中我应该在 _verifyPurchase() 中包含什么 【发布时间】:2020-11-15 18:46:43 【问题描述】:

您好,我目前一直在使用 Flutter 应用支付插件示例 https://github.com/flutter/plugins/tree/master/packages/in_app_purchase/example。 在付款发生后的代码中有一个名为_verifyPurchase的函数,目前该函数如下。

Future<bool> _verifyPurchase(PurchaseDetails purchaseDetails) 
  // IMPORTANT!! Always verify a purchase before delivering the product.
  // For the purpose of an example, we directly return true.
  return Future<bool>.value(true);

目前它总是返回 true,但我不完全了解我需要在此处包含哪些验证过程来验证购买。

我需要在此处包含哪些验证流程来验证购买

我目前对这个函数中实际需要什么感到困惑。

【问题讨论】:

【参考方案1】:

它们意味着与您的后端服务器进行验证。这样,您的服务器可以检查购买的确认状态,是否已被消费等,而无需在客户端上执行此操作,这不是验证任何事情的安全方法,因为客户端可能会受到损害 - 这就是为什么文档告诉通过您的后端验证购买,在客户端内部执行此操作没有任何意义。 您需要向您的服务器发送购买时提供的令牌(在您的 PurchaseDetails 中您有 .verificationData.serverVerificationData

使用它通过您的后端验证购买(假设您有一个后端),方法是首先将验证数据中的令牌发送到您的后端,然后从它发送到用于此类检查的 Google API。

您还需要在您的 Google Play 开发控制台中设置一个服务帐户,以允许后端访问所需的数据。它不是很复杂,但过程很长,而且还取决于您的后端语言等。最好从这里开始查看官方文档: https://developer.android.com/google/play/developer-api#subscriptions_api_overview

【讨论】:

token 中的token 也是如此androidpublisher.googleapis.com/androidpublisher/v3/…packageName/purchases/subscriptions/subscriptionId/tokens/token?

以上是关于Flutter 在应用程序购买中我应该在 _verifyPurchase() 中包含啥的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:获取过去在 Android 上的购买记录

Flutter In-App-Purchase,每次重启应用如何查看是不是已购买?

如何在 Flutter 中实现应用内购买订阅?

如何在 Flutter iOS 中激活应用内购买

使用flutter在ios中购买应用程序时如何知道应用程序环境是沙箱

如何在 Android 上使用 Flutter 成功完成应用内购买?