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