@@ -161,13 +161,12 @@ impl<'a> InvoiceBuilder<'a, ExplicitSigningPubkey> {
161161		created_at :  Duration ,  payment_hash :  PaymentHash 
162162	)  -> Result < Self ,  SemanticError >  { 
163163		let  amount_msats = Self :: check_amount_msats ( invoice_request) ?; 
164+ 		let  signing_pubkey = invoice_request. contents . inner . offer . signing_pubkey ( ) ; 
164165		let  contents = InvoiceContents :: ForOffer  { 
165166			invoice_request :  invoice_request. contents . clone ( ) , 
166- 			fields :  InvoiceFields  { 
167- 				payment_paths,  created_at,  relative_expiry :  None ,  payment_hash,  amount_msats, 
168- 				fallbacks :  None ,  features :  Bolt12InvoiceFeatures :: empty ( ) , 
169- 				signing_pubkey :  invoice_request. contents . inner . offer . signing_pubkey ( ) , 
170- 			} , 
167+ 			fields :  Self :: fields ( 
168+ 				payment_paths,  created_at,  payment_hash,  amount_msats,  signing_pubkey
169+ 			) , 
171170		} ; 
172171
173172		Self :: new ( & invoice_request. bytes ,  contents,  None ) 
@@ -177,13 +176,12 @@ impl<'a> InvoiceBuilder<'a, ExplicitSigningPubkey> {
177176		refund :  & ' a  Refund ,  payment_paths :  Vec < ( BlindedPath ,  BlindedPayInfo ) > ,  created_at :  Duration , 
178177		payment_hash :  PaymentHash ,  signing_pubkey :  PublicKey 
179178	)  -> Result < Self ,  SemanticError >  { 
179+ 		let  amount_msats = refund. amount_msats ( ) ; 
180180		let  contents = InvoiceContents :: ForRefund  { 
181181			refund :  refund. contents . clone ( ) , 
182- 			fields :  InvoiceFields  { 
183- 				payment_paths,  created_at,  relative_expiry :  None ,  payment_hash, 
184- 				amount_msats :  refund. amount_msats ( ) ,  fallbacks :  None , 
185- 				features :  Bolt12InvoiceFeatures :: empty ( ) ,  signing_pubkey, 
186- 			} , 
182+ 			fields :  Self :: fields ( 
183+ 				payment_paths,  created_at,  payment_hash,  amount_msats,  signing_pubkey
184+ 			) , 
187185		} ; 
188186
189187		Self :: new ( & refund. bytes ,  contents,  None ) 
@@ -196,13 +194,12 @@ impl<'a> InvoiceBuilder<'a, DerivedSigningPubkey> {
196194		created_at :  Duration ,  payment_hash :  PaymentHash ,  keys :  KeyPair 
197195	)  -> Result < Self ,  SemanticError >  { 
198196		let  amount_msats = Self :: check_amount_msats ( invoice_request) ?; 
197+ 		let  signing_pubkey = invoice_request. contents . inner . offer . signing_pubkey ( ) ; 
199198		let  contents = InvoiceContents :: ForOffer  { 
200199			invoice_request :  invoice_request. contents . clone ( ) , 
201- 			fields :  InvoiceFields  { 
202- 				payment_paths,  created_at,  relative_expiry :  None ,  payment_hash,  amount_msats, 
203- 				fallbacks :  None ,  features :  Bolt12InvoiceFeatures :: empty ( ) , 
204- 				signing_pubkey :  invoice_request. contents . inner . offer . signing_pubkey ( ) , 
205- 			} , 
200+ 			fields :  Self :: fields ( 
201+ 				payment_paths,  created_at,  payment_hash,  amount_msats,  signing_pubkey
202+ 			) , 
206203		} ; 
207204
208205		Self :: new ( & invoice_request. bytes ,  contents,  Some ( keys) ) 
@@ -212,13 +209,13 @@ impl<'a> InvoiceBuilder<'a, DerivedSigningPubkey> {
212209		refund :  & ' a  Refund ,  payment_paths :  Vec < ( BlindedPath ,  BlindedPayInfo ) > ,  created_at :  Duration , 
213210		payment_hash :  PaymentHash ,  keys :  KeyPair , 
214211	)  -> Result < Self ,  SemanticError >  { 
212+ 		let  amount_msats = refund. amount_msats ( ) ; 
213+ 		let  signing_pubkey = keys. public_key ( ) ; 
215214		let  contents = InvoiceContents :: ForRefund  { 
216215			refund :  refund. contents . clone ( ) , 
217- 			fields :  InvoiceFields  { 
218- 				payment_paths,  created_at,  relative_expiry :  None ,  payment_hash, 
219- 				amount_msats :  refund. amount_msats ( ) ,  fallbacks :  None , 
220- 				features :  Bolt12InvoiceFeatures :: empty ( ) ,  signing_pubkey :  keys. public_key ( ) , 
221- 			} , 
216+ 			fields :  Self :: fields ( 
217+ 				payment_paths,  created_at,  payment_hash,  amount_msats,  signing_pubkey
218+ 			) , 
222219		} ; 
223220
224221		Self :: new ( & refund. bytes ,  contents,  Some ( keys) ) 
@@ -240,6 +237,16 @@ impl<'a, S: SigningPubkeyStrategy> InvoiceBuilder<'a, S> {
240237		} 
241238	} 
242239
240+ 	fn  fields ( 
241+ 		payment_paths :  Vec < ( BlindedPath ,  BlindedPayInfo ) > ,  created_at :  Duration , 
242+ 		payment_hash :  PaymentHash ,  amount_msats :  u64 ,  signing_pubkey :  PublicKey 
243+ 	)  -> InvoiceFields  { 
244+ 		InvoiceFields  { 
245+ 			payment_paths,  created_at,  relative_expiry :  None ,  payment_hash,  amount_msats, 
246+ 			fallbacks :  None ,  features :  Bolt12InvoiceFeatures :: empty ( ) ,  signing_pubkey, 
247+ 		} 
248+ 	} 
249+ 
243250	fn  new ( 
244251		invreq_bytes :  & ' a  Vec < u8 > ,  contents :  InvoiceContents ,  keys :  Option < KeyPair > 
245252	)  -> Result < Self ,  SemanticError >  { 
0 commit comments