Skip to content

Commit 57d0de6

Browse files
committed
fix: encode paykit bip21 invoice
1 parent 21825ef commit 57d0de6

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

app/src/main/java/to/bitkit/repositories/PublicPaykitRepo.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import to.bitkit.models.toLdkNetwork
2121
import to.bitkit.services.CoreService
2222
import to.bitkit.utils.AppError
2323
import to.bitkit.utils.NetworkValidationHelper
24+
import to.bitkit.utils.encodeToUrl
2425
import java.util.Locale
2526
import javax.inject.Inject
2627
import javax.inject.Singleton
@@ -102,7 +103,7 @@ class PublicPaykitRepo @Inject constructor(
102103
val onchain = sortedEndpoints.firstOrNull { it.methodId.isOnchain }
103104

104105
if (lightning != null && onchain != null) {
105-
return "bitcoin:${onchain.value}?lightning=${lightning.value}"
106+
return "bitcoin:${onchain.value}?lightning=${lightning.value.encodeToUrl()}"
106107
}
107108

108109
return sortedEndpoints.firstOrNull()?.paymentRequest.orEmpty()

app/src/test/java/to/bitkit/repositories/PublicPaykitRepoTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,18 @@ class PublicPaykitRepoTest : BaseUnitTest() {
315315
assertEquals("bitcoin:bc1ptest?lightning=lnbc1test", request)
316316
}
317317

318+
@Test
319+
fun `paymentRequest encodes bolt11 query parameter`() {
320+
val request = PublicPaykitRepo.paymentRequest(
321+
listOf(
322+
endpoint(MethodId.Bolt11, "lnbc1test&label"),
323+
endpoint(MethodId.P2tr, "bc1ptest"),
324+
),
325+
)
326+
327+
assertEquals("bitcoin:bc1ptest?lightning=lnbc1test%26label", request)
328+
}
329+
318330
@Test
319331
fun `paymentRequest prefers taproot among multiple onchain endpoints`() {
320332
val request = PublicPaykitRepo.paymentRequest(

0 commit comments

Comments
 (0)