1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Default)]
8#[serde(default)]
9pub struct Order {
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub id: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub reference_id: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub locale: Option<String>,
16
17 #[serde(skip_serializing_if = "Option::is_none")]
19 pub amount: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub total: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub paid_amount: Option<String>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub refunded_amount: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub customer_paid_amount: Option<f64>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub currency: Option<String>, #[serde(skip_serializing_if = "Option::is_none")]
33 pub status: Option<i32>, #[serde(skip_serializing_if = "Option::is_none")]
35 pub status_enum: Option<String>,
36
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub description: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub buyer: Option<Buyer>,
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub items: Option<Vec<OrderItem>>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub basket_items: Option<Vec<BasketItemDTO>>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub billing_address: Option<BillingAddressDTO>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub shipping_address: Option<ShippingAddressDTO>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub checkout_design: Option<CheckoutDesignDTO>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub payment_terms: Option<Vec<OrderPaymentTermDetail>>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub payment_requests: Option<Vec<OrderPaymentRequest>>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub refund_cancel_requests: Option<Vec<OrderRefundCancelRequest>>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub conversation_id: Option<String>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub external_reference_id: Option<String>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub payment_options: Option<Vec<String>>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub payment_success_url: Option<String>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub payment_failure_url: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub redirect_success_url: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub redirect_failure_url: Option<String>,
74
75 #[serde(skip_serializing_if = "Option::is_none")]
76 pub callback_url: Option<String>,
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub checkout_url: Option<String>,
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub created_at: Option<String>,
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub updated_at: Option<String>,
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub metadata: Option<Vec<MetadataDTO>>, }
86
87pub type OrderDetail = Order;
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
92pub struct OrderItem {
93 pub name: String,
94 pub price: f64,
95 pub quantity: i32,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub description: Option<String>,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
101pub enum OrderStatus {
102 #[serde(rename = "pending")]
103 Pending,
104 #[serde(rename = "processing")]
105 Processing,
106 #[serde(rename = "completed")]
107 Completed,
108 #[serde(rename = "failed")]
109 Failed,
110 #[serde(rename = "cancelled")]
111 Cancelled,
112 #[serde(rename = "refunded")]
113 Refunded,
114 #[serde(rename = "partially_refunded")]
115 PartiallyRefunded,
116}
117
118#[derive(Debug, Clone, Serialize, Deserialize)]
119pub enum Currency {
120 #[serde(rename = "TRY")]
121 TRY,
122 #[serde(rename = "USD")]
123 USD,
124 #[serde(rename = "EUR")]
125 EUR,
126 #[serde(rename = "GBP")]
127 GBP,
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize, Default)]
132pub struct CreateOrderRequest {
133 pub amount: f64,
134 pub currency: String,
135 pub locale: String,
136 pub buyer: CreateBuyerRequest,
137 #[serde(rename = "basket_items", skip_serializing_if = "Option::is_none")]
138 pub basket_items: Option<Vec<BasketItemDTO>>,
139 #[serde(rename = "billing_address", skip_serializing_if = "Option::is_none")]
140 pub billing_address: Option<BillingAddressDTO>,
141 #[serde(rename = "checkout_design", skip_serializing_if = "Option::is_none")]
142 pub checkout_design: Option<CheckoutDesignDTO>,
143 #[serde(rename = "conversation_id", skip_serializing_if = "Option::is_none")]
144 pub conversation_id: Option<String>,
145 #[serde(
146 rename = "enabled_installments",
147 skip_serializing_if = "Option::is_none"
148 )]
149 pub enabled_installments: Option<Vec<i32>>,
150 #[serde(
151 rename = "external_reference_id",
152 skip_serializing_if = "Option::is_none"
153 )]
154 pub external_reference_id: Option<String>,
155 #[serde(skip_serializing_if = "Option::is_none")]
156 pub metadata: Option<Vec<MetadataDTO>>,
157 #[serde(rename = "order_cards", skip_serializing_if = "Option::is_none")]
159 pub order_cards: Option<Vec<OrderCardDTO>>,
160 #[serde(skip_serializing_if = "Option::is_none")]
162 pub order_vpos_id: Option<String>,
163 #[serde(rename = "paid_amount", skip_serializing_if = "Option::is_none")]
164 pub paid_amount: Option<f64>,
165 #[serde(rename = "partial_payment", skip_serializing_if = "Option::is_none")]
166 pub partial_payment: Option<bool>,
167 #[serde(
168 rename = "payment_failure_url",
169 skip_serializing_if = "Option::is_none"
170 )]
171 pub payment_failure_url: Option<String>,
172 #[serde(rename = "payment_methods", skip_serializing_if = "Option::is_none")]
173 pub payment_methods: Option<bool>,
174 #[serde(rename = "payment_mode", skip_serializing_if = "Option::is_none")]
176 pub payment_mode: Option<String>,
177 #[serde(rename = "payment_options", skip_serializing_if = "Option::is_none")]
178 pub payment_options: Option<Vec<String>>,
179 #[serde(
180 rename = "payment_success_url",
181 skip_serializing_if = "Option::is_none"
182 )]
183 pub payment_success_url: Option<String>,
184 #[serde(rename = "payment_terms", skip_serializing_if = "Option::is_none")]
185 pub payment_terms: Option<Vec<PaymentTermDTO>>,
186 #[serde(rename = "pf_sub_merchant", skip_serializing_if = "Option::is_none")]
187 pub pf_sub_merchant: Option<OrderPFSubMerchantDTO>,
188 #[serde(
189 rename = "redirect_failure_url",
190 skip_serializing_if = "Option::is_none"
191 )]
192 pub redirect_failure_url: Option<String>,
193 #[serde(
194 rename = "redirect_success_url",
195 skip_serializing_if = "Option::is_none"
196 )]
197 pub redirect_success_url: Option<String>,
198 #[serde(rename = "shipping_address", skip_serializing_if = "Option::is_none")]
199 pub shipping_address: Option<ShippingAddressDTO>,
200 #[serde(rename = "sub_organization", skip_serializing_if = "Option::is_none")]
201 pub sub_organization: Option<SubOrganizationDTO>,
202 #[serde(skip_serializing_if = "Option::is_none")]
203 pub submerchants: Option<Vec<SubmerchantDTO>>,
204 #[serde(rename = "tax_amount", skip_serializing_if = "Option::is_none")]
205 pub tax_amount: Option<f64>,
206 #[serde(rename = "three_d_force", skip_serializing_if = "Option::is_none")]
207 pub three_d_force: Option<bool>,
208 #[serde(skip_serializing_if = "Option::is_none")]
209 pub consents: Option<Vec<OrderConsent>>,
210}
211
212#[derive(Debug, Clone, Serialize, Deserialize, Default)]
214pub struct OrderConsent {
215 #[serde(skip_serializing_if = "Option::is_none")]
216 pub title: Option<String>,
217 #[serde(skip_serializing_if = "Option::is_none")]
218 pub url: Option<String>,
219}
220
221#[derive(Debug, Clone, Serialize, Deserialize)]
222pub struct CreateOrderItemRequest {
223 pub name: String,
224 pub price: f64,
225 pub quantity: i32,
226 #[serde(skip_serializing_if = "Option::is_none")]
227 pub description: Option<String>,
228}
229
230#[derive(Debug, Clone, Serialize, Deserialize, Default)]
231#[serde(default)]
232pub struct OrderResponse {
233 #[serde(skip_serializing_if = "Option::is_none")]
234 pub order_id: Option<String>,
235 #[serde(skip_serializing_if = "Option::is_none")]
236 pub reference_id: Option<String>,
237 #[serde(skip_serializing_if = "Option::is_none")]
238 pub checkout_url: Option<String>,
239}
240
241#[derive(Debug, Clone, Serialize, Deserialize, Default)]
242#[serde(default)]
243pub struct CreateOrderResponse {
244 #[serde(skip_serializing_if = "Option::is_none")]
245 pub order_id: Option<String>,
246 #[serde(skip_serializing_if = "Option::is_none")]
247 pub reference_id: Option<String>,
248 #[serde(skip_serializing_if = "Option::is_none")]
249 pub checkout_url: Option<String>,
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize, Default)]
255pub struct RefundOrderRequest {
256 pub amount: f64,
257 #[serde(rename = "reference_id")]
258 pub reference_id: String,
259 #[serde(rename = "order_item_id", skip_serializing_if = "Option::is_none")]
260 pub order_item_id: Option<String>,
261 #[serde(
262 rename = "order_item_payment_id",
263 skip_serializing_if = "Option::is_none"
264 )]
265 pub order_item_payment_id: Option<String>,
266}
267
268#[derive(Debug, Clone, Serialize, Deserialize)]
269pub struct RefundOrderResponse {
270 pub order: Order,
271 pub refund_amount: f64,
272 pub refund_id: String,
273}
274
275#[derive(Debug, Clone, Serialize, Deserialize, Default)]
276pub struct MetadataDTO {
277 pub key: String,
278 pub value: String,
279}
280
281#[derive(Debug, Clone, Serialize, Deserialize, Default)]
283pub struct BasketItemDTO {
284 #[serde(skip_serializing_if = "Option::is_none")]
285 pub category1: Option<String>,
286 #[serde(skip_serializing_if = "Option::is_none")]
287 pub category2: Option<String>,
288 #[serde(skip_serializing_if = "Option::is_none")]
289 pub commission_amount: Option<f64>,
290 #[serde(skip_serializing_if = "Option::is_none")]
291 pub coupon: Option<String>,
292 #[serde(skip_serializing_if = "Option::is_none")]
293 pub coupon_discount: Option<f64>,
294 #[serde(skip_serializing_if = "Option::is_none")]
295 pub data: Option<String>,
296 #[serde(skip_serializing_if = "Option::is_none")]
297 pub id: Option<String>,
298 #[serde(skip_serializing_if = "Option::is_none")]
299 pub item_type: Option<String>,
300 #[serde(skip_serializing_if = "Option::is_none")]
302 pub mcc: Option<String>,
303 #[serde(skip_serializing_if = "Option::is_none")]
304 pub name: Option<String>,
305 #[serde(skip_serializing_if = "Option::is_none")]
306 pub paid_amount: Option<f64>,
307 #[serde(skip_serializing_if = "Option::is_none")]
308 pub payer: Option<BasketItemPayerDTO>,
309 #[serde(skip_serializing_if = "Option::is_none")]
311 pub payout_release_at: Option<String>,
312 #[serde(skip_serializing_if = "Option::is_none")]
313 pub price: Option<f64>,
314 #[serde(skip_serializing_if = "Option::is_none")]
315 pub quantity: Option<i32>,
316 #[serde(skip_serializing_if = "Option::is_none")]
317 pub quantity_float: Option<f64>,
318 #[serde(skip_serializing_if = "Option::is_none")]
319 pub quantity_unit: Option<String>,
320 #[serde(skip_serializing_if = "Option::is_none")]
321 pub sub_merchant_key: Option<String>,
322 #[serde(skip_serializing_if = "Option::is_none")]
323 pub sub_merchant_price: Option<String>,
324 #[serde(skip_serializing_if = "Option::is_none")]
326 pub status: Option<u64>,
327 #[serde(skip_serializing_if = "Option::is_none")]
329 pub refunded_amount: Option<f64>,
330 #[serde(skip_serializing_if = "Option::is_none")]
332 pub refundable_amount: Option<f64>,
333 #[serde(skip_serializing_if = "Option::is_none")]
335 pub paidable_amount: Option<f64>,
336 #[serde(skip_serializing_if = "Option::is_none")]
338 pub item_payments: Option<Vec<OrderItemPayment>>,
339}
340
341#[derive(Debug, Clone, Serialize, Deserialize, Default)]
343#[serde(default)]
344pub struct OrderItemPayment {
345 #[serde(skip_serializing_if = "Option::is_none")]
346 pub id: Option<String>,
347 #[serde(skip_serializing_if = "Option::is_none")]
348 pub amount: Option<f64>,
349 #[serde(skip_serializing_if = "Option::is_none")]
350 pub paid_date: Option<String>,
351 #[serde(skip_serializing_if = "Option::is_none")]
352 pub masked_bin: Option<String>,
353 #[serde(skip_serializing_if = "Option::is_none")]
354 pub card_brand: Option<String>,
355 #[serde(skip_serializing_if = "Option::is_none")]
356 pub refunded_amount: Option<f64>,
357 #[serde(skip_serializing_if = "Option::is_none")]
358 pub refundable_amount: Option<f64>,
359 #[serde(skip_serializing_if = "Option::is_none")]
360 pub refunded_date: Option<String>,
361 #[serde(skip_serializing_if = "Option::is_none")]
362 pub refunded: Option<bool>,
363 #[serde(skip_serializing_if = "Option::is_none")]
364 pub status: Option<u64>,
365 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
366 pub type_: Option<String>,
367}
368
369#[derive(Debug, Clone, Serialize, Deserialize, Default)]
370pub struct BasketItemPayerDTO {
371 #[serde(skip_serializing_if = "Option::is_none")]
372 pub address: Option<String>,
373 #[serde(skip_serializing_if = "Option::is_none")]
374 pub reference_id: Option<String>,
375 #[serde(skip_serializing_if = "Option::is_none")]
376 pub tax_office: Option<String>,
377 #[serde(skip_serializing_if = "Option::is_none")]
378 pub title: Option<String>,
379 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
380 pub type_: Option<String>,
381 #[serde(skip_serializing_if = "Option::is_none")]
382 pub vat: Option<String>,
383 #[serde(skip_serializing_if = "Option::is_none")]
384 pub name: Option<String>,
385 #[serde(skip_serializing_if = "Option::is_none")]
386 pub surname: Option<String>,
387 #[serde(skip_serializing_if = "Option::is_none")]
388 pub identity_number: Option<String>,
389 #[serde(skip_serializing_if = "Option::is_none")]
390 pub email: Option<String>,
391 #[serde(skip_serializing_if = "Option::is_none")]
392 pub phone: Option<String>,
393}
394
395#[derive(Debug, Clone, Serialize, Deserialize, Default)]
396pub struct BillingAddressDTO {
397 #[serde(skip_serializing_if = "Option::is_none")]
398 pub address: Option<String>,
399 #[serde(skip_serializing_if = "Option::is_none")]
400 pub billing_type: Option<String>,
401 #[serde(skip_serializing_if = "Option::is_none")]
402 pub citizenship: Option<String>,
403 #[serde(skip_serializing_if = "Option::is_none")]
404 pub city: Option<String>,
405 #[serde(skip_serializing_if = "Option::is_none")]
406 pub contact_name: Option<String>,
407 #[serde(skip_serializing_if = "Option::is_none")]
408 pub contact_phone: Option<String>,
409 #[serde(skip_serializing_if = "Option::is_none")]
410 pub country: Option<String>,
411 #[serde(skip_serializing_if = "Option::is_none")]
412 pub district: Option<String>,
413 #[serde(skip_serializing_if = "Option::is_none")]
414 pub neighbourhood: Option<String>,
415 #[serde(skip_serializing_if = "Option::is_none")]
416 pub street1: Option<String>,
417 #[serde(skip_serializing_if = "Option::is_none")]
418 pub street2: Option<String>,
419 #[serde(skip_serializing_if = "Option::is_none")]
420 pub street3: Option<String>,
421 #[serde(skip_serializing_if = "Option::is_none")]
422 pub tax_office: Option<String>,
423 #[serde(skip_serializing_if = "Option::is_none")]
424 pub title: Option<String>,
425 #[serde(skip_serializing_if = "Option::is_none")]
426 pub vat_number: Option<String>,
427 #[serde(skip_serializing_if = "Option::is_none")]
428 pub zip_code: Option<String>,
429}
430
431#[derive(Debug, Clone, Serialize, Deserialize, Default)]
433pub struct CheckoutDesignDTO {
434 #[serde(skip_serializing_if = "Option::is_none")]
435 pub input_background_color: Option<String>,
436 #[serde(skip_serializing_if = "Option::is_none")]
437 pub input_text_color: Option<String>,
438 #[serde(skip_serializing_if = "Option::is_none")]
439 pub label_text_color: Option<String>,
440 #[serde(skip_serializing_if = "Option::is_none")]
441 pub left_background_color: Option<String>,
442 #[serde(skip_serializing_if = "Option::is_none")]
443 pub logo: Option<String>,
444 #[serde(skip_serializing_if = "Option::is_none")]
446 pub order_detail_html: Option<String>,
447 #[serde(skip_serializing_if = "Option::is_none")]
448 pub pay_button_color: Option<String>,
449 #[serde(skip_serializing_if = "Option::is_none")]
450 pub pay_button_text_color: Option<String>,
451 #[serde(skip_serializing_if = "Option::is_none")]
452 pub page_background_color: Option<String>,
453 #[serde(skip_serializing_if = "Option::is_none")]
454 pub border_color: Option<String>,
455 #[serde(skip_serializing_if = "Option::is_none")]
456 pub input_border_color: Option<String>,
457 #[serde(skip_serializing_if = "Option::is_none")]
458 pub accent_color: Option<String>,
459 #[serde(skip_serializing_if = "Option::is_none")]
460 pub text_muted_color: Option<String>,
461 #[serde(skip_serializing_if = "Option::is_none")]
462 pub surface_muted_color: Option<String>,
463 #[serde(skip_serializing_if = "Option::is_none")]
464 pub dark_mode_enabled: Option<bool>,
465 #[serde(skip_serializing_if = "Option::is_none")]
467 pub dark_colors: Option<HashMap<String, String>>,
468 #[serde(skip_serializing_if = "Option::is_none")]
471 pub redirect_url: Option<String>,
472 #[serde(skip_serializing_if = "Option::is_none")]
473 pub right_background_color: Option<String>,
474 #[serde(skip_serializing_if = "Option::is_none")]
475 pub text_color: Option<String>,
476}
477
478#[derive(Debug, Clone, Serialize, Deserialize, Default)]
480pub struct OrderCardDTO {
481 pub card_id: String,
482 pub card_sequence: i32,
483}
484
485#[derive(Debug, Clone, Serialize, Deserialize, Default)]
488pub struct PaymentTermDTO {
489 #[serde(skip_serializing_if = "Option::is_none")]
490 pub amount: Option<f64>,
491 #[serde(skip_serializing_if = "Option::is_none")]
492 pub data: Option<String>,
493 #[serde(skip_serializing_if = "Option::is_none")]
494 pub due_date: Option<String>,
495 #[serde(skip_serializing_if = "Option::is_none")]
496 pub paid_date: Option<String>,
497 #[serde(skip_serializing_if = "Option::is_none")]
498 pub required: Option<bool>,
499 #[serde(skip_serializing_if = "Option::is_none")]
500 pub status: Option<String>,
501 #[serde(skip_serializing_if = "Option::is_none")]
502 pub term_reference_id: Option<String>,
503 #[serde(skip_serializing_if = "Option::is_none")]
504 pub term_sequence: Option<i32>,
505}
506
507#[derive(Debug, Clone, Serialize, Deserialize, Default)]
509#[serde(default)]
510pub struct OrderPaymentTermDetail {
511 #[serde(skip_serializing_if = "Option::is_none")]
512 pub id: Option<String>,
513 #[serde(skip_serializing_if = "Option::is_none")]
514 pub hash_id: Option<String>,
515 #[serde(skip_serializing_if = "Option::is_none")]
516 pub term_sequence: Option<u64>,
517 #[serde(skip_serializing_if = "Option::is_none")]
518 pub required: Option<bool>,
519 #[serde(skip_serializing_if = "Option::is_none")]
520 pub due_date: Option<String>,
521 #[serde(skip_serializing_if = "Option::is_none")]
522 pub paid_date: Option<String>,
523 #[serde(skip_serializing_if = "Option::is_none")]
524 pub amount: Option<f64>,
525 #[serde(skip_serializing_if = "Option::is_none")]
526 pub term_reference_id: Option<String>,
527 #[serde(skip_serializing_if = "Option::is_none")]
528 pub status: Option<String>,
529 #[serde(skip_serializing_if = "Option::is_none")]
530 pub payments: Option<Vec<OrderItemPayment>>,
531 #[serde(skip_serializing_if = "Option::is_none")]
532 pub data: Option<String>,
533}
534
535#[derive(Debug, Clone, Serialize, Deserialize, Default)]
537#[serde(default)]
538pub struct OrderPaymentRequest {
539 #[serde(skip_serializing_if = "Option::is_none")]
540 pub id: Option<String>,
541 #[serde(skip_serializing_if = "Option::is_none")]
542 pub date: Option<String>,
543 #[serde(skip_serializing_if = "Option::is_none")]
544 pub payment_mode: Option<String>,
545 #[serde(skip_serializing_if = "Option::is_none")]
546 pub amount: Option<String>,
547 #[serde(skip_serializing_if = "Option::is_none")]
548 pub card_hash: Option<String>,
549 #[serde(skip_serializing_if = "Option::is_none")]
550 pub masked_card: Option<String>,
551 #[serde(skip_serializing_if = "Option::is_none")]
552 pub paid: Option<bool>,
553 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
554 pub type_: Option<String>,
555}
556
557#[derive(Debug, Clone, Serialize, Deserialize, Default)]
559#[serde(default)]
560pub struct OrderRefundCancelRequest {
561 #[serde(skip_serializing_if = "Option::is_none")]
562 pub id: Option<String>,
563 #[serde(skip_serializing_if = "Option::is_none")]
564 pub amount: Option<String>,
565 #[serde(skip_serializing_if = "Option::is_none")]
566 pub status: Option<u64>,
567 #[serde(skip_serializing_if = "Option::is_none")]
568 pub reason: Option<String>,
569 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
570 pub type_: Option<u64>,
571 #[serde(skip_serializing_if = "Option::is_none")]
572 pub term_id: Option<String>,
573 #[serde(skip_serializing_if = "Option::is_none")]
574 pub item_id: Option<String>,
575 #[serde(skip_serializing_if = "Option::is_none")]
576 pub created_at: Option<String>,
577}
578
579#[derive(Debug, Clone, Serialize, Deserialize, Default)]
580pub struct OrderPFSubMerchantDTO {
581 #[serde(skip_serializing_if = "Option::is_none")]
582 pub address: Option<String>,
583 #[serde(skip_serializing_if = "Option::is_none")]
584 pub city: Option<String>,
585 #[serde(skip_serializing_if = "Option::is_none")]
586 pub country: Option<String>,
587 #[serde(skip_serializing_if = "Option::is_none")]
588 pub country_iso_code: Option<String>,
589 #[serde(skip_serializing_if = "Option::is_none")]
590 pub id: Option<String>,
591 #[serde(skip_serializing_if = "Option::is_none")]
592 pub mcc: Option<String>,
593 #[serde(skip_serializing_if = "Option::is_none")]
594 pub name: Option<String>,
595 #[serde(skip_serializing_if = "Option::is_none")]
596 pub national_id: Option<String>,
597 #[serde(skip_serializing_if = "Option::is_none")]
598 pub org_id: Option<String>,
599 #[serde(skip_serializing_if = "Option::is_none")]
600 pub postal_code: Option<String>,
601 #[serde(skip_serializing_if = "Option::is_none")]
602 pub submerchant_nin: Option<String>,
603 #[serde(skip_serializing_if = "Option::is_none")]
604 pub submerchant_url: Option<String>,
605 #[serde(skip_serializing_if = "Option::is_none")]
606 pub switch_id: Option<String>,
607 #[serde(skip_serializing_if = "Option::is_none")]
608 pub terminal_no: Option<String>,
609}
610
611#[derive(Debug, Clone, Serialize, Deserialize, Default)]
612pub struct ShippingAddressDTO {
613 #[serde(skip_serializing_if = "Option::is_none")]
614 pub address: Option<String>,
615 #[serde(skip_serializing_if = "Option::is_none")]
616 pub city: Option<String>,
617 #[serde(skip_serializing_if = "Option::is_none")]
618 pub contact_name: Option<String>,
619 #[serde(skip_serializing_if = "Option::is_none")]
620 pub country: Option<String>,
621 #[serde(skip_serializing_if = "Option::is_none")]
622 pub shipping_date: Option<String>,
623 #[serde(skip_serializing_if = "Option::is_none")]
624 pub tracking_code: Option<String>,
625 #[serde(skip_serializing_if = "Option::is_none")]
626 pub zip_code: Option<String>,
627}
628
629#[derive(Debug, Clone, Serialize, Deserialize, Default)]
630pub struct SubOrganizationDTO {
631 #[serde(skip_serializing_if = "Option::is_none")]
632 pub acquirer: Option<String>,
633 #[serde(skip_serializing_if = "Option::is_none")]
634 pub address: Option<String>,
635 #[serde(skip_serializing_if = "Option::is_none")]
636 pub contact_first_name: Option<String>,
637 #[serde(skip_serializing_if = "Option::is_none")]
638 pub contact_last_name: Option<String>,
639 #[serde(skip_serializing_if = "Option::is_none")]
640 pub currency: Option<String>,
641 #[serde(skip_serializing_if = "Option::is_none")]
642 pub email: Option<String>,
643 #[serde(skip_serializing_if = "Option::is_none")]
644 pub gsm_number: Option<String>,
645 #[serde(skip_serializing_if = "Option::is_none")]
646 pub iban: Option<String>,
647 #[serde(skip_serializing_if = "Option::is_none")]
648 pub identity_number: Option<String>,
649 #[serde(skip_serializing_if = "Option::is_none")]
650 pub legal_company_title: Option<String>,
651 #[serde(skip_serializing_if = "Option::is_none")]
652 pub organization_name: Option<String>,
653 #[serde(skip_serializing_if = "Option::is_none")]
654 pub sub_merchant_external_id: Option<String>,
655 #[serde(skip_serializing_if = "Option::is_none")]
656 pub sub_merchant_key: Option<String>,
657 #[serde(skip_serializing_if = "Option::is_none")]
658 pub sub_merchant_type: Option<String>,
659 #[serde(skip_serializing_if = "Option::is_none")]
660 pub tax_number: Option<String>,
661 #[serde(skip_serializing_if = "Option::is_none")]
662 pub tax_office: Option<String>,
663}
664
665#[derive(Debug, Clone, Serialize, Deserialize, Default)]
666pub struct SubmerchantDTO {
667 #[serde(skip_serializing_if = "Option::is_none")]
668 pub amount: Option<f64>,
669 #[serde(skip_serializing_if = "Option::is_none")]
670 pub merchant_reference_id: Option<String>,
671 #[serde(skip_serializing_if = "Option::is_none")]
672 pub order_basket_item_id: Option<String>,
673}
674
675#[derive(Debug, Clone, Serialize, Deserialize, Default)]
676pub struct OrderAccountingRequest {
677 #[serde(rename = "order_reference_id")]
678 pub order_reference_id: String,
679}
680
681#[derive(Debug, Clone, Serialize, Deserialize, Default)]
682pub struct OrderPostAuthRequest {
683 pub amount: f64,
684 #[serde(rename = "reference_id")]
685 pub reference_id: String,
686}
687
688#[derive(Debug, Clone, Serialize, Deserialize, Default)]
691pub struct OrderPaymentTermCreateDTO {
692 pub order_id: String,
694 pub term_reference_id: String,
695 pub amount: f64,
696 pub due_date: String,
697 pub term_sequence: i32,
698 pub required: bool,
699 pub status: String,
700 #[serde(skip_serializing_if = "Option::is_none")]
701 pub data: Option<String>,
702 #[serde(skip_serializing_if = "Option::is_none")]
703 pub paid_date: Option<String>,
704}
705
706#[derive(Debug, Clone, Serialize, Deserialize, Default)]
709pub struct OrderPaymentTermUpdateDTO {
710 pub term_reference_id: String,
711 #[serde(skip_serializing_if = "Option::is_none")]
712 pub amount: Option<f64>,
713 #[serde(skip_serializing_if = "Option::is_none")]
714 pub due_date: Option<String>,
715 #[serde(skip_serializing_if = "Option::is_none")]
716 pub paid_date: Option<String>,
717 #[serde(skip_serializing_if = "Option::is_none")]
718 pub required: Option<bool>,
719 #[serde(skip_serializing_if = "Option::is_none")]
720 pub status: Option<String>,
721 #[serde(skip_serializing_if = "Option::is_none")]
722 pub term_sequence: Option<i32>,
723}
724
725#[derive(Debug, Clone, Serialize, Deserialize, Default)]
727pub struct OrderTermRefundRequest {
728 pub term_id: String,
730 pub amount: f64,
731 #[serde(skip_serializing_if = "Option::is_none")]
733 pub reference_id: Option<String>,
734 #[serde(skip_serializing_if = "Option::is_none")]
735 pub term_payment_id: Option<String>,
736}
737
738#[derive(Debug, Clone, Default)]
741pub struct OrderListFilter {
742 pub page: u32,
743 pub per_page: u32,
744 pub start_date: Option<String>,
745 pub end_date: Option<String>,
746 pub organization_id: Option<String>,
747 pub conversation_id: Option<String>,
748 pub related_reference_id: Option<String>,
749 pub buyer_id: Option<String>,
750 pub status: Option<i32>,
752}
753
754#[derive(Debug, Clone, Serialize, Deserialize, Default)]
756pub struct GetOrderPaymentsRequest {
757 #[serde(skip_serializing_if = "Option::is_none")]
758 pub order_id: Option<String>,
759 #[serde(skip_serializing_if = "Option::is_none")]
760 pub order_reference_id: Option<String>,
761 #[serde(skip_serializing_if = "Option::is_none")]
762 pub conversation_id: Option<String>,
763}
764
765#[derive(Debug, Clone, Serialize, Deserialize, Default)]
767#[serde(default)]
768pub struct OrderPayment {
769 pub id: String,
770 pub date: String,
771 pub payment_mode: String,
772 pub amount: f64,
773 pub card_id: String,
774 pub masked_card: String,
775 pub card_holder_name: String,
776 pub card_type: String,
777 pub card_brand: String,
778 pub card_bank: String,
779 pub card_network: String,
780 pub paid: bool,
781 #[serde(rename = "type")]
782 pub type_: String,
783 pub acquirer_response: String,
784 pub vpos_commission_amount: f64,
785 pub vpos_commission_rate: f64,
786 pub vpos_commission_fee_type: String,
787 pub organization_commission_amount: f64,
788 pub organization_commission_rate: f64,
789 pub organization_commission_fee_type: String,
790 pub total_amount: f64,
791 pub acquirer_commission_amount: f64,
792 pub acquirer_commission_rate: f64,
793 pub acquirer_commission_fee_type: String,
794 pub acquirer_name: String,
795 pub customer_paid_commission_amount: f64,
796 pub merchant_paid_commission_amount: f64,
797 pub merchant_net_amount: f64,
798}
799
800#[derive(Debug, Clone, Serialize, Deserialize, Default)]
802#[serde(default)]
803pub struct GetOrderPaymentsResponse {
804 pub payments: Vec<OrderPayment>,
805 pub total_amount: f64,
806 pub total_customer_paid_commission_amount: f64,
807 pub total_merchant_paid_commission_amount: f64,
808 pub total_merchant_net_amount: f64,
809 pub order_amount: f64,
810}
811
812#[derive(Debug, Clone, Serialize, Deserialize, Default)]
814#[serde(default)]
815pub struct OrderSubmerchantListItem {
816 pub id: String,
817 pub name: String,
818 pub email: String,
819 pub submerchant_type: String,
820 pub submerchant_key: String,
821 pub labels: String,
822 pub status: String,
823 pub acquirer: String,
824}
825
826#[derive(Debug, Clone, Serialize, Deserialize, Default)]
828#[serde(default)]
829pub struct OrderSubmerchantListResponse {
830 pub page: i64,
831 pub per_page: i64,
832 pub total: i64,
833 pub total_pages: i64,
834 #[serde(rename = "row")]
835 pub rows: Vec<OrderSubmerchantListItem>,
836}
837
838#[derive(Debug, Clone, Serialize, Deserialize, Default)]
840pub struct OrderChargeRequest {
841 pub order_reference_id: String,
842 #[serde(skip_serializing_if = "std::ops::Not::not")]
843 pub retry: bool,
844}
845
846#[derive(Debug, Clone, Serialize, Deserialize, Default)]
848#[serde(default, rename_all = "camelCase")]
849pub struct OrderChargeResponse {
850 pub is_success: bool,
851 pub message: String,
852 pub status_code: String,
853 pub error_code: String,
854}
855
856use crate::types::buyer::Buyer;
858pub use crate::types::buyer::CreateBuyerRequest;