in_app_purchase 如何从 serverVerificationData 获取 android 验证所需的数据
in_app_purchase how do I get the data needed for android verification from the serverVerificationData
我正在尝试在我的 flutter 应用程序中为 IAP 实施服务器端验证。我正在使用包
https://pub.dev/packages/in_app_purchase
版本:^0.3.4+8
而且我很困惑如何获取数据来验证我对 android 和 IOS 的购买。在 documentation 他们说
"or verify the data using your own server with
serverVerificationData."
这个字符串似乎 return 某种编码字符串。然后如何从该字符串中提取所需的数据?我尝试了 base64Decode() 因为 localVerificationData 是 base64Encoded 但这没有用。
Android需要包名、购买id和purchaseToken。 Ios 需要一个对象收据数据。我对如何从 serverVerificationData 字符串中获取该数据感到困惑。
我目前首先实施android。
localVerificationData 文档说
The data used for local verification.
If the source is IAPSource.AppStore, this data is a based64 encoded
string. The structure of the payload is defined using ASN.1. If the
source is IAPSource.GooglePlay, this data is a JSON String.
因此 serverVerificationData 必须与 localVerificationData 不同,因为它看起来根本不像 JSON。我也不确定 post 此处的 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上的购买令牌。
我正在尝试在我的 flutter 应用程序中为 IAP 实施服务器端验证。我正在使用包
https://pub.dev/packages/in_app_purchase
版本:^0.3.4+8
而且我很困惑如何获取数据来验证我对 android 和 IOS 的购买。在 documentation 他们说
"or verify the data using your own server with serverVerificationData."
这个字符串似乎 return 某种编码字符串。然后如何从该字符串中提取所需的数据?我尝试了 base64Decode() 因为 localVerificationData 是 base64Encoded 但这没有用。
Android需要包名、购买id和purchaseToken。 Ios 需要一个对象收据数据。我对如何从 serverVerificationData 字符串中获取该数据感到困惑。
我目前首先实施android。
localVerificationData 文档说
The data used for local verification.
If the source is IAPSource.AppStore, this data is a based64 encoded string. The structure of the payload is defined using ASN.1. If the source is IAPSource.GooglePlay, this data is a JSON String.
因此 serverVerificationData 必须与 localVerificationData 不同,因为它看起来根本不像 JSON。我也不确定 post 此处的 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上的购买令牌。