iyzipay_rust/model/
installment.rs1use bigdecimal::BigDecimal;
2use log::debug;
3
4use crate::client::HttpClient;
5use crate::options::Options;
6use crate::requests::PKISerialize;
7use crate::requests::RetrieveInstallmentInfoRequest;
8use crate::resource::IyzipayResource;
9use crate::types::Result;
10
11#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
12#[serde(rename_all = "camelCase")]
13pub struct InstallmentInfo {
14 #[serde(flatten)]
15 resource: IyzipayResource,
16
17 installment_details: Option<Vec<InstallmentDetail>>,
18}
19
20impl InstallmentInfo {
21 pub fn retrieve(
22 req: &RetrieveInstallmentInfoRequest,
23 options: &Options,
24 ) -> Result<InstallmentInfo> {
25 let request = serde_json::to_string(req)?;
26 debug!("RequestBody:{}", request);
27 let res = HttpClient::create().post(
28 format!("{}{}", options.base_url(), "/payment/iyzipos/installment").as_str(),
29 request,
30 IyzipayResource::get_http_headers(req.serialize().unwrap_or_default(), &options),
31 )?;
32 let response = res.json()?;
33 Ok(response)
34 }
35
36 pub fn set_installment_details<T: Into<Vec<InstallmentDetail>>>(
37 &mut self,
38 installment_details: T,
39 ) {
40 self.installment_details = Some(installment_details.into());
41 }
42
43 pub fn installment_details(&self) -> Option<&Vec<InstallmentDetail>> {
44 self.installment_details.as_ref()
45 }
46}
47
48impl std::ops::Deref for InstallmentInfo {
49 type Target = IyzipayResource;
50 fn deref(&self) -> &Self::Target {
51 &self.resource
52 }
53}
54
55#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
56#[serde(rename_all = "camelCase")]
57pub struct InstallmentDetail {
58 bin_number: Option<String>,
59
60 price: Option<BigDecimal>,
61
62 card_type: Option<String>,
63
64 card_association: Option<String>,
65
66 card_family_name: Option<String>,
67
68 force3ds: Option<u8>,
69
70 bank_code: Option<i64>,
71
72 bank_name: Option<String>,
73
74 force_cvc: Option<u8>,
75
76 commercial: Option<u8>,
77
78 installment_prices: Option<Vec<InstallmentPrice>>,
79}
80
81impl InstallmentDetail {
82 pub fn set_price<T: Into<BigDecimal>>(&mut self, price: T) {
83 self.price = Some(price.into());
84 }
85
86 pub fn set_card_type<T: Into<String>>(&mut self, card_type: T) {
87 self.card_type = Some(card_type.into());
88 }
89
90 pub fn set_card_association<T: Into<String>>(&mut self, card_association: T) {
91 self.card_association = Some(card_association.into());
92 }
93
94 pub fn set_card_family_name<T: Into<String>>(&mut self, card_family_name: T) {
95 self.card_family_name = Some(card_family_name.into());
96 }
97
98 pub fn set_force3ds<T: Into<u8>>(&mut self, force3ds: T) {
99 self.force3ds = Some(force3ds.into());
100 }
101
102 pub fn set_bank_code<T: Into<i64>>(&mut self, bank_code: T) {
103 self.bank_code = Some(bank_code.into());
104 }
105
106 pub fn set_bank_name<T: Into<String>>(&mut self, bank_name: T) {
107 self.bank_name = Some(bank_name.into());
108 }
109
110 pub fn set_force_cvc<T: Into<u8>>(&mut self, force_cvc: T) {
111 self.force_cvc = Some(force_cvc.into());
112 }
113
114 pub fn set_commercial<T: Into<u8>>(&mut self, commercial: T) {
115 self.commercial = Some(commercial.into());
116 }
117
118 pub fn set_installment_prices<T: Into<Vec<InstallmentPrice>>>(
119 &mut self,
120 installment_prices: T,
121 ) {
122 self.installment_prices = Some(installment_prices.into());
123 }
124
125 pub fn bin_number(&self) -> Option<&String> {
126 self.bin_number.as_ref()
127 }
128
129 pub fn price(&self) -> Option<&BigDecimal> {
130 self.price.as_ref()
131 }
132 pub fn card_type(&self) -> Option<&String> {
133 self.card_type.as_ref()
134 }
135 pub fn card_association(&self) -> Option<&String> {
136 self.card_association.as_ref()
137 }
138 pub fn card_family_name(&self) -> Option<&String> {
139 self.card_family_name.as_ref()
140 }
141 pub fn force3ds(&self) -> Option<&u8> {
142 self.force3ds.as_ref()
143 }
144 pub fn bank_code(&self) -> Option<&i64> {
145 self.bank_code.as_ref()
146 }
147 pub fn bank_name(&self) -> Option<&String> {
148 self.bank_name.as_ref()
149 }
150 pub fn force_cvc(&self) -> Option<&u8> {
151 self.force_cvc.as_ref()
152 }
153 pub fn commercial(&self) -> Option<&u8> {
154 self.commercial.as_ref()
155 }
156 pub fn installment_prices(&self) -> Option<&Vec<InstallmentPrice>> {
157 self.installment_prices.as_ref()
158 }
159}
160
161#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
162#[serde(rename_all = "camelCase")]
163pub struct InstallmentPrice {
164 installment_price: Option<BigDecimal>,
165
166 total_price: Option<BigDecimal>,
167
168 installment_number: Option<u8>,
169}
170
171impl InstallmentPrice {
172 pub fn set_installment_price<T: Into<BigDecimal>>(&mut self, installment_price: T) {
173 self.installment_price = Some(installment_price.into());
174 }
175
176 pub fn set_total_price<T: Into<BigDecimal>>(&mut self, total_price: T) {
177 self.total_price = Some(total_price.into());
178 }
179
180 pub fn set_installment_number<T: Into<u8>>(&mut self, installment_number: T) {
181 self.installment_number = Some(installment_number.into());
182 }
183
184 pub fn installment_price(&self) -> Option<&BigDecimal> {
185 self.installment_price.as_ref()
186 }
187 pub fn total_price(&self) -> Option<&BigDecimal> {
188 self.total_price.as_ref()
189 }
190 pub fn installment_number(&self) -> Option<&u8> {
191 self.installment_number.as_ref()
192 }
193}