purchase method

  1. @override
Future<bool> purchase({
  1. required String productId,
  2. dynamic product,
})
override

Purchase product by id

Implementation

@override
Future<bool> purchase({
  required String productId,
  dynamic product,
}) async {
  assert(product != null, 'Product can\'t be null');

  logger.info('Start purchase $productId');

  if (product is! Package) {
    throw const WrongProductTypeProvidedException();
  }

  try {
    final result = await Purchases.purchasePackage(product);

    _updateCustomerInfo(result);

    return subscriptionStatus.value;
  } on PlatformException catch (e) {
    logger.info('Purchase product, platform exc $e');
    throwErrorOnPlatformException(e);
  } on Object catch (_) {
    logger.info('Failed to purchase product');
    throw const PurchaseFailedException(ErrorCode.unknown);
  }
}