diff --git a/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs b/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs index df0c192c3..18d257247 100644 --- a/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs +++ b/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs @@ -19,9 +19,14 @@ namespace BTCPayServer.Payments public override string ToPrettyString() => "On-Chain"; public override string GetId() => "BTCLike"; - public override CryptoPaymentData DeserializePaymentData(string cryptoPaymentData) + public override CryptoPaymentData DeserializePaymentData(string str) { - return JsonConvert.DeserializeObject(cryptoPaymentData); + return JsonConvert.DeserializeObject(str); + } + + public override IPaymentMethodDetails DeserializePaymentMethodDetails(string str) + { + return JsonConvert.DeserializeObject(str); } } } diff --git a/BTCPayServer/Payments/PaymentTypes.Lightning.cs b/BTCPayServer/Payments/PaymentTypes.Lightning.cs index b91c9402e..894e2f1c9 100644 --- a/BTCPayServer/Payments/PaymentTypes.Lightning.cs +++ b/BTCPayServer/Payments/PaymentTypes.Lightning.cs @@ -18,9 +18,14 @@ namespace BTCPayServer.Payments public override string ToPrettyString() => "Off-Chain"; public override string GetId() => "LightningLike"; - public override CryptoPaymentData DeserializePaymentData(string cryptoPaymentData) + public override CryptoPaymentData DeserializePaymentData(string str) { - return JsonConvert.DeserializeObject(cryptoPaymentData); + return JsonConvert.DeserializeObject(str); + } + + public override IPaymentMethodDetails DeserializePaymentMethodDetails(string str) + { + return JsonConvert.DeserializeObject(str); } } } diff --git a/BTCPayServer/Payments/PaymentTypes.cs b/BTCPayServer/Payments/PaymentTypes.cs index 487611747..635f0574a 100644 --- a/BTCPayServer/Payments/PaymentTypes.cs +++ b/BTCPayServer/Payments/PaymentTypes.cs @@ -55,6 +55,7 @@ namespace BTCPayServer.Payments } public abstract string GetId(); - public abstract CryptoPaymentData DeserializePaymentData(string cryptoPaymentData); + public abstract CryptoPaymentData DeserializePaymentData(string str); + public abstract IPaymentMethodDetails DeserializePaymentMethodDetails(string str); } } diff --git a/BTCPayServer/Services/Invoices/InvoiceEntity.cs b/BTCPayServer/Services/Invoices/InvoiceEntity.cs index 9ab7649c7..2ae7c840d 100644 --- a/BTCPayServer/Services/Invoices/InvoiceEntity.cs +++ b/BTCPayServer/Services/Invoices/InvoiceEntity.cs @@ -756,15 +756,7 @@ namespace BTCPayServer.Services.Invoices else { var paymentType = GetId().PaymentType; - IPaymentMethodDetails details = null; - if (paymentType == PaymentTypes.BTCLike) - { - details = JsonConvert.DeserializeObject(PaymentMethodDetails.ToString()); - } - else - { - details = JsonConvert.DeserializeObject(PaymentMethodDetails.ToString()); - } + IPaymentMethodDetails details = paymentType.DeserializePaymentMethodDetails(PaymentMethodDetails.ToString()); if (details is Payments.Bitcoin.BitcoinLikeOnChainPaymentMethod btcLike) { btcLike.NextNetworkFee = NextNetworkFee;