Files
breez-sdk-docs/src/guide/lnurl_pay.md
Ross Savage dfdfc63c08 Merge branch 'connect-api' into go-examples
# Conflicts:
#	src/guide/getting_started.md
#	src/guide/lnurl_auth.md
#	src/guide/lnurl_pay.md
#	src/guide/lnurl_withdraw.md
#	src/guide/payments.md
#	src/guide/receive_onchain.md
#	src/guide/send_onchain.md
2023-07-11 09:32:20 +02:00

4.3 KiB

LNURL-Pay

Usage

Rust
// Endpoint can also be of the form:
// lnurlp://domain.com/lnurl-pay?key=val
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
let lnurl_pay_url = "lightning@address.com";

if let Ok(LnUrlPay{data: pd}) = parse(lnurl_pay_url).await {
    // TODO Show payment details in UI, read user input
    let amount_msat = pd.min_sendable;
    let comment = "Test payment".to_string();
    
    sdk.lnurl_pay(amount_msat, Some(comment), pd).await?;
}
Swift
// Endpoint can also be of the form:
// lnurlp://domain.com/lnurl-pay?key=val
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
let lnurlPayUrl = "lightning@address.com";
do {
  let inputType = try parseInput(s: lnurlPayUrl)
    if case .lnUrlPay(let data) = inputType {
    let amountSats = data.minSendable;
    try sdk.payLnurl(reqData: data, amountSats: amountSats, comment: "comment")
  }
} catch {
    // handle error
}
React Native
// Endpoint can also be of the form:
// lnurlp://domain.com/lnurl-pay?key=val
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
let lnurlPayUrl = "lightning@address.com";

try {
    const input = await parseInput(lnurlPayUrl)
    if (input.type === InputType.LNURL_PAY) {
        const amountSats = input.data.minSendable;
        const result = await payLnurl(input.data, amountSats, "comment")
    }    
} catch (error) {
    console.log(error)
}
Dart
// Endpoint can also be of the form:
// lnurlp://domain.com/lnurl-pay?key=val
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
String lnurlPayUrl = "lightning@address.com";

try {
    InputType inputType = await parseInput(s: lnurlPayUrl);
    if (inputType is InputType_LnUrlPay) {
        int amountSats = inputType.data.minSendable;
        LnUrlCallbackStatus result = await lnurlPay(
            reqData: inputType.data,
            userAmountSat: amountSats, 
            comment: "comment",
        );
    }
} catch (error) {
    // handle error
}
Python
# Endpoint can also be of the form:
# lnurlp://domain.com/lnurl-pay?key=val
# lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
lnurl_pay_url = "lightning@address.com"

try: 
  parsed_input = breez_sdk.parse_input(lnurl_pay_url)
  if isinstance(parsed_input, breez_sdk.InputType.LN_URL_PAY):
    amount_sats = parsed_input.data.min_sendable
    result = sdk_service.pay_lnurl(parsed_input.data, amount_sats, "comment")
except Exception as error:
      # Handle error
Go
// Endpoint can also be of the form:
// lnurlp://domain.com/lnurl-pay?key=val
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
lnurlPayUrl := "lightning@address.com"

if input, err := breez_sdk.ParseInput(lnurlPayUrl); err != nil {
    switch inputType := input.(type) {
    case breez_sdk.InputTypeLnUrlPay:
        amountsSats := inputType.Data.MinSendable
        comment := "comment"
        result, err := sdkServices.PayLnurl(inputType.Data, amountsSats, &comment)
    }
}

Supported Specs

  • LUD-01 LNURL bech32 encoding
  • LUD-06 payRequest spec
  • LUD-16 LN Address
  • LUD-17 Support for lnurlp prefix with non-bech32-encoded LNURL URLs