diff --git a/moksha-mint/src/lightning/lnbits.rs b/moksha-mint/src/lightning/lnbits.rs index 90e9c580..27272bc3 100644 --- a/moksha-mint/src/lightning/lnbits.rs +++ b/moksha-mint/src/lightning/lnbits.rs @@ -170,17 +170,12 @@ impl LNBitsClient { &self, params: &CreateInvoiceParams, ) -> Result { - // Add out: true to the params - let params = serde_json::json!({ - "out": false, - "amount": params.amount, - "unit": params.unit, - "memo": params.memo, - "webhook": params.webhook, - "internal": params.internal, - "expiry": params.expiry, - }); + let mut params = serde_json::to_value(¶ms)?; + // Add out: false to the params + if let serde_json::Value::Object(ref mut map) = params { + map.insert("out".to_string(), serde_json::Value::Bool(false)); + } let body = self .make_post("api/v1/payments", &serde_json::to_string(¶ms)?) .await?; diff --git a/moksha-mint/src/model.rs b/moksha-mint/src/model.rs index d8820577..e6472e78 100644 --- a/moksha-mint/src/model.rs +++ b/moksha-mint/src/model.rs @@ -32,8 +32,12 @@ pub struct PayInvoiceResult { pub struct CreateInvoiceParams { pub amount: u64, pub unit: String, + #[serde(skip_serializing_if = "Option::is_none")] pub memo: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub expiry: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub webhook: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub internal: Option, }