diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index 82d7ceb0b..a73695839 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -2266,6 +2266,15 @@ namespace BTCPayServer.Tests } } + [Fact] + [Trait("Fast", "Fast")] + public void SetOrderIdMetadataDoesntConvertInOctal() + { + var m = new InvoiceMetadata(); + m.OrderId = "000000161"; + Assert.Equal("000000161", m.OrderId); + } + [Fact] [Trait("Fast", "Fast")] public void CanParseCurrencyValue() @@ -2901,11 +2910,12 @@ namespace BTCPayServer.Tests { Amount = 50.513m, Currency = "USD", - Metadata = new JObject() { new JProperty("taxIncluded", 50.516m) } + Metadata = new JObject() { new JProperty("taxIncluded", 50.516m), new JProperty("orderId", "000000161") } }); Assert.Equal(50.51m, invoice5g.Amount); Assert.Equal(50.51m, (decimal)invoice5g.Metadata["taxIncluded"]); - + Assert.Equal("000000161", (string)invoice5g.Metadata["orderId"]); + var zeroInvoice = await greenfield.CreateInvoice(user.StoreId, new CreateInvoiceRequest() { Amount = 0m, diff --git a/BTCPayServer/Services/Invoices/InvoiceEntity.cs b/BTCPayServer/Services/Invoices/InvoiceEntity.cs index 02ede929e..a0bf19012 100644 --- a/BTCPayServer/Services/Invoices/InvoiceEntity.cs +++ b/BTCPayServer/Services/Invoices/InvoiceEntity.cs @@ -146,6 +146,13 @@ namespace BTCPayServer.Services.Invoices public void SetMetadata(string propName, T value) { JToken data; + if (typeof(T) == typeof(string) && value is string v) + { + data = new JValue(v); + AdditionalData ??= new Dictionary(); + AdditionalData.AddOrReplace(propName, data); + return; + } if (value is null) { AdditionalData?.Remove(propName);