use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateOneTimePaymentRequest {
#[serde(rename = "allowed_payment_method_types", skip_serializing_if = "Option::is_none")]
pub allowed_payment_method_types: Option<Vec<models::PaymentMethodTypes>>,
#[serde(rename = "billing")]
pub billing: Box<models::BillingAddress>,
#[serde(rename = "billing_currency", skip_serializing_if = "Option::is_none")]
pub billing_currency: Option<models::Currency>,
#[serde(rename = "customer")]
pub customer: Box<models::CustomerRequest>,
#[serde(rename = "discount_code", skip_serializing_if = "Option::is_none")]
pub discount_code: Option<String>,
#[serde(rename = "force_3ds", skip_serializing_if = "Option::is_none")]
pub force_3ds: Option<bool>,
#[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
pub metadata: Option<std::collections::HashMap<String, String>>,
#[serde(rename = "payment_link", skip_serializing_if = "Option::is_none")]
pub payment_link: Option<bool>,
#[serde(rename = "payment_method_id", skip_serializing_if = "Option::is_none")]
pub payment_method_id: Option<String>,
#[serde(rename = "product_cart")]
pub product_cart: Vec<models::OneTimeProductCartItemReq>,
#[serde(rename = "redirect_immediately", skip_serializing_if = "Option::is_none")]
pub redirect_immediately: Option<bool>,
#[serde(rename = "return_url", skip_serializing_if = "Option::is_none")]
pub return_url: Option<String>,
#[serde(rename = "short_link", skip_serializing_if = "Option::is_none")]
pub short_link: Option<bool>,
#[serde(rename = "show_saved_payment_methods", skip_serializing_if = "Option::is_none")]
pub show_saved_payment_methods: Option<bool>,
#[serde(rename = "tax_id", skip_serializing_if = "Option::is_none")]
pub tax_id: Option<String>,
}
impl CreateOneTimePaymentRequest {
pub fn new(billing: models::BillingAddress, customer: models::CustomerRequest, product_cart: Vec<models::OneTimeProductCartItemReq>) -> CreateOneTimePaymentRequest {
CreateOneTimePaymentRequest {
allowed_payment_method_types: None,
billing: Box::new(billing),
billing_currency: None,
customer: Box::new(customer),
discount_code: None,
force_3ds: None,
metadata: None,
payment_link: None,
payment_method_id: None,
product_cart,
redirect_immediately: None,
return_url: None,
short_link: None,
show_saved_payment_methods: None,
tax_id: None,
}
}
}