iyzipay_rust/requests/
sub_merchant.rs

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}