1use bigdecimal::BigDecimal;
2
3use crate::model::Address;
4use crate::model::BasketItem;
5use crate::model::Buyer;
6use crate::requests::RequestStringBuilder;
7
8use self::super::PKISerialize;
9use self::super::Request;
10
11#[derive(Debug, Default, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase")]
13pub struct CreateSubMerchantRequest {
14 #[serde(flatten)]
15 request: Request,
16
17 name: Option<String>,
18
19 email: Option<String>,
20
21 gsm_number: Option<String>,
22
23 address: Option<String>,
24
25 iban: Option<String>,
26
27 tax_office: Option<String>,
28
29 contact_name: Option<String>,
30
31 contact_surname: Option<String>,
32
33 legal_company_title: Option<String>,
34
35 swift_code: Option<String>,
36
37 currency: Option<String>,
38
39 identity_number: Option<String>,
40
41 tax_number: Option<String>,
42
43 sub_merchant_external_id: Option<String>,
44
45 sub_merchant_type: Option<String>,
46}
47
48impl CreateSubMerchantRequest {
49 pub fn new() -> Self {
50 CreateSubMerchantRequest::default()
51 }
52
53 pub fn set_name<T: Into<String>>(&mut self, name: T) {
54 self.name = Some(name.into());
55 }
56
57 pub fn set_email<T: Into<String>>(&mut self, email: T) {
58 self.email = Some(email.into());
59 }
60
61 pub fn set_gsm_number<T: Into<String>>(&mut self, gsm_number: T) {
62 self.gsm_number = Some(gsm_number.into());
63 }
64
65 pub fn set_address<T: Into<String>>(&mut self, address: T) {
66 self.address = Some(address.into());
67 }
68
69 pub fn set_iban<T: Into<String>>(&mut self, iban: T) {
70 self.iban = Some(iban.into());
71 }
72
73 pub fn set_tax_office<T: Into<String>>(&mut self, tax_office: T) {
74 self.tax_office = Some(tax_office.into());
75 }
76
77 pub fn set_contact_name<T: Into<String>>(&mut self, contact_name: T) {
78 self.contact_name = Some(contact_name.into());
79 }
80
81 pub fn set_contact_surname<T: Into<String>>(&mut self, contact_surname: T) {
82 self.contact_surname = Some(contact_surname.into());
83 }
84
85 pub fn set_legal_company_title<T: Into<String>>(&mut self, legal_company_title: T) {
86 self.legal_company_title = Some(legal_company_title.into());
87 }
88
89 pub fn set_swift_code<T: Into<String>>(&mut self, swift_code: T) {
90 self.swift_code = Some(swift_code.into());
91 }
92
93 pub fn set_currency<T: Into<String>>(&mut self, currency: T) {
94 self.currency = Some(currency.into());
95 }
96
97 pub fn set_identity_number<T: Into<String>>(&mut self, identity_number: T) {
98 self.identity_number = Some(identity_number.into());
99 }
100
101 pub fn set_tax_number<T: Into<String>>(&mut self, tax_number: T) {
102 self.tax_number = Some(tax_number.into());
103 }
104
105 pub fn set_sub_merchant_external_id<T: Into<String>>(&mut self, sub_merchant_external_id: T) {
106 self.sub_merchant_external_id = Some(sub_merchant_external_id.into());
107 }
108
109 pub fn set_sub_merchant_type<T: Into<String>>(&mut self, sub_merchant_type: T) {
110 self.sub_merchant_type = Some(sub_merchant_type.into());
111 }
112
113 pub fn name(&self) -> Option<&String> {
114 self.name.as_ref()
115 }
116 pub fn email(&self) -> Option<&String> {
117 self.email.as_ref()
118 }
119 pub fn gsm_number(&self) -> Option<&String> {
120 self.gsm_number.as_ref()
121 }
122 pub fn address(&self) -> Option<&String> {
123 self.address.as_ref()
124 }
125 pub fn iban(&self) -> Option<&String> {
126 self.iban.as_ref()
127 }
128 pub fn tax_office(&self) -> Option<&String> {
129 self.tax_office.as_ref()
130 }
131 pub fn contact_name(&self) -> Option<&String> {
132 self.contact_name.as_ref()
133 }
134 pub fn contact_surname(&self) -> Option<&String> {
135 self.contact_surname.as_ref()
136 }
137 pub fn legal_company_title(&self) -> Option<&String> {
138 self.legal_company_title.as_ref()
139 }
140 pub fn swift_code(&self) -> Option<&String> {
141 self.swift_code.as_ref()
142 }
143 pub fn currency(&self) -> Option<&String> {
144 self.currency.as_ref()
145 }
146 pub fn identity_number(&self) -> Option<&String> {
147 self.identity_number.as_ref()
148 }
149 pub fn tax_number(&self) -> Option<&String> {
150 self.tax_number.as_ref()
151 }
152 pub fn sub_merchant_external_id(&self) -> Option<&String> {
153 self.sub_merchant_external_id.as_ref()
154 }
155 pub fn sub_merchant_type(&self) -> Option<&String> {
156 self.sub_merchant_type.as_ref()
157 }
158}
159
160impl PKISerialize for CreateSubMerchantRequest {
161 fn serialize(&self) -> Option<String> {
162 let mut ser = RequestStringBuilder::new();
163 ser.append_option_val(self.request.serialize());
164 ser.append_option("name", self.name.as_ref());
165 ser.append_option("email", self.email.as_ref());
166 ser.append_option("gsmNumber", self.gsm_number.as_ref());
167 ser.append_option("address", self.address.as_ref());
168 ser.append_option("iban", self.iban.as_ref());
169 ser.append_option("taxOffice", self.tax_office.as_ref());
170 ser.append_option("contactName", self.contact_name.as_ref());
171 ser.append_option("contactSurname", self.contact_surname.as_ref());
172 ser.append_option("legalCompanyTitle", self.legal_company_title.as_ref());
173 ser.append_option("swiftCode", self.swift_code.as_ref());
174 ser.append_option("currency", self.currency.as_ref());
175 ser.append_option(
176 "subMerchantExternalId",
177 self.sub_merchant_external_id.as_ref(),
178 );
179 ser.append_option("identityNumber", self.identity_number.as_ref());
180 ser.append_option("taxNumber", self.tax_number.as_ref());
181 ser.append_option("subMerchantType", self.sub_merchant_type.as_ref());
182 Option::from(ser.build(true))
183 }
184}
185
186impl std::ops::Deref for CreateSubMerchantRequest {
187 type Target = Request;
188 fn deref(&self) -> &Self::Target {
189 &self.request
190 }
191}
192
193impl std::ops::DerefMut for CreateSubMerchantRequest {
194 fn deref_mut(&mut self) -> &mut Self::Target {
195 &mut self.request
196 }
197}
198
199#[derive(Debug, Default, Serialize, Deserialize)]
200#[serde(rename_all = "camelCase")]
201pub struct UpdateSubMerchantRequest {
202 #[serde(flatten)]
203 request: Request,
204
205 name: Option<String>,
206
207 email: Option<String>,
208
209 gsm_number: Option<String>,
210
211 address: Option<String>,
212
213 iban: Option<String>,
214
215 tax_office: Option<String>,
216
217 contact_name: Option<String>,
218
219 contact_surname: Option<String>,
220
221 legal_company_title: Option<String>,
222
223 swift_code: Option<String>,
224
225 currency: Option<String>,
226
227 identity_number: Option<String>,
228
229 tax_number: Option<String>,
230
231 sub_merchant_key: Option<String>,
232}
233
234impl UpdateSubMerchantRequest {
235 pub fn new() -> Self {
236 UpdateSubMerchantRequest::default()
237 }
238
239 pub fn set_name<T: Into<String>>(&mut self, name: T) {
240 self.name = Some(name.into());
241 }
242
243 pub fn set_email<T: Into<String>>(&mut self, email: T) {
244 self.email = Some(email.into());
245 }
246
247 pub fn set_gsm_number<T: Into<String>>(&mut self, gsm_number: T) {
248 self.gsm_number = Some(gsm_number.into());
249 }
250
251 pub fn set_address<T: Into<String>>(&mut self, address: T) {
252 self.address = Some(address.into());
253 }
254
255 pub fn set_iban<T: Into<String>>(&mut self, iban: T) {
256 self.iban = Some(iban.into());
257 }
258
259 pub fn set_tax_office<T: Into<String>>(&mut self, tax_office: T) {
260 self.tax_office = Some(tax_office.into());
261 }
262
263 pub fn set_contact_name<T: Into<String>>(&mut self, contact_name: T) {
264 self.contact_name = Some(contact_name.into());
265 }
266
267 pub fn set_contact_surname<T: Into<String>>(&mut self, contact_surname: T) {
268 self.contact_surname = Some(contact_surname.into());
269 }
270
271 pub fn set_legal_company_title<T: Into<String>>(&mut self, legal_company_title: T) {
272 self.legal_company_title = Some(legal_company_title.into());
273 }
274
275 pub fn set_swift_code<T: Into<String>>(&mut self, swift_code: T) {
276 self.swift_code = Some(swift_code.into());
277 }
278
279 pub fn set_currency<T: Into<String>>(&mut self, currency: T) {
280 self.currency = Some(currency.into());
281 }
282
283 pub fn set_identity_number<T: Into<String>>(&mut self, identity_number: T) {
284 self.identity_number = Some(identity_number.into());
285 }
286
287 pub fn set_tax_number<T: Into<String>>(&mut self, tax_number: T) {
288 self.tax_number = Some(tax_number.into());
289 }
290
291 pub fn set_sub_merchant_key<T: Into<String>>(&mut self, sub_merchant_key: T) {
292 self.sub_merchant_key = Some(sub_merchant_key.into());
293 }
294
295 pub fn name(&self) -> Option<&String> {
296 self.name.as_ref()
297 }
298 pub fn email(&self) -> Option<&String> {
299 self.email.as_ref()
300 }
301 pub fn gsm_number(&self) -> Option<&String> {
302 self.gsm_number.as_ref()
303 }
304 pub fn address(&self) -> Option<&String> {
305 self.address.as_ref()
306 }
307 pub fn iban(&self) -> Option<&String> {
308 self.iban.as_ref()
309 }
310 pub fn tax_office(&self) -> Option<&String> {
311 self.tax_office.as_ref()
312 }
313 pub fn contact_name(&self) -> Option<&String> {
314 self.contact_name.as_ref()
315 }
316 pub fn contact_surname(&self) -> Option<&String> {
317 self.contact_surname.as_ref()
318 }
319 pub fn legal_company_title(&self) -> Option<&String> {
320 self.legal_company_title.as_ref()
321 }
322 pub fn swift_code(&self) -> Option<&String> {
323 self.swift_code.as_ref()
324 }
325 pub fn currency(&self) -> Option<&String> {
326 self.currency.as_ref()
327 }
328 pub fn identity_number(&self) -> Option<&String> {
329 self.identity_number.as_ref()
330 }
331 pub fn tax_number(&self) -> Option<&String> {
332 self.tax_number.as_ref()
333 }
334 pub fn sub_merchant_key(&self) -> Option<&String> {
335 self.sub_merchant_key.as_ref()
336 }
337}
338
339impl PKISerialize for UpdateSubMerchantRequest {
340 fn serialize(&self) -> Option<String> {
341 let mut ser = RequestStringBuilder::new();
342 ser.append_option_val(self.request.serialize());
343 ser.append_option("name", self.name.as_ref());
344 ser.append_option("email", self.email.as_ref());
345 ser.append_option("gsmNumber", self.gsm_number.as_ref());
346 ser.append_option("address", self.address.as_ref());
347 ser.append_option("iban", self.iban.as_ref());
348 ser.append_option("taxOffice", self.tax_office.as_ref());
349 ser.append_option("contactName", self.contact_name.as_ref());
350 ser.append_option("contactSurname", self.contact_surname.as_ref());
351 ser.append_option("legalCompanyTitle", self.legal_company_title.as_ref());
352 ser.append_option("swiftCode", self.swift_code.as_ref());
353 ser.append_option("currency", self.currency.as_ref());
354 ser.append_option("subMerchantKey", self.sub_merchant_key.as_ref());
355 ser.append_option("identityNumber", self.identity_number.as_ref());
356 ser.append_option("taxNumber", self.tax_number.as_ref());
357 Option::from(ser.build(true))
358 }
359}
360
361impl std::ops::Deref for UpdateSubMerchantRequest {
362 type Target = Request;
363 fn deref(&self) -> &Self::Target {
364 &self.request
365 }
366}
367
368impl std::ops::DerefMut for UpdateSubMerchantRequest {
369 fn deref_mut(&mut self) -> &mut Self::Target {
370 &mut self.request
371 }
372}
373
374#[derive(Debug, Default, Serialize, Deserialize)]
375#[serde(rename_all = "camelCase")]
376pub struct RetrieveSubMerchantRequest {
377 #[serde(flatten)]
378 request: Request,
379
380 sub_merchant_external_id: Option<String>,
381}
382
383impl RetrieveSubMerchantRequest {
384 pub fn new() -> Self {
385 RetrieveSubMerchantRequest::default()
386 }
387
388 pub fn set_sub_merchant_external_id<T: Into<String>>(&mut self, sub_merchant_external_id: T) {
389 self.sub_merchant_external_id = Some(sub_merchant_external_id.into());
390 }
391
392 pub fn sub_merchant_external_id(&self) -> Option<&String> {
393 self.sub_merchant_external_id.as_ref()
394 }
395}
396
397impl PKISerialize for RetrieveSubMerchantRequest {
398 fn serialize(&self) -> Option<String> {
399 let mut ser = RequestStringBuilder::new();
400 ser.append_option_val(self.request.serialize());
401 ser.append_option(
402 "subMerchantExternalId",
403 self.sub_merchant_external_id.as_ref(),
404 );
405 Option::from(ser.build(true))
406 }
407}
408
409impl std::ops::Deref for RetrieveSubMerchantRequest {
410 type Target = Request;
411 fn deref(&self) -> &Self::Target {
412 &self.request
413 }
414}
415
416impl std::ops::DerefMut for RetrieveSubMerchantRequest {
417 fn deref_mut(&mut self) -> &mut Self::Target {
418 &mut self.request
419 }
420}
421
422#[derive(Debug, Default, Serialize, Deserialize)]
423#[serde(rename_all = "camelCase")]
424pub struct CreateApprovalRequest {
425 #[serde(flatten)]
426 request: Request,
427
428 payment_transaction_id: Option<String>,
429}
430
431impl CreateApprovalRequest {
432 pub fn new() -> Self {
433 CreateApprovalRequest::default()
434 }
435
436 pub fn set_payment_transaction_id<T: Into<String>>(&mut self, payment_transaction_id: T) {
437 self.payment_transaction_id = Some(payment_transaction_id.into());
438 }
439
440 pub fn payment_transaction_id(&self) -> Option<&String> {
441 self.payment_transaction_id.as_ref()
442 }
443}
444
445impl PKISerialize for CreateApprovalRequest {
446 fn serialize(&self) -> Option<String> {
447 let mut ser = RequestStringBuilder::new();
448 ser.append_option_val(self.request.serialize());
449 ser.append_option("paymentTransactionId", self.payment_transaction_id.as_ref());
450 Option::from(ser.build(true))
451 }
452}
453
454impl std::ops::Deref for CreateApprovalRequest {
455 type Target = Request;
456 fn deref(&self) -> &Self::Target {
457 &self.request
458 }
459}
460
461impl std::ops::DerefMut for CreateApprovalRequest {
462 fn deref_mut(&mut self) -> &mut Self::Target {
463 &mut self.request
464 }
465}
466
467#[derive(Debug, Default, Serialize, Deserialize)]
468#[serde(rename_all = "camelCase")]
469pub struct CreateApmInitializeRequest {
470 #[serde(flatten)]
471 request: Request,
472
473 price: Option<BigDecimal>,
474
475 paid_price: Option<BigDecimal>,
476
477 payment_channel: Option<String>,
478
479 payment_group: Option<String>,
480
481 payment_source: Option<String>,
482
483 currency: Option<String>,
484
485 merchant_order_id: Option<String>,
486
487 country_code: Option<String>,
488
489 account_holder_name: Option<String>,
490
491 merchant_callback_url: Option<String>,
492
493 merchant_error_url: Option<String>,
494
495 merchant_notification_url: Option<String>,
496
497 apm_type: Option<String>,
498
499 basket_id: Option<String>,
500
501 buyer: Option<Buyer>,
502
503 shipping_address: Option<Address>,
504
505 billing_address: Option<Address>,
506
507 basket_items: Option<Vec<BasketItem>>,
508}
509
510impl CreateApmInitializeRequest {
511 pub fn new() -> Self {
512 CreateApmInitializeRequest::default()
513 }
514
515 pub fn set_price<T: Into<BigDecimal>>(&mut self, price: T) {
516 self.price = Some(price.into());
517 }
518
519 pub fn set_paid_price<T: Into<BigDecimal>>(&mut self, paid_price: T) {
520 self.paid_price = Some(paid_price.into());
521 }
522
523 pub fn set_payment_channel<T: Into<String>>(&mut self, payment_channel: T) {
524 self.payment_channel = Some(payment_channel.into());
525 }
526
527 pub fn set_payment_group<T: Into<String>>(&mut self, payment_group: T) {
528 self.payment_group = Some(payment_group.into());
529 }
530
531 pub fn set_payment_source<T: Into<String>>(&mut self, payment_source: T) {
532 self.payment_source = Some(payment_source.into());
533 }
534
535 pub fn set_currency<T: Into<String>>(&mut self, currency: T) {
536 self.currency = Some(currency.into());
537 }
538
539 pub fn set_merchant_order_id<T: Into<String>>(&mut self, merchant_order_id: T) {
540 self.merchant_order_id = Some(merchant_order_id.into());
541 }
542
543 pub fn set_country_code<T: Into<String>>(&mut self, country_code: T) {
544 self.country_code = Some(country_code.into());
545 }
546
547 pub fn set_account_holder_name<T: Into<String>>(&mut self, account_holder_name: T) {
548 self.account_holder_name = Some(account_holder_name.into());
549 }
550
551 pub fn set_merchant_callback_url<T: Into<String>>(&mut self, merchant_callback_url: T) {
552 self.merchant_callback_url = Some(merchant_callback_url.into());
553 }
554
555 pub fn set_merchant_error_url<T: Into<String>>(&mut self, merchant_error_url: T) {
556 self.merchant_error_url = Some(merchant_error_url.into());
557 }
558
559 pub fn set_merchant_notification_url<T: Into<String>>(&mut self, merchant_notification_url: T) {
560 self.merchant_notification_url = Some(merchant_notification_url.into());
561 }
562
563 pub fn set_apm_type<T: Into<String>>(&mut self, apm_type: T) {
564 self.apm_type = Some(apm_type.into());
565 }
566
567 pub fn set_basket_id<T: Into<String>>(&mut self, basket_id: T) {
568 self.basket_id = Some(basket_id.into());
569 }
570
571 pub fn set_buyer<T: Into<Buyer>>(&mut self, buyer: T) {
572 self.buyer = Some(buyer.into());
573 }
574
575 pub fn set_shipping_address<T: Into<Address>>(&mut self, shipping_address: T) {
576 self.shipping_address = Some(shipping_address.into());
577 }
578
579 pub fn set_billing_address<T: Into<Address>>(&mut self, billing_address: T) {
580 self.billing_address = Some(billing_address.into());
581 }
582
583 pub fn set_basket_items<T: Into<Vec<BasketItem>>>(&mut self, basket_items: T) {
584 self.basket_items = Some(basket_items.into());
585 }
586
587 pub fn price(&self) -> Option<&BigDecimal> {
588 self.price.as_ref()
589 }
590 pub fn paid_price(&self) -> Option<&BigDecimal> {
591 self.paid_price.as_ref()
592 }
593 pub fn payment_channel(&self) -> Option<&String> {
594 self.payment_channel.as_ref()
595 }
596 pub fn payment_group(&self) -> Option<&String> {
597 self.payment_group.as_ref()
598 }
599 pub fn payment_source(&self) -> Option<&String> {
600 self.payment_source.as_ref()
601 }
602 pub fn currency(&self) -> Option<&String> {
603 self.currency.as_ref()
604 }
605 pub fn merchant_order_id(&self) -> Option<&String> {
606 self.merchant_order_id.as_ref()
607 }
608 pub fn country_code(&self) -> Option<&String> {
609 self.country_code.as_ref()
610 }
611 pub fn account_holder_name(&self) -> Option<&String> {
612 self.account_holder_name.as_ref()
613 }
614 pub fn merchant_callback_url(&self) -> Option<&String> {
615 self.merchant_callback_url.as_ref()
616 }
617 pub fn merchant_error_url(&self) -> Option<&String> {
618 self.merchant_error_url.as_ref()
619 }
620 pub fn merchant_notification_url(&self) -> Option<&String> {
621 self.merchant_notification_url.as_ref()
622 }
623 pub fn apm_type(&self) -> Option<&String> {
624 self.apm_type.as_ref()
625 }
626 pub fn basket_id(&self) -> Option<&String> {
627 self.basket_id.as_ref()
628 }
629 pub fn buyer(&self) -> Option<&Buyer> {
630 self.buyer.as_ref()
631 }
632 pub fn shipping_address(&self) -> Option<&Address> {
633 self.shipping_address.as_ref()
634 }
635 pub fn billing_address(&self) -> Option<&Address> {
636 self.billing_address.as_ref()
637 }
638 pub fn basket_items(&self) -> Option<&Vec<BasketItem>> {
639 self.basket_items.as_ref()
640 }
641}
642
643impl PKISerialize for CreateApmInitializeRequest {
644 fn serialize(&self) -> Option<String> {
645 let mut ser = RequestStringBuilder::new();
646 ser.append_option_val(self.request.serialize());
647 ser.append_price_option("price", self.price.as_ref());
648 ser.append_price_option("paidPrice", self.paid_price.as_ref());
649 ser.append_option("paymentChannel", self.payment_channel.as_ref());
650 ser.append_option("paymentGroup", self.payment_group.as_ref());
651 ser.append_option("paymentSource", self.payment_source.as_ref());
652 ser.append_option("currency", self.currency.as_ref());
653 ser.append_option("merchantOrderId", self.merchant_order_id.as_ref());
654 ser.append_option("countryCode", self.country_code.as_ref());
655 ser.append_option("accountHolderName", self.account_holder_name.as_ref());
656 ser.append_option("merchantCallbackUrl", self.merchant_callback_url.as_ref());
657 ser.append_option("merchantErrorUrl", self.merchant_error_url.as_ref());
658 ser.append_option(
659 "merchantNotificationUrl",
660 self.merchant_notification_url.as_ref(),
661 );
662 ser.append_option("apmType", self.apm_type.as_ref());
663 ser.append_option("basketId", self.basket_id.as_ref());
664 ser.append_option("buyer", self.buyer.serialize());
665 ser.append_option("shippingAddress", self.shipping_address.serialize());
666 ser.append_option("billingAddress", self.billing_address.serialize());
667 ser.append_option("basketItems", self.basket_items.serialize());
668 Option::from(ser.build(true))
669 }
670}
671
672impl std::ops::Deref for CreateApmInitializeRequest {
673 type Target = Request;
674 fn deref(&self) -> &Self::Target {
675 &self.request
676 }
677}
678
679impl std::ops::DerefMut for CreateApmInitializeRequest {
680 fn deref_mut(&mut self) -> &mut Self::Target {
681 &mut self.request
682 }
683}
684
685#[derive(Debug, Default, Serialize, Deserialize)]
686#[serde(rename_all = "camelCase")]
687pub struct RetrieveApmRequest {
688 #[serde(flatten)]
689 request: Request,
690
691 payment_id: Option<String>,
692}
693
694impl RetrieveApmRequest {
695 pub fn new() -> Self {
696 RetrieveApmRequest::default()
697 }
698
699 pub fn set_payment_id<T: Into<String>>(&mut self, payment_id: T) {
700 self.payment_id = Some(payment_id.into());
701 }
702
703 pub fn payment_id(&self) -> Option<&String> {
704 self.payment_id.as_ref()
705 }
706}
707
708impl PKISerialize for RetrieveApmRequest {
709 fn serialize(&self) -> Option<String> {
710 let mut ser = RequestStringBuilder::new();
711 ser.append_option_val(self.request.serialize());
712 ser.append_option("paymentId", self.payment_id.to_owned());
713 Some(ser.build(true))
714 }
715}
716
717impl std::ops::Deref for RetrieveApmRequest {
718 type Target = Request;
719 fn deref(&self) -> &Self::Target {
720 &self.request
721 }
722}
723
724impl std::ops::DerefMut for RetrieveApmRequest {
725 fn deref_mut(&mut self) -> &mut Self::Target {
726 &mut self.request
727 }
728}