diff --git a/lnurl-test/src/test/scala/org/bitcoins/lnurl/LnURLClientTest.scala b/lnurl-test/src/test/scala/org/bitcoins/lnurl/LnURLClientTest.scala index f387d65dc2..f6b288765f 100644 --- a/lnurl-test/src/test/scala/org/bitcoins/lnurl/LnURLClientTest.scala +++ b/lnurl-test/src/test/scala/org/bitcoins/lnurl/LnURLClientTest.scala @@ -28,7 +28,7 @@ class LnURLClientTest extends BitcoinSAsyncTest { client.makeRequest(lnurl).flatMap { case pay: LnURLPayResponse => val amt = pay.minSendable.toLnCurrencyUnit - client.getInvoice(pay, amt).map { inv => + client.getInvoice(pay, amt, Map.empty).map { inv => assert(inv.amount.contains(amt)) assert(inv.lnTags.descriptionHash.exists(_.hash == pay.metadataHash)) } diff --git a/lnurl/src/main/scala/org/bitcoins/lnurl/LnURLClient.scala b/lnurl/src/main/scala/org/bitcoins/lnurl/LnURLClient.scala index 8abd39782a..f81f28767b 100644 --- a/lnurl/src/main/scala/org/bitcoins/lnurl/LnURLClient.scala +++ b/lnurl/src/main/scala/org/bitcoins/lnurl/LnURLClient.scala @@ -72,21 +72,28 @@ class LnURLClient(proxyParams: Option[Socks5ProxyParams])(implicit def getInvoice( pay: LnURLPayResponse, - amount: LnCurrencyUnit): Future[LnInvoice] = { - getInvoice(pay, amount.toMSat) + amount: LnCurrencyUnit, + extraParams: Map[String, String]): Future[LnInvoice] = { + getInvoice(pay, amount.toMSat, extraParams) } def getInvoice( pay: LnURLPayResponse, - amount: CurrencyUnit): Future[LnInvoice] = { - getInvoice(pay, MilliSatoshis(amount)) + amount: CurrencyUnit, + extraParams: Map[String, String]): Future[LnInvoice] = { + getInvoice(pay, MilliSatoshis(amount), extraParams) } def getInvoice( pay: LnURLPayResponse, - amount: MilliSatoshis): Future[LnInvoice] = { + amount: MilliSatoshis, + extraParams: Map[String, String]): Future[LnInvoice] = { val symbol = if (pay.callback.toString.contains("?")) "&" else "?" - val url = s"${pay.callback}${symbol}amount=${amount.toLong}" + val queryStringParams = + extraParams.map(kv => s"${kv._1}=${kv._2}").mkString("&") + + val qsStr = if (queryStringParams.isEmpty) "" else s"&$queryStringParams" + val url = s"${pay.callback}${symbol}amount=${amount.toLong}$qsStr" sendRequestAndParse[LnURLPayInvoice](Get(url)).map(_.pr) }