在Flutter应用程序中使用IAP的in_app_purchase 0.6.0插件时,我找不到如何验证购买的方法。在软件包示例中,验证购买的部分显示:
// IMPORTANT!! Always verify a purchase before delivering the product.
// For the purpose of an example, we directly return true.
return Future<bool>.value(true);
我发现您可以从购买详情获得验证数据&有3个参数可用
purchaseDetails.verificationData.serverVerificationData
purchaseDetails.verificationData.localVerificationData
purchaseDetails.verificationData.source
当我测试的时候,服务器和本地的值是一样的,比较它们是否被认为是验证?代码中注解的措辞方式让人觉得你应该把其中一个值和源代码(ios或android)传递给其他验证方法。如果是这样的话,应该使用什么方法来验证?
3条答案
按热度按时间l7mqbcuq1#
这是从in_app_purchase 0.6.0验证过程的一个例子拷贝过来的,应该是在服务器上
purchaseDetails.verificationData.serverVerificationData
是一个回执,用base64编码,需要把它发送到服务器上,服务器端就可以用它来验证App/Play商店了。nbnkbykc2#
坏消息是IAP包没有提供直接的方法来验证从各个应用商店购买的产品;这必须通过使用相应的商店API来完成,建议您将购买数据存储在自己的服务器中,因为您需要存储purchaseToken以便调用API并返回相应购买的正确数据,并且如果用户删除应用程序/获得新手机或清除数据,从用户体验的观点来看(或者为了处理过期/退款的预订),没有办法检索该信息。
我建议阅读谷歌flutter IAP教程:https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases#9
特别是关于购买处理程序的部分,它展示了如何连接到Google Play商店和Apple storeKit API来验证您的购买;诀窍是本教程只为购买时验证而编写,但是您可以重新使用这些函数以根据需要进行验证。
您需要熟悉(或愿意学习)REST API调用和TS,才能跟随本教程沿着。
5lhxktic3#
这里是detailed instruction验证Flutter应用内购买使用netcore 6 Web API的iOS和Android。