Implement LUD-21 LNURL-verify #494
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

Resolves #278
Summary
Implements LUD-21 which allows services to check whether a Lightning invoice has been paid by querying the LNURL server.
What is LUD-21?
When a wallet pays an LNURL invoice, the payer may want to verify that the payment was received (e.g., for proof of payment in e-commerce). LUD-21 defines a
verifyURL that returns the payment status and preimage.Changes
Database Schema
Added new table
lnurl_pay_invoicesInvoice Creation (
/lnurlp/{user}/invoice)When creating an invoice, we now:
res.idfromcreate_lightning_invoice()aslightning_receive_idres.invoiceasbolt11_invoiceverifyURL in the responseVerify Endpoint (
/lnurlp/{user}/verify?pr=lnbc...)prquery param to extractpayment_hashlightning_receive_idfrom the databasewallet.fetch_lightning_receive_payment()to get current payment statussettledandpreimageAssumptions
Test Plan