listenToPurchaseUpdated method
Future<void>
listenToPurchaseUpdated(
- List<PurchaseDetails?> purchaseDetailsList
)
Implementation
Future<void> listenToPurchaseUpdated(
List<PurchaseDetails?> purchaseDetailsList) async {
AppConfig.printLog(
'listenToPurchaseUpdated: ${purchaseDetailsList.length}');
if (purchaseDetailsList.isNotEmpty) {
purchaseDetailsList = purchaseDetailsList.reversed.toList();
Map payPurchase = {};
for (PurchaseDetails? purchaseDetail in purchaseDetailsList) {
if (purchaseDetail!.status == PurchaseStatus.purchased ||
purchaseDetail.status == PurchaseStatus.restored) {
String md5Str = md5
.convert(const Utf8Encoder().convert(
purchaseDetail.verificationData.serverVerificationData))
.toString();
AppConfig.printLog('purchaseUpdated md5Str: $md5Str');
if (payPurchase[purchaseDetail.productID] != md5Str) {
payPurchase[purchaseDetail.productID] = md5Str;
await purchaseUpdated(purchaseDetail);
// } else if (payPurchase[purchaseDetail.productID] == md5Str) {
// completePurchaseInPay(purchaseDetail);
}
} else {
await purchaseUpdated(purchaseDetail);
}
}
} else if (restored) {
popDialog();
delegate.logEvent('${payInType ?? ''}回调为空清空本地缓存');
SpUtil.putString(RechargeConfig.inappToken, '');
SpUtil.putString(RechargeConfig.inappSign, '');
SpUtil.putString(RechargeConfig.inappOrderId, '');
SpUtil.putString(RechargeConfig.inappPrice, '');
SpUtil.putString(RechargeConfig.inappCode, '');
restored = false;
}
}