pi: handle lud-17 URI payment identifier

LNURL-W/P can also be encoded in lud-17 form instead of bech32.
https://github.com/lnurl/luds/blob/luds/17.md
e.g.
lnurlw://example.com/api/test123
lnurlp://example.com/api/test123
This commit is contained in:
f321x
2026-04-09 21:26:30 +02:00
parent 016c8b5f4c
commit ef702d74cd
8 changed files with 53 additions and 5 deletions
+11
View File
@@ -184,6 +184,17 @@ class TestPaymentIdentifier(ElectrumTestCase):
self.assertEqual(PaymentIdentifierType.LNURL, pi.type)
self.assertTrue(pi.need_resolve())
# test with lud17 prefix
unsupported_lud_17_lnurl_c = f"lnurlc://service.io/?q=3fc3645b439ce8e7"
pi = PaymentIdentifier(None, unsupported_lud_17_lnurl_c)
self.assertFalse(pi.is_valid())
valid_lud_17_lnurl_w = f"lnurlw://service.io/?q=3fc3645b439ce8e7"
pi = PaymentIdentifier(None, valid_lud_17_lnurl_w)
self.assertTrue(pi.is_valid())
self.assertEqual(PaymentIdentifierType.LNURL, pi.type)
self.assertTrue(pi.need_resolve())
@patch('electrum.payment_identifier.request_lnurl')
def test_lnurl_pay_resolve(self, mock_request_lnurl):
"""Test LNURL-pay (LNURL6) with mocked resolve"""