Beispiel #1
0
        public override async Task <IPaymentMethodDetails> CreatePaymentMethodDetails(InvoiceLogs logs, ZcashSupportedPaymentMethod supportedPaymentMethod, PaymentMethod paymentMethod,
                                                                                      StoreData store, ZcashLikeSpecificBtcPayNetwork network, object preparePaymentObject)
        {
            if (preparePaymentObject is null)
            {
                return(new ZcashLikeOnChainPaymentMethodDetails()
                {
                    Activated = false
                });
            }

            if (!_ZcashRpcProvider.IsAvailable(network.CryptoCode))
            {
                throw new PaymentMethodUnavailableException($"Node or wallet not available");
            }
            var invoice = paymentMethod.ParentEntity;

            if (!(preparePaymentObject is Prepare ZcashPrepare))
            {
                throw new ArgumentException();
            }
            var feeRatePerKb = await ZcashPrepare.GetFeeRate;
            var address      = await ZcashPrepare.ReserveAddress(invoice.Id);

            var feeRatePerByte = feeRatePerKb.Fee / 1024;

            return(new ZcashLikeOnChainPaymentMethodDetails()
            {
                NextNetworkFee = ZcashMoney.Convert(feeRatePerByte * 100),
                AccountIndex = supportedPaymentMethod.AccountIndex,
                AddressIndex = address.AddressIndex,
                DepositAddress = address.Address,
                Activated = true
            });
        }
Beispiel #2
0
 public decimal GetValue()
 {
     return(ZcashMoney.Convert(Amount));
 }