listenToPurchaseUpdated method

Future<void> listenToPurchaseUpdated(
  1. 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;
  }
}