gpt4 book ai didi

ios - in_app_purchase 如何从 serverVerificationData 获取安卓验证所需的数据

转载 作者:行者123 更新时间:2023-12-04 08:53:44 63 4
gpt4 key购买 nike

我正在尝试在我的 flutter 应用程序中为 IAP 实现服务器端验证。我正在使用该包
https://pub.dev/packages/in_app_purchase
版本:^0.3.4+8
我很困惑如何获取数据来验证我对 android 和 IOS 的购买。在 documentation他们说

"or verify the data using your own server withserverVerificationData."


这个字符串似乎返回某种编码的字符串。然后我如何从这个字符串中提取所需的数据?我尝试了 base64Decode(),因为 localVerificationData 是 base64Encoded 但这不起作用。
Android 需要包名、购买 ID 和购买 token 。并且 Ios 需要一个对象收据数据。我对如何从 serverVerificationData 字符串中获取该数据感到困惑。
我目前正在首先实现android。
localVerificationData 文档说

The data used for local verification.

If the source is IAPSource.AppStore, this data is a based64 encodedstring. The structure of the payload is defined using ASN.1. If thesource is IAPSource.GooglePlay, this data is a JSON String.


所以 serverVerificationData 必须与 localVerificationData 不同,因为它看起来根本不像 JSON。我也不确定在此处发布 serverVerificationData 是否安全,因为它可能包含敏感信息。
这是一个类似于我在 android 上得到的字符串,只是我改变了所有的字母、数字等。所以它只是关于格式
zdfdzcdshxvbxmgbafdxvdzt.JK-GR58OHRPOGFEFHEGVEACBEIFDAPDH_EFHEWFEHFHPEGVERBWBASZWDAWODPAWD-HDSWCGOEWFP-EFPEQFHPEDHEWYIFEWFUWEFDASCNAQWFDefphFEQUIWEFpofgewpfFEWHFPWEF
在 repo 中,他们表明他们调用了 _verifyPurchase(purchase);在示例中没有实现。
https://github.com/flutter/plugins/tree/master/packages/in_app_purchase#listening-to-purchase-updates
https://github.com/flutter/plugins/blob/5a183ac54a515be096d01f3a35546c5d89a30dca/packages/in_app_purchase/example/lib/main.dart#L350
他们说你应该总是验证
https://github.com/flutter/plugins/blob/5a183ac54a515be096d01f3a35546c5d89a30dca/packages/in_app_purchase/example/lib/main.dart#L328
这是我当前的代码
 Future<dynamic> verifyAndroid(PurchaseDetails details) async {
DatabaseService databaseService = Get.find<DatabaseService>();
String verificationData = details.verificationData.serverVerificationData;
// zdfdzcdshxvbxmgbafdxvdzt.JK-GR58OHRPOGFEFHEGVEACBEIFDAPDH_EFHEWFEHFHPEGVERBWBASZWDAWODPAWD-HDSWCGOEWFP-EFPEQFHPEDHEWYIFEWFUWEFDASCNAQWFDefphFEQUIWEFpofgewpfFEWHFPWEF
String packageName = ''; //get from verificationData
String productId = ''; //get from verificationData
String purchaseToken = ''; //get from verificationData
final response = await databaseService.verifyInAppPurchaseAndroid(packageName, productId, purchaseToken);
return response;
}

最佳答案

结果发现数据在 detail.verificationData.localVerificationData 而不是 detail.verificationData.serverVerificationData 中,detail.verificationData.serverVerificationData 是 Android 上的购买 token 。

关于ios - in_app_purchase 如何从 serverVerificationData 获取安卓验证所需的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63954948/

63 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com