paymentQueueWrapper method

Future paymentQueueWrapper({
  1. String? payId,
  2. bool delayed = true,
  3. bool finish = true,
})

Implementation

Future paymentQueueWrapper(
    {String? payId, bool delayed = true, bool finish = true}) async {
  if (Platform.isIOS) {
    var transactions = await SKPaymentQueueWrapper().transactions();
    if (payId != null) {
      transactions = transactions.skipWhile((value) {
        return payId.isEmpty == false &&
            payId != value.payment.productIdentifier;
      }).toList();
    }
    AppConfig.printLog('paymentQueueWrapper: ${transactions.length}');
    if (transactions.isEmpty == false) {
      if (finish) {
        AppConfig.printLog(
            'paymentQueueWrapper finishTransaction: ${transactions.length}');
        for (SKPaymentTransactionWrapper wrapper in transactions) {
          await SKPaymentQueueWrapper().finishTransaction(wrapper);
        }
      }
      if (delayed) {
        await Future.delayed(const Duration(seconds: 5), () async {
          await paymentQueueWrapper(finish: finish);
        });
      }
    }
  }
}