public override async Task <IPaymentMethodDetails> CreatePaymentMethodDetails(MoneroSupportedPaymentMethod supportedPaymentMethod, PaymentMethod paymentMethod, StoreData store, MoneroLikeSpecificBtcPayNetwork network, object preparePaymentObject) { if (!_moneroRpcProvider.IsAvailable(network.CryptoCode)) { throw new PaymentMethodUnavailableException($"Node or wallet not available"); } var invoice = paymentMethod.ParentEntity; if (!(preparePaymentObject is Prepare moneroPrepare)) { throw new ArgumentException(); } var feeRatePerKb = await moneroPrepare.GetFeeRate; var address = await moneroPrepare.ReserveAddress(invoice.Id); var feeRatePerByte = feeRatePerKb.Fee / 1024; return(new MoneroLikeOnChainPaymentMethodDetails() { NextNetworkFee = MoneroMoney.Convert(feeRatePerByte * 100), AccountIndex = supportedPaymentMethod.AccountIndex, AddressIndex = address.AddressIndex, DepositAddress = address.Address }); }
public override void PreparePaymentModel(PaymentModel model, InvoiceResponse invoiceResponse, StoreBlob storeBlob) { var paymentMethodId = new PaymentMethodId(model.CryptoCode, PaymentType); var client = _moneroRpcProvider.WalletRpcClients[model.CryptoCode]; var cryptoInfo = invoiceResponse.CryptoInfo.First(o => o.GetpaymentMethodId() == paymentMethodId); var network = _networkProvider.GetNetwork <MoneroLikeSpecificBtcPayNetwork>(model.CryptoCode); model.IsLightning = false; model.PaymentMethodName = GetPaymentMethodName(network); model.CryptoImage = GetCryptoImage(network); model.InvoiceBitcoinUrl = client.SendCommandAsync <MakeUriRequest, MakeUriResponse>("make_uri", new MakeUriRequest() { Address = cryptoInfo.Address, Amount = MoneroMoney.Convert(decimal.Parse(cryptoInfo.Due, CultureInfo.InvariantCulture)) }).GetAwaiter() .GetResult().Uri; model.InvoiceBitcoinUrlQR = model.InvoiceBitcoinUrl; }
public decimal GetValue() { return(MoneroMoney.Convert(Amount)); }