use serde::{Deserialize, Serialize};
use crate::currency::Currency;
use crate::invoice;
#[derive(Debug, Serialize, Deserialize)]
pub struct Charge {
pub id: String,
pub description: String,
pub amount: u64,
pub status: Status,
pub fee: Option<u64>,
pub fiat_value: f64,
pub currency: Option<Currency>,
pub created_at: u64,
pub success_url: Option<String>,
pub notes: String,
pub auto_settle: bool,
pub order_id: Option<String>,
pub chain_invoice: Option<invoice::Chain>,
pub lightning_invoice: Option<invoice::Lightning>,
pub hashed_order: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "unpaid")]
Unpaid,
#[serde(rename = "paid")]
Paid,
#[serde(rename = "processing")]
Processing,
#[serde(rename = "underpaid")]
Underpaid,
#[serde(rename = "refunded")]
Refunded,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Payload {
pub amount: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub callback_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub success_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_settle: Option<String>,
}
impl Payload {
pub fn new(a: u64) -> Payload {
Payload {
amount: a,
description: None,
currency: None,
customer_email: None,
customer_name: None,
callback_url: None,
success_url: None,
auto_settle: None,
}
}
}