iyzipay_rust/requests/
checkout.rs1use bigdecimal::BigDecimal;
2
3use crate::model::Address;
4use crate::model::BasketItem;
5use crate::model::Buyer;
6use crate::requests::PKISerialize;
7use crate::requests::Request;
8use crate::requests::RequestStringBuilder;
9
10#[derive(Debug, Default, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct CreateCheckoutFormInitializeRequest {
13 #[serde(flatten)]
14 request: Request,
15
16 price: Option<BigDecimal>,
17
18 paid_price: Option<BigDecimal>,
19
20 basket_id: Option<String>,
21
22 payment_group: Option<String>,
23
24 payment_source: Option<String>,
25
26 currency: Option<String>,
27
28 buyer: Option<Buyer>,
29
30 shipping_address: Option<Address>,
31
32 billing_address: Option<Address>,
33
34 basket_items: Option<Vec<BasketItem>>,
35
36 callback_url: Option<String>,
37
38 #[serde(rename = "forceThreeDS")]
39 force_three_ds: Option<u8>,
40
41 card_user_key: Option<String>,
42
43 pos_order_id: Option<String>,
44
45 enabled_installments: Option<Vec<u8>>,
46
47 payment_with_new_card_enabled: Option<bool>,
48
49 debit_card_allowed: Option<bool>,
50}
51
52impl CreateCheckoutFormInitializeRequest {
53 pub fn new() -> Self {
54 CreateCheckoutFormInitializeRequest::default()
55 }
56
57 pub fn set_price<T: Into<BigDecimal>>(&mut self, price: T) {
58 self.price = Some(price.into());
59 }
60
61 pub fn set_paid_price<T: Into<BigDecimal>>(&mut self, paid_price: T) {
62 self.paid_price = Some(paid_price.into());
63 }
64
65 pub fn set_basket_id<T: Into<String>>(&mut self, basket_id: T) {
66 self.basket_id = Some(basket_id.into());
67 }
68
69 pub fn set_payment_group<T: Into<String>>(&mut self, payment_group: T) {
70 self.payment_group = Some(payment_group.into());
71 }
72
73 pub fn set_payment_source<T: Into<String>>(&mut self, payment_source: T) {
74 self.payment_source = Some(payment_source.into());
75 }
76
77 pub fn set_currency<T: Into<String>>(&mut self, currency: T) {
78 self.currency = Some(currency.into());
79 }
80
81 pub fn set_buyer<T: Into<Buyer>>(&mut self, buyer: T) {
82 self.buyer = Some(buyer.into());
83 }
84
85 pub fn set_shipping_address<T: Into<Address>>(&mut self, shipping_address: T) {
86 self.shipping_address = Some(shipping_address.into());
87 }
88
89 pub fn set_billing_address<T: Into<Address>>(&mut self, billing_address: T) {
90 self.billing_address = Some(billing_address.into());
91 }
92
93 pub fn set_basket_items<T: Into<Vec<BasketItem>>>(&mut self, basket_items: T) {
94 self.basket_items = Some(basket_items.into());
95 }
96
97 pub fn set_callback_url<T: Into<String>>(&mut self, callback_url: T) {
98 self.callback_url = Some(callback_url.into());
99 }
100
101 pub fn set_force_three_ds<T: Into<u8>>(&mut self, force_three_ds: T) {
102 self.force_three_ds = Some(force_three_ds.into());
103 }
104
105 pub fn set_card_user_key<T: Into<String>>(&mut self, card_user_key: T) {
106 self.card_user_key = Some(card_user_key.into());
107 }
108
109 pub fn set_pos_order_id<T: Into<String>>(&mut self, pos_order_id: T) {
110 self.pos_order_id = Some(pos_order_id.into());
111 }
112
113 pub fn set_enabled_installments<T: Into<Vec<u8>>>(&mut self, enabled_installments: T) {
114 self.enabled_installments = Some(enabled_installments.into());
115 }
116
117 pub fn set_payment_with_new_card_enabled<T: Into<bool>>(
118 &mut self,
119 payment_with_new_card_enabled: T,
120 ) {
121 self.payment_with_new_card_enabled = Some(payment_with_new_card_enabled.into());
122 }
123
124 pub fn set_debit_card_allowed<T: Into<bool>>(&mut self, debit_card_allowed: T) {
125 self.debit_card_allowed = Some(debit_card_allowed.into());
126 }
127
128 pub fn price(&self) -> Option<&BigDecimal> {
129 self.price.as_ref()
130 }
131 pub fn paid_price(&self) -> Option<&BigDecimal> {
132 self.paid_price.as_ref()
133 }
134 pub fn basket_id(&self) -> Option<&String> {
135 self.basket_id.as_ref()
136 }
137 pub fn payment_group(&self) -> Option<&String> {
138 self.payment_group.as_ref()
139 }
140 pub fn payment_source(&self) -> Option<&String> {
141 self.payment_source.as_ref()
142 }
143 pub fn currency(&self) -> Option<&String> {
144 self.currency.as_ref()
145 }
146 pub fn buyer(&self) -> Option<&Buyer> {
147 self.buyer.as_ref()
148 }
149 pub fn shipping_address(&self) -> Option<&Address> {
150 self.shipping_address.as_ref()
151 }
152 pub fn billing_address(&self) -> Option<&Address> {
153 self.billing_address.as_ref()
154 }
155 pub fn basket_items(&self) -> Option<&Vec<BasketItem>> {
156 self.basket_items.as_ref()
157 }
158 pub fn callback_url(&self) -> Option<&String> {
159 self.callback_url.as_ref()
160 }
161 pub fn force_three_ds(&self) -> Option<&u8> {
162 self.force_three_ds.as_ref()
163 }
164 pub fn card_user_key(&self) -> Option<&String> {
165 self.card_user_key.as_ref()
166 }
167 pub fn pos_order_id(&self) -> Option<&String> {
168 self.pos_order_id.as_ref()
169 }
170 pub fn enabled_installments(&self) -> Option<&Vec<u8>> {
171 self.enabled_installments.as_ref()
172 }
173 pub fn payment_with_new_card_enabled(&self) -> Option<&bool> {
174 self.payment_with_new_card_enabled.as_ref()
175 }
176 pub fn debit_card_allowed(&self) -> Option<&bool> {
177 self.debit_card_allowed.as_ref()
178 }
179}
180
181impl PKISerialize for CreateCheckoutFormInitializeRequest {
182 fn serialize(&self) -> Option<String> {
183 let mut ser = RequestStringBuilder::new();
184 ser.append_option_val(self.request.serialize());
185 ser.append_price_option("price", self.price.as_ref());
186 ser.append_option("basketId", self.basket_id.as_ref());
187 ser.append_option("paymentGroup", self.payment_group.as_ref());
188 ser.append_option("buyer", self.buyer.serialize());
189 ser.append_option("shippingAddress", self.shipping_address.serialize());
190 ser.append_option("billingAddress", self.billing_address.serialize());
191 ser.append_option("basketItems", self.basket_items.serialize());
192 ser.append_option("callbackUrl", self.callback_url.as_ref());
193 ser.append_option("paymentSource", self.payment_source.as_ref());
194 ser.append_option("currency", self.currency.as_ref());
195 ser.append_option("posOrderId", self.pos_order_id.as_ref());
196 ser.append_price_option("paidPrice", self.paid_price.as_ref());
197 ser.append_option("forceThreeDS", self.force_three_ds);
198 ser.append_option("cardUserKey", self.card_user_key.as_ref());
199 ser.append_option("enabledInstallments", self.enabled_installments.serialize());
200 ser.append_option(
201 "paymentWithNewCardEnabled",
202 self.payment_with_new_card_enabled,
203 );
204 ser.append_option("debitCardAllowed", self.debit_card_allowed);
205 Option::from(ser.build(true))
206 }
207}
208
209impl std::ops::Deref for CreateCheckoutFormInitializeRequest {
210 type Target = Request;
211 fn deref(&self) -> &Self::Target {
212 &self.request
213 }
214}
215
216impl std::ops::DerefMut for CreateCheckoutFormInitializeRequest {
217 fn deref_mut(&mut self) -> &mut Self::Target {
218 &mut self.request
219 }
220}
221
222#[derive(Debug, Default, Serialize, Deserialize)]
223#[serde(rename_all = "camelCase")]
224pub struct RetrieveCheckoutFormRequest {
225 #[serde(flatten)]
226 request: Request,
227
228 token: Option<String>,
229}
230
231impl RetrieveCheckoutFormRequest {
232 pub fn new() -> Self {
233 RetrieveCheckoutFormRequest::default()
234 }
235
236 pub fn set_token<T: Into<String>>(&mut self, token: T) {
237 self.token = Some(token.into());
238 }
239
240 pub fn token(&self) -> Option<&String> {
241 self.token.as_ref()
242 }
243}
244
245impl PKISerialize for RetrieveCheckoutFormRequest {
246 fn serialize(&self) -> Option<String> {
247 let mut ser = RequestStringBuilder::new();
248 ser.append_option_val(self.request.serialize());
249 ser.append_option("token", self.token.as_ref());
250 Option::from(ser.build(true))
251 }
252}
253
254impl std::ops::Deref for RetrieveCheckoutFormRequest {
255 type Target = Request;
256 fn deref(&self) -> &Self::Target {
257 &self.request
258 }
259}
260
261impl std::ops::DerefMut for RetrieveCheckoutFormRequest {
262 fn deref_mut(&mut self) -> &mut Self::Target {
263 &mut self.request
264 }
265}