use serde::{Serialize, Deserialize};
use super::{BillingDetails, RadarRadarOptions, RefundList};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Charge {
pub amount: i64,
pub amount_captured: i64,
pub amount_refunded: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub application: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub balance_transaction: Option<serde_json::Value>,
pub billing_details: BillingDetails,
#[serde(skip_serializing_if = "Option::is_none")]
pub calculated_statement_descriptor: Option<String>,
pub captured: bool,
pub created: i64,
pub currency: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub disputed: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_balance_transaction: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fraud_details: Option<serde_json::Value>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice: Option<serde_json::Value>,
pub livemode: bool,
pub metadata: serde_json::Value,
pub object: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub on_behalf_of: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub outcome: Option<serde_json::Value>,
pub paid: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_intent: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_details: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub radar_options: Option<RadarRadarOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_url: Option<String>,
pub refunded: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub refunds: Option<RefundList>,
#[serde(skip_serializing_if = "Option::is_none")]
pub review: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shipping: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source_transfer: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_suffix: Option<String>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_group: Option<String>,
}
impl std::fmt::Display for Charge {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
write!(f, "{}", serde_json::to_string(self).unwrap())
}
}