78 lines
2.7 KiB
Rust
78 lines
2.7 KiB
Rust
|
//! This module allow to create credit request during create order request
|
|||
|
|
|||
|
use serde::{Deserialize, Serialize};
|
|||
|
|
|||
|
use crate::model::{Address, ShoppingCart};
|
|||
|
|
|||
|
/// Describe customer during credit request
|
|||
|
#[derive(Serialize, Deserialize, Debug)]
|
|||
|
#[serde(rename_all = "camelCase")]
|
|||
|
pub struct Applicant {
|
|||
|
/// Applicant’s email address
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
email: Option<String>,
|
|||
|
/// Applicant’s phone number
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
phone: Option<String>,
|
|||
|
/// Applicant’s first name
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
first_name: Option<String>,
|
|||
|
/// Applicant’s last name
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
last_name: Option<String>,
|
|||
|
/// Language code, ISO-639-1 compliant. Denotes the language version of
|
|||
|
/// PayU hosted payment page and of e-mail messages sent from PayU to the
|
|||
|
/// payer (supported values are here).
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
language: Option<String>,
|
|||
|
/// National Identification Number
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
nin: Option<String>,
|
|||
|
/// Section containing data about applicant’s address.
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
address: Option<Address>,
|
|||
|
/// Additional information about person applying for credit.
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
additional_info: Option<ApplicantAdditionalInfo>,
|
|||
|
}
|
|||
|
|
|||
|
/// Allow to create credit request
|
|||
|
#[derive(Serialize, Deserialize, Debug, Default)]
|
|||
|
#[serde(rename_all = "camelCase")]
|
|||
|
pub struct Credit {
|
|||
|
/// Section containing data of the ordered products
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
shopping_carts: Option<Vec<ShoppingCart>>,
|
|||
|
/// Section containing data of person applying for a credit
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
applicant: Option<Applicant>,
|
|||
|
}
|
|||
|
|
|||
|
impl Credit {
|
|||
|
pub fn with_shopping_carts<ShoppingCarts>(mut self, shopping_carts: ShoppingCarts) -> Self
|
|||
|
where
|
|||
|
ShoppingCarts: Iterator<Item = ShoppingCart>,
|
|||
|
{
|
|||
|
self.shopping_carts = Some(shopping_carts.collect());
|
|||
|
self
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#[derive(Serialize, Deserialize, Debug)]
|
|||
|
#[serde(rename_all = "camelCase")]
|
|||
|
pub struct ApplicantAdditionalInfo {
|
|||
|
/// Information whether there were previous, successfully completed orders
|
|||
|
/// for applicant.
|
|||
|
/// Recommended
|
|||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|||
|
has_successfully_finished_order_in_shop: Option<String>,
|
|||
|
}
|