use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct UsWirePaymentInfo {
#[serde(rename = "rail")]
pub rail: Rail,
#[serde(rename = "addressingSystem")]
pub addressing_system: AddressingSystem,
#[serde(rename = "accountHolderGivenName")]
pub account_holder_given_name: String,
#[serde(rename = "accountHolderSurname")]
pub account_holder_surname: String,
#[serde(rename = "country")]
pub country: String,
#[serde(rename = "accountNumber")]
pub account_number: String,
#[serde(rename = "routingNumber")]
pub routing_number: String,
#[serde(rename = "swiftCode")]
pub swift_code: String,
#[serde(rename = "bankName")]
pub bank_name: String,
#[serde(rename = "bankAddressLine")]
pub bank_address_line: String,
#[serde(rename = "bankAddressCity")]
pub bank_address_city: String,
#[serde(rename = "bankAddressState", skip_serializing_if = "Option::is_none")]
pub bank_address_state: Option<String>,
#[serde(rename = "bankAddressCountry")]
pub bank_address_country: String,
#[serde(rename = "bankAddressPostalCode")]
pub bank_address_postal_code: String,
#[serde(rename = "branchNumber", skip_serializing_if = "Option::is_none")]
pub branch_number: Option<String>,
}
impl UsWirePaymentInfo {
pub fn new(
rail: Rail,
addressing_system: AddressingSystem,
account_holder_given_name: String,
account_holder_surname: String,
country: String,
account_number: String,
routing_number: String,
swift_code: String,
bank_name: String,
bank_address_line: String,
bank_address_city: String,
bank_address_country: String,
bank_address_postal_code: String,
) -> UsWirePaymentInfo {
UsWirePaymentInfo {
rail,
addressing_system,
account_holder_given_name,
account_holder_surname,
country,
account_number,
routing_number,
swift_code,
bank_name,
bank_address_line,
bank_address_city,
bank_address_state: None,
bank_address_country,
bank_address_postal_code,
branch_number: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Rail {
#[serde(rename = "US_WIRE")]
UsWire,
}
impl Default for Rail {
fn default() -> Rail {
Self::UsWire
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum AddressingSystem {
#[serde(rename = "ABA")]
Aba,
}
impl Default for AddressingSystem {
fn default() -> AddressingSystem {
Self::Aba
}
}