stripe_shared/
refund_destination_details.rs

1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct RefundDestinationDetails {
5    pub affirm: Option<stripe_shared::DestinationDetailsUnimplemented>,
6    pub afterpay_clearpay: Option<stripe_shared::DestinationDetailsUnimplemented>,
7    pub alipay: Option<stripe_shared::DestinationDetailsUnimplemented>,
8    pub alma: Option<stripe_shared::DestinationDetailsUnimplemented>,
9    pub amazon_pay: Option<stripe_shared::DestinationDetailsUnimplemented>,
10    pub au_bank_transfer: Option<stripe_shared::DestinationDetailsUnimplemented>,
11    pub blik: Option<stripe_shared::RefundDestinationDetailsBlik>,
12    pub br_bank_transfer: Option<stripe_shared::RefundDestinationDetailsBrBankTransfer>,
13    pub card: Option<stripe_shared::RefundDestinationDetailsCard>,
14    pub cashapp: Option<stripe_shared::DestinationDetailsUnimplemented>,
15    pub crypto: Option<stripe_shared::RefundDestinationDetailsCrypto>,
16    pub customer_cash_balance: Option<stripe_shared::DestinationDetailsUnimplemented>,
17    pub eps: Option<stripe_shared::DestinationDetailsUnimplemented>,
18    pub eu_bank_transfer: Option<stripe_shared::RefundDestinationDetailsEuBankTransfer>,
19    pub gb_bank_transfer: Option<stripe_shared::RefundDestinationDetailsGbBankTransfer>,
20    pub giropay: Option<stripe_shared::DestinationDetailsUnimplemented>,
21    pub grabpay: Option<stripe_shared::DestinationDetailsUnimplemented>,
22    pub jp_bank_transfer: Option<stripe_shared::RefundDestinationDetailsJpBankTransfer>,
23    pub klarna: Option<stripe_shared::DestinationDetailsUnimplemented>,
24    pub multibanco: Option<stripe_shared::RefundDestinationDetailsMultibanco>,
25    pub mx_bank_transfer: Option<stripe_shared::RefundDestinationDetailsMxBankTransfer>,
26    pub nz_bank_transfer: Option<stripe_shared::DestinationDetailsUnimplemented>,
27    pub p24: Option<stripe_shared::RefundDestinationDetailsP24>,
28    pub paynow: Option<stripe_shared::DestinationDetailsUnimplemented>,
29    pub paypal: Option<stripe_shared::RefundDestinationDetailsPaypal>,
30    pub pix: Option<stripe_shared::DestinationDetailsUnimplemented>,
31    pub revolut: Option<stripe_shared::DestinationDetailsUnimplemented>,
32    pub sofort: Option<stripe_shared::DestinationDetailsUnimplemented>,
33    pub swish: Option<stripe_shared::RefundDestinationDetailsSwish>,
34    pub th_bank_transfer: Option<stripe_shared::RefundDestinationDetailsThBankTransfer>,
35    /// The type of transaction-specific details of the payment method used in the refund (e.g., `card`).
36    /// An additional hash is included on `destination_details` with a name matching this value.
37    /// It contains information specific to the refund transaction.
38    #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "type"))]
39    pub type_: String,
40    pub us_bank_transfer: Option<stripe_shared::RefundDestinationDetailsUsBankTransfer>,
41    pub wechat_pay: Option<stripe_shared::DestinationDetailsUnimplemented>,
42    pub zip: Option<stripe_shared::DestinationDetailsUnimplemented>,
43}
44#[doc(hidden)]
45pub struct RefundDestinationDetailsBuilder {
46    affirm: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
47    afterpay_clearpay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
48    alipay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
49    alma: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
50    amazon_pay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
51    au_bank_transfer: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
52    blik: Option<Option<stripe_shared::RefundDestinationDetailsBlik>>,
53    br_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsBrBankTransfer>>,
54    card: Option<Option<stripe_shared::RefundDestinationDetailsCard>>,
55    cashapp: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
56    crypto: Option<Option<stripe_shared::RefundDestinationDetailsCrypto>>,
57    customer_cash_balance: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
58    eps: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
59    eu_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsEuBankTransfer>>,
60    gb_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsGbBankTransfer>>,
61    giropay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
62    grabpay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
63    jp_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsJpBankTransfer>>,
64    klarna: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
65    multibanco: Option<Option<stripe_shared::RefundDestinationDetailsMultibanco>>,
66    mx_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsMxBankTransfer>>,
67    nz_bank_transfer: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
68    p24: Option<Option<stripe_shared::RefundDestinationDetailsP24>>,
69    paynow: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
70    paypal: Option<Option<stripe_shared::RefundDestinationDetailsPaypal>>,
71    pix: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
72    revolut: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
73    sofort: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
74    swish: Option<Option<stripe_shared::RefundDestinationDetailsSwish>>,
75    th_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsThBankTransfer>>,
76    type_: Option<String>,
77    us_bank_transfer: Option<Option<stripe_shared::RefundDestinationDetailsUsBankTransfer>>,
78    wechat_pay: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
79    zip: Option<Option<stripe_shared::DestinationDetailsUnimplemented>>,
80}
81
82#[allow(
83    unused_variables,
84    irrefutable_let_patterns,
85    clippy::let_unit_value,
86    clippy::match_single_binding,
87    clippy::single_match
88)]
89const _: () = {
90    use miniserde::de::{Map, Visitor};
91    use miniserde::json::Value;
92    use miniserde::{Deserialize, Result, make_place};
93    use stripe_types::miniserde_helpers::FromValueOpt;
94    use stripe_types::{MapBuilder, ObjectDeser};
95
96    make_place!(Place);
97
98    impl Deserialize for RefundDestinationDetails {
99        fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
100            Place::new(out)
101        }
102    }
103
104    struct Builder<'a> {
105        out: &'a mut Option<RefundDestinationDetails>,
106        builder: RefundDestinationDetailsBuilder,
107    }
108
109    impl Visitor for Place<RefundDestinationDetails> {
110        fn map(&mut self) -> Result<Box<dyn Map + '_>> {
111            Ok(Box::new(Builder {
112                out: &mut self.out,
113                builder: RefundDestinationDetailsBuilder::deser_default(),
114            }))
115        }
116    }
117
118    impl MapBuilder for RefundDestinationDetailsBuilder {
119        type Out = RefundDestinationDetails;
120        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
121            Ok(match k {
122                "affirm" => Deserialize::begin(&mut self.affirm),
123                "afterpay_clearpay" => Deserialize::begin(&mut self.afterpay_clearpay),
124                "alipay" => Deserialize::begin(&mut self.alipay),
125                "alma" => Deserialize::begin(&mut self.alma),
126                "amazon_pay" => Deserialize::begin(&mut self.amazon_pay),
127                "au_bank_transfer" => Deserialize::begin(&mut self.au_bank_transfer),
128                "blik" => Deserialize::begin(&mut self.blik),
129                "br_bank_transfer" => Deserialize::begin(&mut self.br_bank_transfer),
130                "card" => Deserialize::begin(&mut self.card),
131                "cashapp" => Deserialize::begin(&mut self.cashapp),
132                "crypto" => Deserialize::begin(&mut self.crypto),
133                "customer_cash_balance" => Deserialize::begin(&mut self.customer_cash_balance),
134                "eps" => Deserialize::begin(&mut self.eps),
135                "eu_bank_transfer" => Deserialize::begin(&mut self.eu_bank_transfer),
136                "gb_bank_transfer" => Deserialize::begin(&mut self.gb_bank_transfer),
137                "giropay" => Deserialize::begin(&mut self.giropay),
138                "grabpay" => Deserialize::begin(&mut self.grabpay),
139                "jp_bank_transfer" => Deserialize::begin(&mut self.jp_bank_transfer),
140                "klarna" => Deserialize::begin(&mut self.klarna),
141                "multibanco" => Deserialize::begin(&mut self.multibanco),
142                "mx_bank_transfer" => Deserialize::begin(&mut self.mx_bank_transfer),
143                "nz_bank_transfer" => Deserialize::begin(&mut self.nz_bank_transfer),
144                "p24" => Deserialize::begin(&mut self.p24),
145                "paynow" => Deserialize::begin(&mut self.paynow),
146                "paypal" => Deserialize::begin(&mut self.paypal),
147                "pix" => Deserialize::begin(&mut self.pix),
148                "revolut" => Deserialize::begin(&mut self.revolut),
149                "sofort" => Deserialize::begin(&mut self.sofort),
150                "swish" => Deserialize::begin(&mut self.swish),
151                "th_bank_transfer" => Deserialize::begin(&mut self.th_bank_transfer),
152                "type" => Deserialize::begin(&mut self.type_),
153                "us_bank_transfer" => Deserialize::begin(&mut self.us_bank_transfer),
154                "wechat_pay" => Deserialize::begin(&mut self.wechat_pay),
155                "zip" => Deserialize::begin(&mut self.zip),
156                _ => <dyn Visitor>::ignore(),
157            })
158        }
159
160        fn deser_default() -> Self {
161            Self {
162                affirm: Deserialize::default(),
163                afterpay_clearpay: Deserialize::default(),
164                alipay: Deserialize::default(),
165                alma: Deserialize::default(),
166                amazon_pay: Deserialize::default(),
167                au_bank_transfer: Deserialize::default(),
168                blik: Deserialize::default(),
169                br_bank_transfer: Deserialize::default(),
170                card: Deserialize::default(),
171                cashapp: Deserialize::default(),
172                crypto: Deserialize::default(),
173                customer_cash_balance: Deserialize::default(),
174                eps: Deserialize::default(),
175                eu_bank_transfer: Deserialize::default(),
176                gb_bank_transfer: Deserialize::default(),
177                giropay: Deserialize::default(),
178                grabpay: Deserialize::default(),
179                jp_bank_transfer: Deserialize::default(),
180                klarna: Deserialize::default(),
181                multibanco: Deserialize::default(),
182                mx_bank_transfer: Deserialize::default(),
183                nz_bank_transfer: Deserialize::default(),
184                p24: Deserialize::default(),
185                paynow: Deserialize::default(),
186                paypal: Deserialize::default(),
187                pix: Deserialize::default(),
188                revolut: Deserialize::default(),
189                sofort: Deserialize::default(),
190                swish: Deserialize::default(),
191                th_bank_transfer: Deserialize::default(),
192                type_: Deserialize::default(),
193                us_bank_transfer: Deserialize::default(),
194                wechat_pay: Deserialize::default(),
195                zip: Deserialize::default(),
196            }
197        }
198
199        fn take_out(&mut self) -> Option<Self::Out> {
200            let (
201                Some(affirm),
202                Some(afterpay_clearpay),
203                Some(alipay),
204                Some(alma),
205                Some(amazon_pay),
206                Some(au_bank_transfer),
207                Some(blik),
208                Some(br_bank_transfer),
209                Some(card),
210                Some(cashapp),
211                Some(crypto),
212                Some(customer_cash_balance),
213                Some(eps),
214                Some(eu_bank_transfer),
215                Some(gb_bank_transfer),
216                Some(giropay),
217                Some(grabpay),
218                Some(jp_bank_transfer),
219                Some(klarna),
220                Some(multibanco),
221                Some(mx_bank_transfer),
222                Some(nz_bank_transfer),
223                Some(p24),
224                Some(paynow),
225                Some(paypal),
226                Some(pix),
227                Some(revolut),
228                Some(sofort),
229                Some(swish),
230                Some(th_bank_transfer),
231                Some(type_),
232                Some(us_bank_transfer),
233                Some(wechat_pay),
234                Some(zip),
235            ) = (
236                self.affirm,
237                self.afterpay_clearpay,
238                self.alipay,
239                self.alma,
240                self.amazon_pay,
241                self.au_bank_transfer,
242                self.blik.take(),
243                self.br_bank_transfer.take(),
244                self.card.take(),
245                self.cashapp,
246                self.crypto.take(),
247                self.customer_cash_balance,
248                self.eps,
249                self.eu_bank_transfer.take(),
250                self.gb_bank_transfer.take(),
251                self.giropay,
252                self.grabpay,
253                self.jp_bank_transfer.take(),
254                self.klarna,
255                self.multibanco.take(),
256                self.mx_bank_transfer.take(),
257                self.nz_bank_transfer,
258                self.p24.take(),
259                self.paynow,
260                self.paypal.take(),
261                self.pix,
262                self.revolut,
263                self.sofort,
264                self.swish.take(),
265                self.th_bank_transfer.take(),
266                self.type_.take(),
267                self.us_bank_transfer.take(),
268                self.wechat_pay,
269                self.zip,
270            )
271            else {
272                return None;
273            };
274            Some(Self::Out {
275                affirm,
276                afterpay_clearpay,
277                alipay,
278                alma,
279                amazon_pay,
280                au_bank_transfer,
281                blik,
282                br_bank_transfer,
283                card,
284                cashapp,
285                crypto,
286                customer_cash_balance,
287                eps,
288                eu_bank_transfer,
289                gb_bank_transfer,
290                giropay,
291                grabpay,
292                jp_bank_transfer,
293                klarna,
294                multibanco,
295                mx_bank_transfer,
296                nz_bank_transfer,
297                p24,
298                paynow,
299                paypal,
300                pix,
301                revolut,
302                sofort,
303                swish,
304                th_bank_transfer,
305                type_,
306                us_bank_transfer,
307                wechat_pay,
308                zip,
309            })
310        }
311    }
312
313    impl Map for Builder<'_> {
314        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
315            self.builder.key(k)
316        }
317
318        fn finish(&mut self) -> Result<()> {
319            *self.out = self.builder.take_out();
320            Ok(())
321        }
322    }
323
324    impl ObjectDeser for RefundDestinationDetails {
325        type Builder = RefundDestinationDetailsBuilder;
326    }
327
328    impl FromValueOpt for RefundDestinationDetails {
329        fn from_value(v: Value) -> Option<Self> {
330            let Value::Object(obj) = v else {
331                return None;
332            };
333            let mut b = RefundDestinationDetailsBuilder::deser_default();
334            for (k, v) in obj {
335                match k.as_str() {
336                    "affirm" => b.affirm = FromValueOpt::from_value(v),
337                    "afterpay_clearpay" => b.afterpay_clearpay = FromValueOpt::from_value(v),
338                    "alipay" => b.alipay = FromValueOpt::from_value(v),
339                    "alma" => b.alma = FromValueOpt::from_value(v),
340                    "amazon_pay" => b.amazon_pay = FromValueOpt::from_value(v),
341                    "au_bank_transfer" => b.au_bank_transfer = FromValueOpt::from_value(v),
342                    "blik" => b.blik = FromValueOpt::from_value(v),
343                    "br_bank_transfer" => b.br_bank_transfer = FromValueOpt::from_value(v),
344                    "card" => b.card = FromValueOpt::from_value(v),
345                    "cashapp" => b.cashapp = FromValueOpt::from_value(v),
346                    "crypto" => b.crypto = FromValueOpt::from_value(v),
347                    "customer_cash_balance" => {
348                        b.customer_cash_balance = FromValueOpt::from_value(v)
349                    }
350                    "eps" => b.eps = FromValueOpt::from_value(v),
351                    "eu_bank_transfer" => b.eu_bank_transfer = FromValueOpt::from_value(v),
352                    "gb_bank_transfer" => b.gb_bank_transfer = FromValueOpt::from_value(v),
353                    "giropay" => b.giropay = FromValueOpt::from_value(v),
354                    "grabpay" => b.grabpay = FromValueOpt::from_value(v),
355                    "jp_bank_transfer" => b.jp_bank_transfer = FromValueOpt::from_value(v),
356                    "klarna" => b.klarna = FromValueOpt::from_value(v),
357                    "multibanco" => b.multibanco = FromValueOpt::from_value(v),
358                    "mx_bank_transfer" => b.mx_bank_transfer = FromValueOpt::from_value(v),
359                    "nz_bank_transfer" => b.nz_bank_transfer = FromValueOpt::from_value(v),
360                    "p24" => b.p24 = FromValueOpt::from_value(v),
361                    "paynow" => b.paynow = FromValueOpt::from_value(v),
362                    "paypal" => b.paypal = FromValueOpt::from_value(v),
363                    "pix" => b.pix = FromValueOpt::from_value(v),
364                    "revolut" => b.revolut = FromValueOpt::from_value(v),
365                    "sofort" => b.sofort = FromValueOpt::from_value(v),
366                    "swish" => b.swish = FromValueOpt::from_value(v),
367                    "th_bank_transfer" => b.th_bank_transfer = FromValueOpt::from_value(v),
368                    "type" => b.type_ = FromValueOpt::from_value(v),
369                    "us_bank_transfer" => b.us_bank_transfer = FromValueOpt::from_value(v),
370                    "wechat_pay" => b.wechat_pay = FromValueOpt::from_value(v),
371                    "zip" => b.zip = FromValueOpt::from_value(v),
372                    _ => {}
373                }
374            }
375            b.take_out()
376        }
377    }
378};