Exemple #1
0
 public InvoiceController(
     Network network,
     InvoiceRepository invoiceRepository,
     UserManager <ApplicationUser> userManager,
     BTCPayWallet wallet,
     IRateProvider rateProvider,
     StoreRepository storeRepository,
     InvoiceWatcher watcher,
     ExplorerClient explorerClient,
     IFeeProvider feeProvider)
 {
     _Explorer          = explorerClient ?? throw new ArgumentNullException(nameof(explorerClient));
     _StoreRepository   = storeRepository ?? throw new ArgumentNullException(nameof(storeRepository));
     _Network           = network ?? throw new ArgumentNullException(nameof(network));
     _InvoiceRepository = invoiceRepository ?? throw new ArgumentNullException(nameof(invoiceRepository));
     _Wallet            = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _RateProvider      = rateProvider ?? throw new ArgumentNullException(nameof(rateProvider));
     _Watcher           = watcher ?? throw new ArgumentNullException(nameof(watcher));
     _UserManager       = userManager;
     _FeeProvider       = feeProvider ?? throw new ArgumentNullException(nameof(feeProvider));
 }
 public InvoiceController(InvoiceRepository invoiceRepository,
                          CurrencyNameTable currencyNameTable,
                          UserManager <ApplicationUser> userManager,
                          BTCPayWallet wallet,
                          IRateProvider rateProvider,
                          StoreRepository storeRepository,
                          EventAggregator eventAggregator,
                          InvoiceWatcherAccessor watcher,
                          ExplorerClient explorerClient,
                          BTCPayNetworkProvider networkProvider,
                          IFeeProviderFactory feeProviderFactory)
 {
     _CurrencyNameTable  = currencyNameTable ?? throw new ArgumentNullException(nameof(currencyNameTable));
     _Explorer           = explorerClient ?? throw new ArgumentNullException(nameof(explorerClient));
     _StoreRepository    = storeRepository ?? throw new ArgumentNullException(nameof(storeRepository));
     _InvoiceRepository  = invoiceRepository ?? throw new ArgumentNullException(nameof(invoiceRepository));
     _Wallet             = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _RateProvider       = rateProvider ?? throw new ArgumentNullException(nameof(rateProvider));
     _Watcher            = (watcher ?? throw new ArgumentNullException(nameof(watcher))).Instance;
     _UserManager        = userManager;
     _FeeProviderFactory = feeProviderFactory ?? throw new ArgumentNullException(nameof(feeProviderFactory));
     _EventAggregator    = eventAggregator;
     _NetworkProvider    = networkProvider;
 }
Exemple #3
0
        public void CanCalculateCryptoDue2()
        {
            var dummy = new Key().PubKey.GetAddress(Network.RegTest).ToString();

#pragma warning disable CS0618
            InvoiceEntity invoiceEntity = new InvoiceEntity();
            invoiceEntity.Payments           = new System.Collections.Generic.List <PaymentEntity>();
            invoiceEntity.ProductInformation = new ProductInformation()
            {
                Price = 100
            };
            PaymentMethodDictionary paymentMethods = new PaymentMethodDictionary();
            paymentMethods.Add(new PaymentMethod()
            {
                CryptoCode = "BTC",
                Rate       = 10513.44m,
            }.SetPaymentMethodDetails(new BTCPayServer.Payments.Bitcoin.BitcoinLikeOnChainPaymentMethod()
            {
                TxFee          = Money.Coins(0.00000100m),
                DepositAddress = dummy
            }));
            paymentMethods.Add(new PaymentMethod()
            {
                CryptoCode = "LTC",
                Rate       = 216.79m
            }.SetPaymentMethodDetails(new BTCPayServer.Payments.Bitcoin.BitcoinLikeOnChainPaymentMethod()
            {
                TxFee          = Money.Coins(0.00010000m),
                DepositAddress = dummy
            }));
            invoiceEntity.SetPaymentMethods(paymentMethods);

            var btc        = invoiceEntity.GetPaymentMethod(new PaymentMethodId("BTC", PaymentTypes.BTCLike), null);
            var accounting = btc.Calculate();

            invoiceEntity.Payments.Add(new PaymentEntity()
            {
                Accounted = true, CryptoCode = "BTC"
            }.SetCryptoPaymentData(new BitcoinLikePaymentData()
            {
                Output = new TxOut()
                {
                    Value = Money.Coins(0.00151263m)
                }
            }));
            accounting = btc.Calculate();
            invoiceEntity.Payments.Add(new PaymentEntity()
            {
                Accounted = true, CryptoCode = "BTC"
            }.SetCryptoPaymentData(new BitcoinLikePaymentData()
            {
                Output = new TxOut()
                {
                    Value = accounting.Due
                }
            }));
            accounting = btc.Calculate();
            Assert.Equal(Money.Zero, accounting.Due);
            Assert.Equal(Money.Zero, accounting.DueUncapped);

            var ltc = invoiceEntity.GetPaymentMethod(new PaymentMethodId("LTC", PaymentTypes.BTCLike), null);
            accounting = ltc.Calculate();

            Assert.Equal(Money.Zero, accounting.Due);
            // LTC might have over paid due to BTC paying above what it should (round 1 satoshi up)
            Assert.True(accounting.DueUncapped < Money.Zero);

            var paymentMethod = InvoiceWatcher.GetNearestClearedPayment(paymentMethods, out var accounting2, null);
            Assert.Equal(btc.CryptoCode, paymentMethod.CryptoCode);
#pragma warning restore CS0618
        }
 public MainWindow()
 {
     InitializeComponent();
     InvoiceWatcher invoiceWatcher = new InvoiceWatcher();
 }