Skip to content

Commit 4cd438f

Browse files
committed
Show payment metadata in API responses
1 parent 92e0553 commit 4cd438f

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

eclair-core/src/main/scala/fr/acinq/eclair/json/JsonSerializers.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ object PaymentRequestSerializer extends MinimalSerializer({
331331
FeatureSupportSerializer +
332332
UnknownFeatureSerializer
333333
))
334+
val paymentMetadata = p.paymentMetadata.map(m => JField("paymentMetadata", JString(m.toHex))).toSeq
334335
val routingInfo = JField("routingInfo", Extraction.decompose(p.routingInfo)(
335336
DefaultFormats +
336337
ByteVector32Serializer +
@@ -340,12 +341,14 @@ object PaymentRequestSerializer extends MinimalSerializer({
340341
MilliSatoshiSerializer +
341342
CltvExpiryDeltaSerializer
342343
))
343-
val fieldList = List(JField("prefix", JString(p.prefix)),
344+
val fieldList = List(
345+
JField("prefix", JString(p.prefix)),
344346
JField("timestamp", JLong(p.timestamp.toLong)),
345347
JField("nodeId", JString(p.nodeId.toString())),
346348
JField("serialized", JString(PaymentRequest.write(p))),
347349
p.description.fold(string => JField("description", JString(string)), hash => JField("descriptionHash", JString(hash.toHex))),
348350
JField("paymentHash", JString(p.paymentHash.toString()))) ++
351+
paymentMetadata ++
349352
expiry ++
350353
minFinalCltvExpiry ++
351354
amount :+

eclair-core/src/test/scala/fr/acinq/eclair/json/JsonSerializersSpec.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import fr.acinq.bitcoin.{Btc, ByteVector32, OutPoint, Satoshi, SatoshiLong, Tran
2121
import fr.acinq.eclair._
2222
import fr.acinq.eclair.balance.CheckBalance
2323
import fr.acinq.eclair.balance.CheckBalance.{ClosingBalance, GlobalBalance, MainAndHtlcBalance, PossiblyPublishedMainAndHtlcBalance, PossiblyPublishedMainBalance}
24-
import fr.acinq.eclair.channel.{CMD_UPDATE_RELAY_FEE, CommandResponse, CommandUnavailableInThisState, Origin, RES_FAILURE, RES_SUCCESS}
24+
import fr.acinq.eclair.channel._
2525
import fr.acinq.eclair.payment.{PaymentRequest, PaymentSettlingOnChain}
2626
import fr.acinq.eclair.transactions.Transactions._
2727
import fr.acinq.eclair.transactions.{IncomingHtlc, OutgoingHtlc}
@@ -170,6 +170,12 @@ class JsonSerializersSpec extends AnyFunSuite with Matchers {
170170
JsonSerializers.serialization.write(pr)(JsonSerializers.formats) shouldBe """{"prefix":"lntb","timestamp":1622474982,"nodeId":"03e89e4c3d41dc5332c2fb6cc66d12bfb9257ba681945a242f27a08d5ad210d891","serialized":"lntb1pst2q8xpp5qysan6j5xeq97tytxf7pfr0n75na8rztqhh03glmlgsqsyuqzgnqdqqxqrrss9qy9qsqsp5qq67gcxrn2drj5p0lc6p8wgdpqwxnc2h4s9kra5489q0fqsvhumsrzjqfqnj4upt5z6hdludky9vgk4ehzmwu2dk9rcevzczw5ywstehq79c83xr5qqqkqqqqqqqqlgqqqqqeqqjqrzjqwfn3p9278ttzzpe0e00uhyxhned3j5d9acqak5emwfpflp8z2cng838tqqqqxgqqqqqqqlgqqqqqeqqjqkxs4223x2r6sat65asfp0k2pze2rswe9np9vq08waqvsp832ffgymzgx8hgzejasesfxwcw6jj93azwq9klwuzmef3llns3n95pztgqpawp7an","description":"","paymentHash":"0121d9ea5436405f2c8b327c148df3f527d38c4b05eef8a3fbfa200813801226","expiry":3600,"features":{"activated":{"var_onion_optin":"optional","payment_secret":"optional","basic_mpp":"optional"},"unknown":[]},"routingInfo":[[{"nodeId":"02413957815d05abb7fc6d885622d5cdc5b7714db1478cb05813a8474179b83c5c","shortChannelId":"1975837x88x0","feeBase":1000,"feeProportionalMillionths":100,"cltvExpiryDelta":144}],[{"nodeId":"03933884aaf1d6b108397e5efe5c86bcf2d8ca8d2f700eda99db9214fc2712b134","shortChannelId":"1976152x25x0","feeBase":1000,"feeProportionalMillionths":100,"cltvExpiryDelta":144}]]}"""
171171
}
172172

173+
test("Payment Request with metadata") {
174+
val ref = "lnbc10m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdp9wpshjmt9de6zqmt9w3skgct5vysxjmnnd9jx2mq8q8a04uqnp4q0n326hr8v9zprg8gsvezcch06gfaqqhde2aj730yg0durunfhv66sp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygs9q2gqqqqqqsgqy9gw6ymamd20jumvdgpfphkhp8fzhhdhycw36egcmla5vlrtrmhs9t7psfy3hkkdqzm9eq64fjg558znccds5nhsfmxveha5xe0dykgpspdha0"
175+
val pr = PaymentRequest.read(ref)
176+
JsonSerializers.serialization.write(pr)(JsonSerializers.formats) shouldBe """{"prefix":"lnbc","timestamp":1496314658,"nodeId":"03e7156ae33b0a208d0744199163177e909e80176e55d97a2f221ede0f934dd9ad","serialized":"lnbc10m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdp9wpshjmt9de6zqmt9w3skgct5vysxjmnnd9jx2mq8q8a04uqnp4q0n326hr8v9zprg8gsvezcch06gfaqqhde2aj730yg0durunfhv66sp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygs9q2gqqqqqqsgqy9gw6ymamd20jumvdgpfphkhp8fzhhdhycw36egcmla5vlrtrmhs9t7psfy3hkkdqzm9eq64fjg558znccds5nhsfmxveha5xe0dykgpspdha0","description":"payment metadata inside","paymentHash":"0001020304050607080900010203040506070809000102030405060708090102","paymentMetadata":"01fafaf0","amount":1000000000,"features":{"activated":{"var_onion_optin":"mandatory","payment_secret":"mandatory","option_payment_metadata":"mandatory"},"unknown":[]},"routingInfo":[]}"""
177+
}
178+
173179
test("GlobalBalance serializer") {
174180
val gb = GlobalBalance(
175181
onChain = CheckBalance.CorrectedOnChainBalance(Btc(0.4), Btc(0.05)),

0 commit comments

Comments
 (0)