如何解决in_app_purchase如何从serverVerificationData
我正在尝试在Flutter应用中为IAP实施服务器端验证。我正在使用包裹
https://pub.dev/packages/in_app_purchase
版本:^ 0.3.4 + 8
我很困惑如何获取数据以验证我购买的android和IOS。他们在documentation中说
”或使用您自己的服务器验证数据 serverVerificationData。”
此字符串似乎返回某种编码的字符串。然后如何从该字符串中提取所需的数据?我尝试了base64Decode(),因为localVerificationData是base64Encoded,但这没有用。
Android需要包名称,购买ID和Purchasetoken。 Ios需要一个对象收据数据。我对如何从serverVerificationData字符串获取数据感到困惑。
我目前正在首先实现android。
localVerificationData文档说
用于本地验证的数据。
如果源是IAPSource.AppStore,则此数据是基于base64编码的 串。有效载荷的结构是使用ASN.1定义的。如果 源是IAPSource.GooglePlay,此数据是JSON字符串。
因此,serverVerificationData必须与localVerificationData不同,因为它根本看起来不像JSON。我也不确定在这里发布serverVerificationData是否安全,因为它可能包含敏感信息。
这是一个字符串,类似于我在android上获得的字符串,只是我更改了所有字母,数字等。因此,它的格式差不多
zdfdzcdshxvbxmgbafdxvdzt.JK-GR58OHRPOGFEfheGVEACBEIFDAPDH_EfheWFEHFHPEGVERBWBASZWDAWODPAWD-HDSWCGOEWFP-EFPEQFHPEDHEWYIFEWFUWEFDASCNAQWFDefphFEQUIWEFpofgewpfFEWHFPWEF
在回购中,他们表明他们调用_verifyPurchase(purchase);该示例中没有实现。
他们说你应该经常核实
这是我当前的代码
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上的购买令牌。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。