Merge pull request #2100 from btcpayserver/fix/uppercase-qrcode

Reverting uppercasing of Bech32 addresses in QR code
This commit is contained in:
Nicolas Dorier 2020-12-04 13:00:47 +09:00 committed by GitHub
commit 3b035158a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 9 deletions

View file

@ -2094,7 +2094,11 @@ namespace BTCPayServer.Tests
Assert.Contains("&lightning=", paymentMethodSecond.InvoiceBitcoinUrlQR); Assert.Contains("&lightning=", paymentMethodSecond.InvoiceBitcoinUrlQR);
Assert.StartsWith("BITCOIN:", paymentMethodSecond.InvoiceBitcoinUrlQR); Assert.StartsWith("BITCOIN:", paymentMethodSecond.InvoiceBitcoinUrlQR);
var split = paymentMethodSecond.InvoiceBitcoinUrlQR.Split('?')[0]; var split = paymentMethodSecond.InvoiceBitcoinUrlQR.Split('?')[0];
Assert.True($"BITCOIN:{paymentMethodSecond.BtcAddress.ToUpperInvariant()}" == split);
// Standard for uppercase Bech32 addresses in QR codes is still not implemented in all wallets
// When it is widely propagated consider uncommenting these lines
//Assert.True($"BITCOIN:{paymentMethodSecond.BtcAddress.ToUpperInvariant()}" == split);
Assert.True($"BITCOIN:{paymentMethodSecond.BtcAddress}" == split);
} }
} }

View file

@ -71,15 +71,17 @@ namespace BTCPayServer.Payments.Bitcoin
.Replace("bitcoin:", "BITCOIN:", StringComparison.OrdinalIgnoreCase) .Replace("bitcoin:", "BITCOIN:", StringComparison.OrdinalIgnoreCase)
+ lightningFallback.ToUpperInvariant().Replace("LIGHTNING=", "lightning=", StringComparison.OrdinalIgnoreCase); + lightningFallback.ToUpperInvariant().Replace("LIGHTNING=", "lightning=", StringComparison.OrdinalIgnoreCase);
if (bech32Prefixes.Any(a => model.BtcAddress.StartsWith(a, StringComparison.OrdinalIgnoreCase))) // Standard for uppercase Bech32 addresses in QR codes is still not implemented in all wallets
{ // When it is widely propagated consider uncommenting these lines
model.InvoiceBitcoinUrlQR = model.InvoiceBitcoinUrlQR.Replace( //if (bech32Prefixes.Any(a => model.BtcAddress.StartsWith(a, StringComparison.OrdinalIgnoreCase)))
$"BITCOIN:{model.BtcAddress}", $"BITCOIN:{model.BtcAddress.ToUpperInvariant()}", //{
StringComparison.OrdinalIgnoreCase // model.InvoiceBitcoinUrlQR = model.InvoiceBitcoinUrlQR.Replace(
); // $"BITCOIN:{model.BtcAddress}", $"BITCOIN:{model.BtcAddress.ToUpperInvariant()}",
} // StringComparison.OrdinalIgnoreCase
// );
//}
} }
private static string[] bech32Prefixes = new[] { "bc1", "tb1", "bcrt1" }; //private static string[] bech32Prefixes = new[] { "bc1", "tb1", "bcrt1" };
public override string GetCryptoImage(PaymentMethodId paymentMethodId) public override string GetCryptoImage(PaymentMethodId paymentMethodId)
{ {