public PaymentRequestService( [NotNull] IPaymentRequestRepository paymentRequestRepository, [NotNull] IOrderService orderService, [NotNull] IPaymentRequestPublisher paymentRequestPublisher, [NotNull] ITransferService transferService, [NotNull] IPaymentRequestStatusResolver paymentRequestStatusResolver, [NotNull] ILogFactory logFactory, [NotNull] IWalletManager walletsManager, [NotNull] ITransactionsService transactionsService, [NotNull] ExpirationPeriodsSettings expirationPeriods, [NotNull] IMerchantWalletService merchantWalletService, [NotNull] IDistributedLocksService paymentLocksService, [NotNull] ITransactionPublisher transactionPublisher, [NotNull] IDistributedLocksService checkoutLocksService, [NotNull] IWalletBalanceValidator walletBalanceValidator, [NotNull] RetryPolicySettings retryPolicySettings, [NotNull] IAutoSettleSettingsResolver autoSettleSettingsResolver, [NotNull] IAssetSettingsService assetSettingsService) { _paymentRequestRepository = paymentRequestRepository ?? throw new ArgumentNullException(nameof(paymentRequestRepository)); _orderService = orderService ?? throw new ArgumentNullException(nameof(orderService)); _paymentRequestPublisher = paymentRequestPublisher ?? throw new ArgumentNullException(nameof(paymentRequestPublisher)); _transferService = transferService ?? throw new ArgumentNullException(nameof(transferService)); _paymentRequestStatusResolver = paymentRequestStatusResolver ?? throw new ArgumentNullException(nameof(paymentRequestStatusResolver)); _log = logFactory.CreateLog(this); _walletsManager = walletsManager ?? throw new ArgumentNullException(nameof(walletsManager)); _transactionsService = transactionsService ?? throw new ArgumentNullException(nameof(transactionsService)); _expirationPeriods = expirationPeriods ?? throw new ArgumentNullException(nameof(expirationPeriods)); _merchantWalletService = merchantWalletService ?? throw new ArgumentNullException(nameof(merchantWalletService)); _paymentLocksService = paymentLocksService ?? throw new ArgumentNullException(nameof(paymentLocksService)); _transactionPublisher = transactionPublisher ?? throw new ArgumentNullException(nameof(transactionPublisher)); _checkoutLocksService = checkoutLocksService ?? throw new ArgumentNullException(nameof(checkoutLocksService)); _walletBalanceValidator = walletBalanceValidator ?? throw new ArgumentNullException(nameof(walletBalanceValidator)); _autoSettleSettingsResolver = autoSettleSettingsResolver ?? throw new ArgumentNullException(nameof(autoSettleSettingsResolver)); _assetSettingsService = assetSettingsService ?? throw new ArgumentNullException(nameof(assetSettingsService)); _settlementRetryPolicy = Policy .Handle <InsufficientFundsException>() .Or <SettlementOperationFailedException>() .Or <SettlementOperationPartiallyFailedException>() .WaitAndRetryAsync( retryPolicySettings.SettlementAttempts, attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), (ex, timespan) => _log.Error(ex, "Settlement with retry")); _paymentRetryPolicy = Policy .Handle <InsufficientFundsException>() .Or <PaymentOperationFailedException>() .Or <PaymentOperationPartiallyFailedException>() .WaitAndRetryAsync( retryPolicySettings.DefaultAttempts, attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), (ex, timespan) => _log.Error(ex, "Payment with retry")); }
public PaymentRequestService( IPaymentRequestRepository paymentRequestRepository, IOrderService orderService, IPaymentRequestPublisher paymentRequestPublisher, ITransferService transferService, IPaymentRequestStatusResolver paymentRequestStatusResolver, ILog log, IWalletManager walletsManager, ITransactionsService transactionsService, ExpirationPeriodsSettings expirationPeriods) { _paymentRequestRepository = paymentRequestRepository; _orderService = orderService; _paymentRequestPublisher = paymentRequestPublisher; _transferService = transferService; _paymentRequestStatusResolver = paymentRequestStatusResolver; _log = log; _walletsManager = walletsManager; _transactionsService = transactionsService; _expirationPeriods = expirationPeriods; }