public BtcTransferService(IBitcoinApiClient bitcoinServiceClient,
                           ITransferRepository transferRepository,
                           ITransactionsService transactionServicey,
                           ITransactionPublisher transactionPublisher,
                           ExpirationPeriodsSettings expirationPeriods)
 {
     _bitcoinServiceClient =
         bitcoinServiceClient ?? throw new ArgumentNullException(nameof(bitcoinServiceClient));
 }
Exemplo n.º 2
0
        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"));
        }
Exemplo n.º 3
0
 public StartupManager(
     [NotNull] AppSettings appSettings,
     [NotNull] IPaymentRequestExpirationHandler paymentRequestExpirationHandler,
     [NotNull] IWalletEventsPublisher walletEventsPublisher,
     [NotNull] IPaymentRequestPublisher paymentRequestPublisher,
     [NotNull] ITransactionPublisher transactionPublisher,
     [NotNull] ILogFactory logFactory)
 {
     _appSettings = appSettings ?? throw new ArgumentNullException(nameof(appSettings));
     _paymentRequestExpirationHandler = paymentRequestExpirationHandler ??
                                        throw new ArgumentNullException(nameof(paymentRequestExpirationHandler));
     _walletEventsPublisher   = walletEventsPublisher ?? throw new ArgumentNullException(nameof(walletEventsPublisher));
     _paymentRequestPublisher = paymentRequestPublisher ?? throw new ArgumentNullException(nameof(paymentRequestPublisher));
     _transactionPublisher    = transactionPublisher ?? throw new ArgumentNullException(nameof(transactionPublisher));
     _log = logFactory.CreateLog(this);
 }
Exemplo n.º 4
0
 public RefundService(
     IPaymentRequestService paymentRequestService,
     ITransactionsService transactionsService,
     ITransferService transferService,
     TimeSpan refundExpirationPeriod,
     ITransactionPublisher transactionPublisher,
     ILog log,
     IBlockchainAddressValidator blockchainAddressValidator)
 {
     _paymentRequestService =
         paymentRequestService ?? throw new ArgumentNullException(nameof(paymentRequestService));
     _transactionsService    = transactionsService ?? throw new ArgumentNullException(nameof(transactionsService));
     _transferService        = transferService ?? throw new ArgumentNullException(nameof(transferService));
     _refundExpirationPeriod = refundExpirationPeriod;
     _transactionPublisher   =
         transactionPublisher ?? throw new ArgumentNullException(nameof(transactionPublisher));
     _log = log ?? throw new ArgumentNullException(nameof(log));
     _blockchainAddressValidator = blockchainAddressValidator ??
                                   throw new ArgumentNullException(nameof(blockchainAddressValidator));
 }
 public RefundService(
     [NotNull] IPaymentRequestService paymentRequestService,
     [NotNull] ITransactionsService transactionsService,
     [NotNull] ITransferService transferService,
     TimeSpan refundExpirationPeriod,
     [NotNull] ITransactionPublisher transactionPublisher,
     [NotNull] ILogFactory logFactory,
     [NotNull] IBlockchainAddressValidator blockchainAddressValidator)
 {
     _paymentRequestService =
         paymentRequestService ?? throw new ArgumentNullException(nameof(paymentRequestService));
     _transactionsService    = transactionsService ?? throw new ArgumentNullException(nameof(transactionsService));
     _transferService        = transferService ?? throw new ArgumentNullException(nameof(transferService));
     _refundExpirationPeriod = refundExpirationPeriod;
     _transactionPublisher   =
         transactionPublisher ?? throw new ArgumentNullException(nameof(transactionPublisher));
     _log = logFactory.CreateLog(this);
     _blockchainAddressValidator = blockchainAddressValidator ??
                                   throw new ArgumentNullException(nameof(blockchainAddressValidator));
 }
Exemplo n.º 6
0
 public TransactionController(ITransactionPublisher transactionPublisher, ITransactionValidator transactionValidator)
 {
     _iTransactionPublisher = transactionPublisher;
     _iTransactionValidator = transactionValidator;
 }