diff --git a/BTCPayServer.Common/BTCPayNetworkProvider.cs b/BTCPayServer.Common/BTCPayNetworkProvider.cs index 83bc3a4e1..066178a9d 100644 --- a/BTCPayServer.Common/BTCPayNetworkProvider.cs +++ b/BTCPayServer.Common/BTCPayNetworkProvider.cs @@ -106,9 +106,14 @@ namespace BTCPayServer { return _Networks.ContainsKey(cryptoCode.ToUpperInvariant()); } - + public BTCPayNetworkBase GetNetwork(string cryptoCode) + { + return GetNetwork(cryptoCode); + } public T GetNetwork(string cryptoCode) where T: BTCPayNetworkBase { + if (cryptoCode == null) + throw new ArgumentNullException(nameof(cryptoCode)); if(!_Networks.TryGetValue(cryptoCode.ToUpperInvariant(), out BTCPayNetworkBase network)) { if (cryptoCode == "XBT") diff --git a/BTCPayServer/PaymentRequest/PaymentRequestService.cs b/BTCPayServer/PaymentRequest/PaymentRequestService.cs index da256c163..2464ce238 100644 --- a/BTCPayServer/PaymentRequest/PaymentRequestService.cs +++ b/BTCPayServer/PaymentRequest/PaymentRequestService.cs @@ -110,11 +110,11 @@ namespace BTCPayServer.PaymentRequest var paymentMethodId = paymentEntity.GetPaymentMethodId(); string txId = paymentData.GetPaymentId(); - string link = paymentEntity.PaymentMethodHandlerDictionary[paymentMethodId].GetTransactionLink(paymentMethodId, txId); + string link = GetTransactionLink(paymentMethodId, txId); return new ViewPaymentRequestViewModel.PaymentRequestInvoicePayment() { Amount = paymentData.GetValue(), - PaymentMethod = paymentEntity.GetPaymentMethodId().ToString(), + PaymentMethod = paymentMethodId.ToString(), Link = link, Id = txId }; @@ -122,5 +122,11 @@ namespace BTCPayServer.PaymentRequest }).ToList() }; } + + private string GetTransactionLink(PaymentMethodId paymentMethodId, string txId) + { + var network = _BtcPayNetworkProvider.GetNetwork(paymentMethodId.CryptoCode); + return string.Format(CultureInfo.InvariantCulture, network.BlockExplorerLink, txId); + } } } diff --git a/BTCPayServer/Payments/Bitcoin/BitcoinLikePaymentHandler.cs b/BTCPayServer/Payments/Bitcoin/BitcoinLikePaymentHandler.cs index bc83ec963..6dafb3027 100644 --- a/BTCPayServer/Payments/Bitcoin/BitcoinLikePaymentHandler.cs +++ b/BTCPayServer/Payments/Bitcoin/BitcoinLikePaymentHandler.cs @@ -104,14 +104,6 @@ namespace BTCPayServer.Payments.Bitcoin return network.DisplayName; } - - public override string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args) - { - - var network = _networkProvider.GetNetwork(paymentMethodId.CryptoCode); - return string.Format(CultureInfo.InvariantCulture, network.BlockExplorerLink, args); - } - public override object PreparePayment(DerivationSchemeSettings supportedPaymentMethod, StoreData store, BTCPayNetworkBase network) { diff --git a/BTCPayServer/Payments/IPaymentMethodHandler.cs b/BTCPayServer/Payments/IPaymentMethodHandler.cs index fe79550ea..14529c588 100644 --- a/BTCPayServer/Payments/IPaymentMethodHandler.cs +++ b/BTCPayServer/Payments/IPaymentMethodHandler.cs @@ -53,8 +53,6 @@ namespace BTCPayServer.Payments Money amount, PaymentMethodId paymentMethodId); IEnumerable GetSupportedPaymentMethods(); - - string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args); } public interface IPaymentMethodHandler : IPaymentMethodHandler @@ -88,9 +86,6 @@ namespace BTCPayServer.Payments public abstract IEnumerable GetSupportedPaymentMethods(); - public abstract string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args); - - public virtual object PreparePayment(TSupportedPaymentMethod supportedPaymentMethod, StoreData store, BTCPayNetworkBase network) { diff --git a/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs b/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs index 7078ccd78..b0f097d1e 100644 --- a/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs +++ b/BTCPayServer/Payments/Lightning/LightningLikePaymentHandler.cs @@ -167,11 +167,6 @@ namespace BTCPayServer.Payments.Lightning } return "The amount of the invoice is too high to be paid with lightning"; } - - public override string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args) - { - return null; - } public override void PrepareInvoiceDto(InvoiceResponse invoiceResponse, InvoiceEntity invoiceEntity, InvoiceCryptoInfo invoiceCryptoInfo, PaymentMethodAccounting accounting, PaymentMethod info)