1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct SetupAttemptPaymentMethodDetails {
5 pub acss_debit: Option<stripe_shared::SetupAttemptPaymentMethodDetailsAcssDebit>,
6 pub amazon_pay: Option<stripe_shared::SetupAttemptPaymentMethodDetailsAmazonPay>,
7 pub au_becs_debit: Option<stripe_shared::SetupAttemptPaymentMethodDetailsAuBecsDebit>,
8 pub bacs_debit: Option<stripe_shared::SetupAttemptPaymentMethodDetailsBacsDebit>,
9 pub bancontact: Option<stripe_shared::SetupAttemptPaymentMethodDetailsBancontact>,
10 pub boleto: Option<stripe_shared::SetupAttemptPaymentMethodDetailsBoleto>,
11 pub card: Option<stripe_shared::SetupAttemptPaymentMethodDetailsCard>,
12 pub card_present: Option<stripe_shared::SetupAttemptPaymentMethodDetailsCardPresent>,
13 pub cashapp: Option<stripe_shared::SetupAttemptPaymentMethodDetailsCashapp>,
14 pub ideal: Option<stripe_shared::SetupAttemptPaymentMethodDetailsIdeal>,
15 pub kakao_pay: Option<stripe_shared::SetupAttemptPaymentMethodDetailsKakaoPay>,
16 pub klarna: Option<stripe_shared::SetupAttemptPaymentMethodDetailsKlarna>,
17 pub kr_card: Option<stripe_shared::SetupAttemptPaymentMethodDetailsKrCard>,
18 pub link: Option<stripe_shared::SetupAttemptPaymentMethodDetailsLink>,
19 pub naver_pay: Option<stripe_shared::SetupAttemptPaymentMethodDetailsNaverPay>,
20 pub nz_bank_account: Option<stripe_shared::SetupAttemptPaymentMethodDetailsNzBankAccount>,
21 pub paypal: Option<stripe_shared::SetupAttemptPaymentMethodDetailsPaypal>,
22 pub payto: Option<stripe_shared::SetupAttemptPaymentMethodDetailsPayto>,
23 pub revolut_pay: Option<stripe_shared::SetupAttemptPaymentMethodDetailsRevolutPay>,
24 pub sepa_debit: Option<stripe_shared::SetupAttemptPaymentMethodDetailsSepaDebit>,
25 pub sofort: Option<stripe_shared::SetupAttemptPaymentMethodDetailsSofort>,
26 #[cfg_attr(any(feature = "deserialize", feature = "serialize"), serde(rename = "type"))]
30 pub type_: String,
31 pub us_bank_account: Option<stripe_shared::SetupAttemptPaymentMethodDetailsUsBankAccount>,
32}
33#[doc(hidden)]
34pub struct SetupAttemptPaymentMethodDetailsBuilder {
35 acss_debit: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsAcssDebit>>,
36 amazon_pay: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsAmazonPay>>,
37 au_becs_debit: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsAuBecsDebit>>,
38 bacs_debit: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsBacsDebit>>,
39 bancontact: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsBancontact>>,
40 boleto: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsBoleto>>,
41 card: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsCard>>,
42 card_present: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsCardPresent>>,
43 cashapp: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsCashapp>>,
44 ideal: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsIdeal>>,
45 kakao_pay: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsKakaoPay>>,
46 klarna: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsKlarna>>,
47 kr_card: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsKrCard>>,
48 link: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsLink>>,
49 naver_pay: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsNaverPay>>,
50 nz_bank_account: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsNzBankAccount>>,
51 paypal: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsPaypal>>,
52 payto: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsPayto>>,
53 revolut_pay: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsRevolutPay>>,
54 sepa_debit: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsSepaDebit>>,
55 sofort: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsSofort>>,
56 type_: Option<String>,
57 us_bank_account: Option<Option<stripe_shared::SetupAttemptPaymentMethodDetailsUsBankAccount>>,
58}
59
60#[allow(
61 unused_variables,
62 irrefutable_let_patterns,
63 clippy::let_unit_value,
64 clippy::match_single_binding,
65 clippy::single_match
66)]
67const _: () = {
68 use miniserde::de::{Map, Visitor};
69 use miniserde::json::Value;
70 use miniserde::{Deserialize, Result, make_place};
71 use stripe_types::miniserde_helpers::FromValueOpt;
72 use stripe_types::{MapBuilder, ObjectDeser};
73
74 make_place!(Place);
75
76 impl Deserialize for SetupAttemptPaymentMethodDetails {
77 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
78 Place::new(out)
79 }
80 }
81
82 struct Builder<'a> {
83 out: &'a mut Option<SetupAttemptPaymentMethodDetails>,
84 builder: SetupAttemptPaymentMethodDetailsBuilder,
85 }
86
87 impl Visitor for Place<SetupAttemptPaymentMethodDetails> {
88 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
89 Ok(Box::new(Builder {
90 out: &mut self.out,
91 builder: SetupAttemptPaymentMethodDetailsBuilder::deser_default(),
92 }))
93 }
94 }
95
96 impl MapBuilder for SetupAttemptPaymentMethodDetailsBuilder {
97 type Out = SetupAttemptPaymentMethodDetails;
98 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
99 Ok(match k {
100 "acss_debit" => Deserialize::begin(&mut self.acss_debit),
101 "amazon_pay" => Deserialize::begin(&mut self.amazon_pay),
102 "au_becs_debit" => Deserialize::begin(&mut self.au_becs_debit),
103 "bacs_debit" => Deserialize::begin(&mut self.bacs_debit),
104 "bancontact" => Deserialize::begin(&mut self.bancontact),
105 "boleto" => Deserialize::begin(&mut self.boleto),
106 "card" => Deserialize::begin(&mut self.card),
107 "card_present" => Deserialize::begin(&mut self.card_present),
108 "cashapp" => Deserialize::begin(&mut self.cashapp),
109 "ideal" => Deserialize::begin(&mut self.ideal),
110 "kakao_pay" => Deserialize::begin(&mut self.kakao_pay),
111 "klarna" => Deserialize::begin(&mut self.klarna),
112 "kr_card" => Deserialize::begin(&mut self.kr_card),
113 "link" => Deserialize::begin(&mut self.link),
114 "naver_pay" => Deserialize::begin(&mut self.naver_pay),
115 "nz_bank_account" => Deserialize::begin(&mut self.nz_bank_account),
116 "paypal" => Deserialize::begin(&mut self.paypal),
117 "payto" => Deserialize::begin(&mut self.payto),
118 "revolut_pay" => Deserialize::begin(&mut self.revolut_pay),
119 "sepa_debit" => Deserialize::begin(&mut self.sepa_debit),
120 "sofort" => Deserialize::begin(&mut self.sofort),
121 "type" => Deserialize::begin(&mut self.type_),
122 "us_bank_account" => Deserialize::begin(&mut self.us_bank_account),
123 _ => <dyn Visitor>::ignore(),
124 })
125 }
126
127 fn deser_default() -> Self {
128 Self {
129 acss_debit: Deserialize::default(),
130 amazon_pay: Deserialize::default(),
131 au_becs_debit: Deserialize::default(),
132 bacs_debit: Deserialize::default(),
133 bancontact: Deserialize::default(),
134 boleto: Deserialize::default(),
135 card: Deserialize::default(),
136 card_present: Deserialize::default(),
137 cashapp: Deserialize::default(),
138 ideal: Deserialize::default(),
139 kakao_pay: Deserialize::default(),
140 klarna: Deserialize::default(),
141 kr_card: Deserialize::default(),
142 link: Deserialize::default(),
143 naver_pay: Deserialize::default(),
144 nz_bank_account: Deserialize::default(),
145 paypal: Deserialize::default(),
146 payto: Deserialize::default(),
147 revolut_pay: Deserialize::default(),
148 sepa_debit: Deserialize::default(),
149 sofort: Deserialize::default(),
150 type_: Deserialize::default(),
151 us_bank_account: Deserialize::default(),
152 }
153 }
154
155 fn take_out(&mut self) -> Option<Self::Out> {
156 let (
157 Some(acss_debit),
158 Some(amazon_pay),
159 Some(au_becs_debit),
160 Some(bacs_debit),
161 Some(bancontact),
162 Some(boleto),
163 Some(card),
164 Some(card_present),
165 Some(cashapp),
166 Some(ideal),
167 Some(kakao_pay),
168 Some(klarna),
169 Some(kr_card),
170 Some(link),
171 Some(naver_pay),
172 Some(nz_bank_account),
173 Some(paypal),
174 Some(payto),
175 Some(revolut_pay),
176 Some(sepa_debit),
177 Some(sofort),
178 Some(type_),
179 Some(us_bank_account),
180 ) = (
181 self.acss_debit,
182 self.amazon_pay,
183 self.au_becs_debit,
184 self.bacs_debit,
185 self.bancontact.take(),
186 self.boleto,
187 self.card.take(),
188 self.card_present.take(),
189 self.cashapp,
190 self.ideal.take(),
191 self.kakao_pay,
192 self.klarna,
193 self.kr_card,
194 self.link,
195 self.naver_pay.take(),
196 self.nz_bank_account,
197 self.paypal,
198 self.payto,
199 self.revolut_pay,
200 self.sepa_debit,
201 self.sofort.take(),
202 self.type_.take(),
203 self.us_bank_account,
204 )
205 else {
206 return None;
207 };
208 Some(Self::Out {
209 acss_debit,
210 amazon_pay,
211 au_becs_debit,
212 bacs_debit,
213 bancontact,
214 boleto,
215 card,
216 card_present,
217 cashapp,
218 ideal,
219 kakao_pay,
220 klarna,
221 kr_card,
222 link,
223 naver_pay,
224 nz_bank_account,
225 paypal,
226 payto,
227 revolut_pay,
228 sepa_debit,
229 sofort,
230 type_,
231 us_bank_account,
232 })
233 }
234 }
235
236 impl Map for Builder<'_> {
237 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
238 self.builder.key(k)
239 }
240
241 fn finish(&mut self) -> Result<()> {
242 *self.out = self.builder.take_out();
243 Ok(())
244 }
245 }
246
247 impl ObjectDeser for SetupAttemptPaymentMethodDetails {
248 type Builder = SetupAttemptPaymentMethodDetailsBuilder;
249 }
250
251 impl FromValueOpt for SetupAttemptPaymentMethodDetails {
252 fn from_value(v: Value) -> Option<Self> {
253 let Value::Object(obj) = v else {
254 return None;
255 };
256 let mut b = SetupAttemptPaymentMethodDetailsBuilder::deser_default();
257 for (k, v) in obj {
258 match k.as_str() {
259 "acss_debit" => b.acss_debit = FromValueOpt::from_value(v),
260 "amazon_pay" => b.amazon_pay = FromValueOpt::from_value(v),
261 "au_becs_debit" => b.au_becs_debit = FromValueOpt::from_value(v),
262 "bacs_debit" => b.bacs_debit = FromValueOpt::from_value(v),
263 "bancontact" => b.bancontact = FromValueOpt::from_value(v),
264 "boleto" => b.boleto = FromValueOpt::from_value(v),
265 "card" => b.card = FromValueOpt::from_value(v),
266 "card_present" => b.card_present = FromValueOpt::from_value(v),
267 "cashapp" => b.cashapp = FromValueOpt::from_value(v),
268 "ideal" => b.ideal = FromValueOpt::from_value(v),
269 "kakao_pay" => b.kakao_pay = FromValueOpt::from_value(v),
270 "klarna" => b.klarna = FromValueOpt::from_value(v),
271 "kr_card" => b.kr_card = FromValueOpt::from_value(v),
272 "link" => b.link = FromValueOpt::from_value(v),
273 "naver_pay" => b.naver_pay = FromValueOpt::from_value(v),
274 "nz_bank_account" => b.nz_bank_account = FromValueOpt::from_value(v),
275 "paypal" => b.paypal = FromValueOpt::from_value(v),
276 "payto" => b.payto = FromValueOpt::from_value(v),
277 "revolut_pay" => b.revolut_pay = FromValueOpt::from_value(v),
278 "sepa_debit" => b.sepa_debit = FromValueOpt::from_value(v),
279 "sofort" => b.sofort = FromValueOpt::from_value(v),
280 "type" => b.type_ = FromValueOpt::from_value(v),
281 "us_bank_account" => b.us_bank_account = FromValueOpt::from_value(v),
282 _ => {}
283 }
284 }
285 b.take_out()
286 }
287 }
288};