use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Payment {
#[serde(rename = "billing")]
pub billing: Box<models::BillingAddress>,
#[serde(rename = "brand_id")]
pub brand_id: String,
#[serde(rename = "business_id")]
pub business_id: String,
#[serde(rename = "card_holder_name", skip_serializing_if = "Option::is_none")]
pub card_holder_name: Option<String>,
#[serde(rename = "card_issuing_country", skip_serializing_if = "Option::is_none")]
pub card_issuing_country: Option<models::CountryCodeAlpha2>,
#[serde(rename = "card_last_four", skip_serializing_if = "Option::is_none")]
pub card_last_four: Option<String>,
#[serde(rename = "card_network", skip_serializing_if = "Option::is_none")]
pub card_network: Option<String>,
#[serde(rename = "card_type", skip_serializing_if = "Option::is_none")]
pub card_type: Option<String>,
#[serde(rename = "checkout_session_id", skip_serializing_if = "Option::is_none")]
pub checkout_session_id: Option<String>,
#[serde(rename = "created_at")]
pub created_at: String,
#[serde(rename = "currency")]
pub currency: models::Currency,
#[serde(rename = "custom_field_responses", skip_serializing_if = "Option::is_none")]
pub custom_field_responses: Option<Vec<models::CustomFieldResponse>>,
#[serde(rename = "customer")]
pub customer: Box<models::CustomerLimitedDetailsResponse>,
#[serde(rename = "digital_products_delivered")]
pub digital_products_delivered: bool,
#[serde(rename = "discount_id", skip_serializing_if = "Option::is_none")]
pub discount_id: Option<String>,
#[serde(rename = "disputes")]
pub disputes: Vec<models::DisputeResponse>,
#[serde(rename = "error_code", skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
#[serde(rename = "error_message", skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
#[serde(rename = "invoice_id", skip_serializing_if = "Option::is_none")]
pub invoice_id: Option<String>,
#[serde(rename = "invoice_url", skip_serializing_if = "Option::is_none")]
pub invoice_url: Option<String>,
#[serde(rename = "metadata")]
pub metadata: std::collections::HashMap<String, String>,
#[serde(rename = "payment_id")]
pub payment_id: String,
#[serde(rename = "payment_link", skip_serializing_if = "Option::is_none")]
pub payment_link: Option<String>,
#[serde(rename = "payment_method", skip_serializing_if = "Option::is_none")]
pub payment_method: Option<String>,
#[serde(rename = "payment_method_type", skip_serializing_if = "Option::is_none")]
pub payment_method_type: Option<String>,
#[serde(rename = "product_cart", skip_serializing_if = "Option::is_none")]
pub product_cart: Option<Vec<models::OneTimeProductCartItemResponse>>,
#[serde(rename = "refund_status", skip_serializing_if = "Option::is_none")]
pub refund_status: Option<models::PaymentRefundStatus>,
#[serde(rename = "refunds")]
pub refunds: Vec<models::RefundListItem>,
#[serde(rename = "settlement_amount")]
pub settlement_amount: i32,
#[serde(rename = "settlement_currency")]
pub settlement_currency: models::Currency,
#[serde(rename = "settlement_tax", skip_serializing_if = "Option::is_none")]
pub settlement_tax: Option<i32>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<models::IntentStatus>,
#[serde(rename = "subscription_id", skip_serializing_if = "Option::is_none")]
pub subscription_id: Option<String>,
#[serde(rename = "tax", skip_serializing_if = "Option::is_none")]
pub tax: Option<i32>,
#[serde(rename = "total_amount")]
pub total_amount: i32,
#[serde(rename = "updated_at", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
#[serde(rename = "payload_type")]
pub payload_type: PayloadType,
}
impl Payment {
pub fn new(billing: models::BillingAddress, brand_id: String, business_id: String, created_at: String, currency: models::Currency, customer: models::CustomerLimitedDetailsResponse, digital_products_delivered: bool, disputes: Vec<models::DisputeResponse>, metadata: std::collections::HashMap<String, String>, payment_id: String, refunds: Vec<models::RefundListItem>, settlement_amount: i32, settlement_currency: models::Currency, total_amount: i32, payload_type: PayloadType) -> Payment {
Payment {
billing: Box::new(billing),
brand_id,
business_id,
card_holder_name: None,
card_issuing_country: None,
card_last_four: None,
card_network: None,
card_type: None,
checkout_session_id: None,
created_at,
currency,
custom_field_responses: None,
customer: Box::new(customer),
digital_products_delivered,
discount_id: None,
disputes,
error_code: None,
error_message: None,
invoice_id: None,
invoice_url: None,
metadata,
payment_id,
payment_link: None,
payment_method: None,
payment_method_type: None,
product_cart: None,
refund_status: None,
refunds,
settlement_amount,
settlement_currency,
settlement_tax: None,
status: None,
subscription_id: None,
tax: None,
total_amount,
updated_at: None,
payload_type,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PayloadType {
#[serde(rename = "Payment")]
Payment,
}
impl Default for PayloadType {
fn default() -> PayloadType {
Self::Payment
}
}