1#[derive(Clone, Debug)]
9#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
10pub struct PaymentMethod {
11 pub acss_debit: Option<stripe_shared::PaymentMethodAcssDebit>,
12 pub affirm: Option<stripe_shared::PaymentMethodAffirm>,
13 pub afterpay_clearpay: Option<stripe_shared::PaymentMethodAfterpayClearpay>,
14 pub alipay: Option<stripe_shared::PaymentFlowsPrivatePaymentMethodsAlipay>,
15 pub allow_redisplay: Option<stripe_shared::PaymentMethodAllowRedisplay>,
19 pub alma: Option<stripe_shared::PaymentMethodAlma>,
20 pub amazon_pay: Option<stripe_shared::PaymentMethodAmazonPay>,
21 pub au_becs_debit: Option<stripe_shared::PaymentMethodAuBecsDebit>,
22 pub bacs_debit: Option<stripe_shared::PaymentMethodBacsDebit>,
23 pub bancontact: Option<stripe_shared::PaymentMethodBancontact>,
24 pub billie: Option<stripe_shared::PaymentMethodBillie>,
25 pub billing_details: stripe_shared::BillingDetails,
26 pub blik: Option<stripe_shared::PaymentMethodBlik>,
27 pub boleto: Option<stripe_shared::PaymentMethodBoleto>,
28 pub card: Option<stripe_shared::PaymentMethodCard>,
29 pub card_present: Option<stripe_shared::PaymentMethodCardPresent>,
30 pub cashapp: Option<stripe_shared::PaymentMethodCashapp>,
31 pub created: stripe_types::Timestamp,
33 pub crypto: Option<stripe_shared::PaymentMethodCrypto>,
34 pub customer: Option<stripe_types::Expandable<stripe_shared::Customer>>,
37 pub customer_balance: Option<stripe_shared::PaymentMethodCustomerBalance>,
38 pub eps: Option<stripe_shared::PaymentMethodEps>,
39 pub fpx: Option<stripe_shared::PaymentMethodFpx>,
40 pub giropay: Option<stripe_shared::PaymentMethodGiropay>,
41 pub grabpay: Option<stripe_shared::PaymentMethodGrabpay>,
42 pub id: stripe_shared::PaymentMethodId,
44 pub ideal: Option<stripe_shared::PaymentMethodIdeal>,
45 pub interac_present: Option<stripe_shared::PaymentMethodInteracPresent>,
46 pub kakao_pay: Option<stripe_shared::PaymentMethodKakaoPay>,
47 pub klarna: Option<stripe_shared::PaymentMethodKlarna>,
48 pub konbini: Option<stripe_shared::PaymentMethodKonbini>,
49 pub kr_card: Option<stripe_shared::PaymentMethodKrCard>,
50 pub link: Option<stripe_shared::PaymentMethodLink>,
51 pub livemode: bool,
53 pub metadata: Option<std::collections::HashMap<String, String>>,
56 pub mobilepay: Option<stripe_shared::PaymentMethodMobilepay>,
57 pub multibanco: Option<stripe_shared::PaymentMethodMultibanco>,
58 pub naver_pay: Option<stripe_shared::PaymentMethodNaverPay>,
59 pub nz_bank_account: Option<stripe_shared::PaymentMethodNzBankAccount>,
60 pub oxxo: Option<stripe_shared::PaymentMethodOxxo>,
61 pub p24: Option<stripe_shared::PaymentMethodP24>,
62 pub pay_by_bank: Option<stripe_shared::PaymentMethodPayByBank>,
63 pub payco: Option<stripe_shared::PaymentMethodPayco>,
64 pub paynow: Option<stripe_shared::PaymentMethodPaynow>,
65 pub paypal: Option<stripe_shared::PaymentMethodPaypal>,
66 pub pix: Option<stripe_shared::PaymentMethodPix>,
67 pub promptpay: Option<stripe_shared::PaymentMethodPromptpay>,
68 pub radar_options: Option<stripe_shared::RadarRadarOptions>,
69 pub revolut_pay: Option<stripe_shared::PaymentMethodRevolutPay>,
70 pub samsung_pay: Option<stripe_shared::PaymentMethodSamsungPay>,
71 pub satispay: Option<stripe_shared::PaymentMethodSatispay>,
72 pub sepa_debit: Option<stripe_shared::PaymentMethodSepaDebit>,
73 pub sofort: Option<stripe_shared::PaymentMethodSofort>,
74 pub swish: Option<stripe_shared::PaymentMethodSwish>,
75 pub twint: Option<stripe_shared::PaymentMethodTwint>,
76 #[cfg_attr(feature = "deserialize", serde(rename = "type"))]
80 pub type_: PaymentMethodType,
81 pub us_bank_account: Option<stripe_shared::PaymentMethodUsBankAccount>,
82 pub wechat_pay: Option<stripe_shared::PaymentMethodWechatPay>,
83 pub zip: Option<stripe_shared::PaymentMethodZip>,
84}
85#[doc(hidden)]
86pub struct PaymentMethodBuilder {
87 acss_debit: Option<Option<stripe_shared::PaymentMethodAcssDebit>>,
88 affirm: Option<Option<stripe_shared::PaymentMethodAffirm>>,
89 afterpay_clearpay: Option<Option<stripe_shared::PaymentMethodAfterpayClearpay>>,
90 alipay: Option<Option<stripe_shared::PaymentFlowsPrivatePaymentMethodsAlipay>>,
91 allow_redisplay: Option<Option<stripe_shared::PaymentMethodAllowRedisplay>>,
92 alma: Option<Option<stripe_shared::PaymentMethodAlma>>,
93 amazon_pay: Option<Option<stripe_shared::PaymentMethodAmazonPay>>,
94 au_becs_debit: Option<Option<stripe_shared::PaymentMethodAuBecsDebit>>,
95 bacs_debit: Option<Option<stripe_shared::PaymentMethodBacsDebit>>,
96 bancontact: Option<Option<stripe_shared::PaymentMethodBancontact>>,
97 billie: Option<Option<stripe_shared::PaymentMethodBillie>>,
98 billing_details: Option<stripe_shared::BillingDetails>,
99 blik: Option<Option<stripe_shared::PaymentMethodBlik>>,
100 boleto: Option<Option<stripe_shared::PaymentMethodBoleto>>,
101 card: Option<Option<stripe_shared::PaymentMethodCard>>,
102 card_present: Option<Option<stripe_shared::PaymentMethodCardPresent>>,
103 cashapp: Option<Option<stripe_shared::PaymentMethodCashapp>>,
104 created: Option<stripe_types::Timestamp>,
105 crypto: Option<Option<stripe_shared::PaymentMethodCrypto>>,
106 customer: Option<Option<stripe_types::Expandable<stripe_shared::Customer>>>,
107 customer_balance: Option<Option<stripe_shared::PaymentMethodCustomerBalance>>,
108 eps: Option<Option<stripe_shared::PaymentMethodEps>>,
109 fpx: Option<Option<stripe_shared::PaymentMethodFpx>>,
110 giropay: Option<Option<stripe_shared::PaymentMethodGiropay>>,
111 grabpay: Option<Option<stripe_shared::PaymentMethodGrabpay>>,
112 id: Option<stripe_shared::PaymentMethodId>,
113 ideal: Option<Option<stripe_shared::PaymentMethodIdeal>>,
114 interac_present: Option<Option<stripe_shared::PaymentMethodInteracPresent>>,
115 kakao_pay: Option<Option<stripe_shared::PaymentMethodKakaoPay>>,
116 klarna: Option<Option<stripe_shared::PaymentMethodKlarna>>,
117 konbini: Option<Option<stripe_shared::PaymentMethodKonbini>>,
118 kr_card: Option<Option<stripe_shared::PaymentMethodKrCard>>,
119 link: Option<Option<stripe_shared::PaymentMethodLink>>,
120 livemode: Option<bool>,
121 metadata: Option<Option<std::collections::HashMap<String, String>>>,
122 mobilepay: Option<Option<stripe_shared::PaymentMethodMobilepay>>,
123 multibanco: Option<Option<stripe_shared::PaymentMethodMultibanco>>,
124 naver_pay: Option<Option<stripe_shared::PaymentMethodNaverPay>>,
125 nz_bank_account: Option<Option<stripe_shared::PaymentMethodNzBankAccount>>,
126 oxxo: Option<Option<stripe_shared::PaymentMethodOxxo>>,
127 p24: Option<Option<stripe_shared::PaymentMethodP24>>,
128 pay_by_bank: Option<Option<stripe_shared::PaymentMethodPayByBank>>,
129 payco: Option<Option<stripe_shared::PaymentMethodPayco>>,
130 paynow: Option<Option<stripe_shared::PaymentMethodPaynow>>,
131 paypal: Option<Option<stripe_shared::PaymentMethodPaypal>>,
132 pix: Option<Option<stripe_shared::PaymentMethodPix>>,
133 promptpay: Option<Option<stripe_shared::PaymentMethodPromptpay>>,
134 radar_options: Option<Option<stripe_shared::RadarRadarOptions>>,
135 revolut_pay: Option<Option<stripe_shared::PaymentMethodRevolutPay>>,
136 samsung_pay: Option<Option<stripe_shared::PaymentMethodSamsungPay>>,
137 satispay: Option<Option<stripe_shared::PaymentMethodSatispay>>,
138 sepa_debit: Option<Option<stripe_shared::PaymentMethodSepaDebit>>,
139 sofort: Option<Option<stripe_shared::PaymentMethodSofort>>,
140 swish: Option<Option<stripe_shared::PaymentMethodSwish>>,
141 twint: Option<Option<stripe_shared::PaymentMethodTwint>>,
142 type_: Option<PaymentMethodType>,
143 us_bank_account: Option<Option<stripe_shared::PaymentMethodUsBankAccount>>,
144 wechat_pay: Option<Option<stripe_shared::PaymentMethodWechatPay>>,
145 zip: Option<Option<stripe_shared::PaymentMethodZip>>,
146}
147
148#[allow(
149 unused_variables,
150 irrefutable_let_patterns,
151 clippy::let_unit_value,
152 clippy::match_single_binding,
153 clippy::single_match
154)]
155const _: () = {
156 use miniserde::de::{Map, Visitor};
157 use miniserde::json::Value;
158 use miniserde::{make_place, Deserialize, Result};
159 use stripe_types::miniserde_helpers::FromValueOpt;
160 use stripe_types::{MapBuilder, ObjectDeser};
161
162 make_place!(Place);
163
164 impl Deserialize for PaymentMethod {
165 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
166 Place::new(out)
167 }
168 }
169
170 struct Builder<'a> {
171 out: &'a mut Option<PaymentMethod>,
172 builder: PaymentMethodBuilder,
173 }
174
175 impl Visitor for Place<PaymentMethod> {
176 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
177 Ok(Box::new(Builder {
178 out: &mut self.out,
179 builder: PaymentMethodBuilder::deser_default(),
180 }))
181 }
182 }
183
184 impl MapBuilder for PaymentMethodBuilder {
185 type Out = PaymentMethod;
186 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
187 Ok(match k {
188 "acss_debit" => Deserialize::begin(&mut self.acss_debit),
189 "affirm" => Deserialize::begin(&mut self.affirm),
190 "afterpay_clearpay" => Deserialize::begin(&mut self.afterpay_clearpay),
191 "alipay" => Deserialize::begin(&mut self.alipay),
192 "allow_redisplay" => Deserialize::begin(&mut self.allow_redisplay),
193 "alma" => Deserialize::begin(&mut self.alma),
194 "amazon_pay" => Deserialize::begin(&mut self.amazon_pay),
195 "au_becs_debit" => Deserialize::begin(&mut self.au_becs_debit),
196 "bacs_debit" => Deserialize::begin(&mut self.bacs_debit),
197 "bancontact" => Deserialize::begin(&mut self.bancontact),
198 "billie" => Deserialize::begin(&mut self.billie),
199 "billing_details" => Deserialize::begin(&mut self.billing_details),
200 "blik" => Deserialize::begin(&mut self.blik),
201 "boleto" => Deserialize::begin(&mut self.boleto),
202 "card" => Deserialize::begin(&mut self.card),
203 "card_present" => Deserialize::begin(&mut self.card_present),
204 "cashapp" => Deserialize::begin(&mut self.cashapp),
205 "created" => Deserialize::begin(&mut self.created),
206 "crypto" => Deserialize::begin(&mut self.crypto),
207 "customer" => Deserialize::begin(&mut self.customer),
208 "customer_balance" => Deserialize::begin(&mut self.customer_balance),
209 "eps" => Deserialize::begin(&mut self.eps),
210 "fpx" => Deserialize::begin(&mut self.fpx),
211 "giropay" => Deserialize::begin(&mut self.giropay),
212 "grabpay" => Deserialize::begin(&mut self.grabpay),
213 "id" => Deserialize::begin(&mut self.id),
214 "ideal" => Deserialize::begin(&mut self.ideal),
215 "interac_present" => Deserialize::begin(&mut self.interac_present),
216 "kakao_pay" => Deserialize::begin(&mut self.kakao_pay),
217 "klarna" => Deserialize::begin(&mut self.klarna),
218 "konbini" => Deserialize::begin(&mut self.konbini),
219 "kr_card" => Deserialize::begin(&mut self.kr_card),
220 "link" => Deserialize::begin(&mut self.link),
221 "livemode" => Deserialize::begin(&mut self.livemode),
222 "metadata" => Deserialize::begin(&mut self.metadata),
223 "mobilepay" => Deserialize::begin(&mut self.mobilepay),
224 "multibanco" => Deserialize::begin(&mut self.multibanco),
225 "naver_pay" => Deserialize::begin(&mut self.naver_pay),
226 "nz_bank_account" => Deserialize::begin(&mut self.nz_bank_account),
227 "oxxo" => Deserialize::begin(&mut self.oxxo),
228 "p24" => Deserialize::begin(&mut self.p24),
229 "pay_by_bank" => Deserialize::begin(&mut self.pay_by_bank),
230 "payco" => Deserialize::begin(&mut self.payco),
231 "paynow" => Deserialize::begin(&mut self.paynow),
232 "paypal" => Deserialize::begin(&mut self.paypal),
233 "pix" => Deserialize::begin(&mut self.pix),
234 "promptpay" => Deserialize::begin(&mut self.promptpay),
235 "radar_options" => Deserialize::begin(&mut self.radar_options),
236 "revolut_pay" => Deserialize::begin(&mut self.revolut_pay),
237 "samsung_pay" => Deserialize::begin(&mut self.samsung_pay),
238 "satispay" => Deserialize::begin(&mut self.satispay),
239 "sepa_debit" => Deserialize::begin(&mut self.sepa_debit),
240 "sofort" => Deserialize::begin(&mut self.sofort),
241 "swish" => Deserialize::begin(&mut self.swish),
242 "twint" => Deserialize::begin(&mut self.twint),
243 "type" => Deserialize::begin(&mut self.type_),
244 "us_bank_account" => Deserialize::begin(&mut self.us_bank_account),
245 "wechat_pay" => Deserialize::begin(&mut self.wechat_pay),
246 "zip" => Deserialize::begin(&mut self.zip),
247
248 _ => <dyn Visitor>::ignore(),
249 })
250 }
251
252 fn deser_default() -> Self {
253 Self {
254 acss_debit: Deserialize::default(),
255 affirm: Deserialize::default(),
256 afterpay_clearpay: Deserialize::default(),
257 alipay: Deserialize::default(),
258 allow_redisplay: Deserialize::default(),
259 alma: Deserialize::default(),
260 amazon_pay: Deserialize::default(),
261 au_becs_debit: Deserialize::default(),
262 bacs_debit: Deserialize::default(),
263 bancontact: Deserialize::default(),
264 billie: Deserialize::default(),
265 billing_details: Deserialize::default(),
266 blik: Deserialize::default(),
267 boleto: Deserialize::default(),
268 card: Deserialize::default(),
269 card_present: Deserialize::default(),
270 cashapp: Deserialize::default(),
271 created: Deserialize::default(),
272 crypto: Deserialize::default(),
273 customer: Deserialize::default(),
274 customer_balance: Deserialize::default(),
275 eps: Deserialize::default(),
276 fpx: Deserialize::default(),
277 giropay: Deserialize::default(),
278 grabpay: Deserialize::default(),
279 id: Deserialize::default(),
280 ideal: Deserialize::default(),
281 interac_present: Deserialize::default(),
282 kakao_pay: Deserialize::default(),
283 klarna: Deserialize::default(),
284 konbini: Deserialize::default(),
285 kr_card: Deserialize::default(),
286 link: Deserialize::default(),
287 livemode: Deserialize::default(),
288 metadata: Deserialize::default(),
289 mobilepay: Deserialize::default(),
290 multibanco: Deserialize::default(),
291 naver_pay: Deserialize::default(),
292 nz_bank_account: Deserialize::default(),
293 oxxo: Deserialize::default(),
294 p24: Deserialize::default(),
295 pay_by_bank: Deserialize::default(),
296 payco: Deserialize::default(),
297 paynow: Deserialize::default(),
298 paypal: Deserialize::default(),
299 pix: Deserialize::default(),
300 promptpay: Deserialize::default(),
301 radar_options: Deserialize::default(),
302 revolut_pay: Deserialize::default(),
303 samsung_pay: Deserialize::default(),
304 satispay: Deserialize::default(),
305 sepa_debit: Deserialize::default(),
306 sofort: Deserialize::default(),
307 swish: Deserialize::default(),
308 twint: Deserialize::default(),
309 type_: Deserialize::default(),
310 us_bank_account: Deserialize::default(),
311 wechat_pay: Deserialize::default(),
312 zip: Deserialize::default(),
313 }
314 }
315
316 fn take_out(&mut self) -> Option<Self::Out> {
317 let (
318 Some(acss_debit),
319 Some(affirm),
320 Some(afterpay_clearpay),
321 Some(alipay),
322 Some(allow_redisplay),
323 Some(alma),
324 Some(amazon_pay),
325 Some(au_becs_debit),
326 Some(bacs_debit),
327 Some(bancontact),
328 Some(billie),
329 Some(billing_details),
330 Some(blik),
331 Some(boleto),
332 Some(card),
333 Some(card_present),
334 Some(cashapp),
335 Some(created),
336 Some(crypto),
337 Some(customer),
338 Some(customer_balance),
339 Some(eps),
340 Some(fpx),
341 Some(giropay),
342 Some(grabpay),
343 Some(id),
344 Some(ideal),
345 Some(interac_present),
346 Some(kakao_pay),
347 Some(klarna),
348 Some(konbini),
349 Some(kr_card),
350 Some(link),
351 Some(livemode),
352 Some(metadata),
353 Some(mobilepay),
354 Some(multibanco),
355 Some(naver_pay),
356 Some(nz_bank_account),
357 Some(oxxo),
358 Some(p24),
359 Some(pay_by_bank),
360 Some(payco),
361 Some(paynow),
362 Some(paypal),
363 Some(pix),
364 Some(promptpay),
365 Some(radar_options),
366 Some(revolut_pay),
367 Some(samsung_pay),
368 Some(satispay),
369 Some(sepa_debit),
370 Some(sofort),
371 Some(swish),
372 Some(twint),
373 Some(type_),
374 Some(us_bank_account),
375 Some(wechat_pay),
376 Some(zip),
377 ) = (
378 self.acss_debit.take(),
379 self.affirm,
380 self.afterpay_clearpay,
381 self.alipay,
382 self.allow_redisplay,
383 self.alma,
384 self.amazon_pay,
385 self.au_becs_debit.take(),
386 self.bacs_debit.take(),
387 self.bancontact,
388 self.billie,
389 self.billing_details.take(),
390 self.blik,
391 self.boleto.take(),
392 self.card.take(),
393 self.card_present.take(),
394 self.cashapp.take(),
395 self.created,
396 self.crypto,
397 self.customer.take(),
398 self.customer_balance,
399 self.eps.take(),
400 self.fpx.take(),
401 self.giropay,
402 self.grabpay,
403 self.id.take(),
404 self.ideal.take(),
405 self.interac_present.take(),
406 self.kakao_pay,
407 self.klarna,
408 self.konbini,
409 self.kr_card.take(),
410 self.link.take(),
411 self.livemode,
412 self.metadata.take(),
413 self.mobilepay,
414 self.multibanco,
415 self.naver_pay.take(),
416 self.nz_bank_account.take(),
417 self.oxxo,
418 self.p24.take(),
419 self.pay_by_bank,
420 self.payco,
421 self.paynow,
422 self.paypal.take(),
423 self.pix,
424 self.promptpay,
425 self.radar_options.take(),
426 self.revolut_pay,
427 self.samsung_pay,
428 self.satispay,
429 self.sepa_debit.take(),
430 self.sofort.take(),
431 self.swish,
432 self.twint,
433 self.type_.take(),
434 self.us_bank_account.take(),
435 self.wechat_pay,
436 self.zip,
437 )
438 else {
439 return None;
440 };
441 Some(Self::Out {
442 acss_debit,
443 affirm,
444 afterpay_clearpay,
445 alipay,
446 allow_redisplay,
447 alma,
448 amazon_pay,
449 au_becs_debit,
450 bacs_debit,
451 bancontact,
452 billie,
453 billing_details,
454 blik,
455 boleto,
456 card,
457 card_present,
458 cashapp,
459 created,
460 crypto,
461 customer,
462 customer_balance,
463 eps,
464 fpx,
465 giropay,
466 grabpay,
467 id,
468 ideal,
469 interac_present,
470 kakao_pay,
471 klarna,
472 konbini,
473 kr_card,
474 link,
475 livemode,
476 metadata,
477 mobilepay,
478 multibanco,
479 naver_pay,
480 nz_bank_account,
481 oxxo,
482 p24,
483 pay_by_bank,
484 payco,
485 paynow,
486 paypal,
487 pix,
488 promptpay,
489 radar_options,
490 revolut_pay,
491 samsung_pay,
492 satispay,
493 sepa_debit,
494 sofort,
495 swish,
496 twint,
497 type_,
498 us_bank_account,
499 wechat_pay,
500 zip,
501 })
502 }
503 }
504
505 impl Map for Builder<'_> {
506 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
507 self.builder.key(k)
508 }
509
510 fn finish(&mut self) -> Result<()> {
511 *self.out = self.builder.take_out();
512 Ok(())
513 }
514 }
515
516 impl ObjectDeser for PaymentMethod {
517 type Builder = PaymentMethodBuilder;
518 }
519
520 impl FromValueOpt for PaymentMethod {
521 fn from_value(v: Value) -> Option<Self> {
522 let Value::Object(obj) = v else {
523 return None;
524 };
525 let mut b = PaymentMethodBuilder::deser_default();
526 for (k, v) in obj {
527 match k.as_str() {
528 "acss_debit" => b.acss_debit = FromValueOpt::from_value(v),
529 "affirm" => b.affirm = FromValueOpt::from_value(v),
530 "afterpay_clearpay" => b.afterpay_clearpay = FromValueOpt::from_value(v),
531 "alipay" => b.alipay = FromValueOpt::from_value(v),
532 "allow_redisplay" => b.allow_redisplay = FromValueOpt::from_value(v),
533 "alma" => b.alma = FromValueOpt::from_value(v),
534 "amazon_pay" => b.amazon_pay = FromValueOpt::from_value(v),
535 "au_becs_debit" => b.au_becs_debit = FromValueOpt::from_value(v),
536 "bacs_debit" => b.bacs_debit = FromValueOpt::from_value(v),
537 "bancontact" => b.bancontact = FromValueOpt::from_value(v),
538 "billie" => b.billie = FromValueOpt::from_value(v),
539 "billing_details" => b.billing_details = FromValueOpt::from_value(v),
540 "blik" => b.blik = FromValueOpt::from_value(v),
541 "boleto" => b.boleto = FromValueOpt::from_value(v),
542 "card" => b.card = FromValueOpt::from_value(v),
543 "card_present" => b.card_present = FromValueOpt::from_value(v),
544 "cashapp" => b.cashapp = FromValueOpt::from_value(v),
545 "created" => b.created = FromValueOpt::from_value(v),
546 "crypto" => b.crypto = FromValueOpt::from_value(v),
547 "customer" => b.customer = FromValueOpt::from_value(v),
548 "customer_balance" => b.customer_balance = FromValueOpt::from_value(v),
549 "eps" => b.eps = FromValueOpt::from_value(v),
550 "fpx" => b.fpx = FromValueOpt::from_value(v),
551 "giropay" => b.giropay = FromValueOpt::from_value(v),
552 "grabpay" => b.grabpay = FromValueOpt::from_value(v),
553 "id" => b.id = FromValueOpt::from_value(v),
554 "ideal" => b.ideal = FromValueOpt::from_value(v),
555 "interac_present" => b.interac_present = FromValueOpt::from_value(v),
556 "kakao_pay" => b.kakao_pay = FromValueOpt::from_value(v),
557 "klarna" => b.klarna = FromValueOpt::from_value(v),
558 "konbini" => b.konbini = FromValueOpt::from_value(v),
559 "kr_card" => b.kr_card = FromValueOpt::from_value(v),
560 "link" => b.link = FromValueOpt::from_value(v),
561 "livemode" => b.livemode = FromValueOpt::from_value(v),
562 "metadata" => b.metadata = FromValueOpt::from_value(v),
563 "mobilepay" => b.mobilepay = FromValueOpt::from_value(v),
564 "multibanco" => b.multibanco = FromValueOpt::from_value(v),
565 "naver_pay" => b.naver_pay = FromValueOpt::from_value(v),
566 "nz_bank_account" => b.nz_bank_account = FromValueOpt::from_value(v),
567 "oxxo" => b.oxxo = FromValueOpt::from_value(v),
568 "p24" => b.p24 = FromValueOpt::from_value(v),
569 "pay_by_bank" => b.pay_by_bank = FromValueOpt::from_value(v),
570 "payco" => b.payco = FromValueOpt::from_value(v),
571 "paynow" => b.paynow = FromValueOpt::from_value(v),
572 "paypal" => b.paypal = FromValueOpt::from_value(v),
573 "pix" => b.pix = FromValueOpt::from_value(v),
574 "promptpay" => b.promptpay = FromValueOpt::from_value(v),
575 "radar_options" => b.radar_options = FromValueOpt::from_value(v),
576 "revolut_pay" => b.revolut_pay = FromValueOpt::from_value(v),
577 "samsung_pay" => b.samsung_pay = FromValueOpt::from_value(v),
578 "satispay" => b.satispay = FromValueOpt::from_value(v),
579 "sepa_debit" => b.sepa_debit = FromValueOpt::from_value(v),
580 "sofort" => b.sofort = FromValueOpt::from_value(v),
581 "swish" => b.swish = FromValueOpt::from_value(v),
582 "twint" => b.twint = FromValueOpt::from_value(v),
583 "type" => b.type_ = FromValueOpt::from_value(v),
584 "us_bank_account" => b.us_bank_account = FromValueOpt::from_value(v),
585 "wechat_pay" => b.wechat_pay = FromValueOpt::from_value(v),
586 "zip" => b.zip = FromValueOpt::from_value(v),
587
588 _ => {}
589 }
590 }
591 b.take_out()
592 }
593 }
594};
595#[cfg(feature = "serialize")]
596impl serde::Serialize for PaymentMethod {
597 fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
598 use serde::ser::SerializeStruct;
599 let mut s = s.serialize_struct("PaymentMethod", 60)?;
600 s.serialize_field("acss_debit", &self.acss_debit)?;
601 s.serialize_field("affirm", &self.affirm)?;
602 s.serialize_field("afterpay_clearpay", &self.afterpay_clearpay)?;
603 s.serialize_field("alipay", &self.alipay)?;
604 s.serialize_field("allow_redisplay", &self.allow_redisplay)?;
605 s.serialize_field("alma", &self.alma)?;
606 s.serialize_field("amazon_pay", &self.amazon_pay)?;
607 s.serialize_field("au_becs_debit", &self.au_becs_debit)?;
608 s.serialize_field("bacs_debit", &self.bacs_debit)?;
609 s.serialize_field("bancontact", &self.bancontact)?;
610 s.serialize_field("billie", &self.billie)?;
611 s.serialize_field("billing_details", &self.billing_details)?;
612 s.serialize_field("blik", &self.blik)?;
613 s.serialize_field("boleto", &self.boleto)?;
614 s.serialize_field("card", &self.card)?;
615 s.serialize_field("card_present", &self.card_present)?;
616 s.serialize_field("cashapp", &self.cashapp)?;
617 s.serialize_field("created", &self.created)?;
618 s.serialize_field("crypto", &self.crypto)?;
619 s.serialize_field("customer", &self.customer)?;
620 s.serialize_field("customer_balance", &self.customer_balance)?;
621 s.serialize_field("eps", &self.eps)?;
622 s.serialize_field("fpx", &self.fpx)?;
623 s.serialize_field("giropay", &self.giropay)?;
624 s.serialize_field("grabpay", &self.grabpay)?;
625 s.serialize_field("id", &self.id)?;
626 s.serialize_field("ideal", &self.ideal)?;
627 s.serialize_field("interac_present", &self.interac_present)?;
628 s.serialize_field("kakao_pay", &self.kakao_pay)?;
629 s.serialize_field("klarna", &self.klarna)?;
630 s.serialize_field("konbini", &self.konbini)?;
631 s.serialize_field("kr_card", &self.kr_card)?;
632 s.serialize_field("link", &self.link)?;
633 s.serialize_field("livemode", &self.livemode)?;
634 s.serialize_field("metadata", &self.metadata)?;
635 s.serialize_field("mobilepay", &self.mobilepay)?;
636 s.serialize_field("multibanco", &self.multibanco)?;
637 s.serialize_field("naver_pay", &self.naver_pay)?;
638 s.serialize_field("nz_bank_account", &self.nz_bank_account)?;
639 s.serialize_field("oxxo", &self.oxxo)?;
640 s.serialize_field("p24", &self.p24)?;
641 s.serialize_field("pay_by_bank", &self.pay_by_bank)?;
642 s.serialize_field("payco", &self.payco)?;
643 s.serialize_field("paynow", &self.paynow)?;
644 s.serialize_field("paypal", &self.paypal)?;
645 s.serialize_field("pix", &self.pix)?;
646 s.serialize_field("promptpay", &self.promptpay)?;
647 s.serialize_field("radar_options", &self.radar_options)?;
648 s.serialize_field("revolut_pay", &self.revolut_pay)?;
649 s.serialize_field("samsung_pay", &self.samsung_pay)?;
650 s.serialize_field("satispay", &self.satispay)?;
651 s.serialize_field("sepa_debit", &self.sepa_debit)?;
652 s.serialize_field("sofort", &self.sofort)?;
653 s.serialize_field("swish", &self.swish)?;
654 s.serialize_field("twint", &self.twint)?;
655 s.serialize_field("type", &self.type_)?;
656 s.serialize_field("us_bank_account", &self.us_bank_account)?;
657 s.serialize_field("wechat_pay", &self.wechat_pay)?;
658 s.serialize_field("zip", &self.zip)?;
659
660 s.serialize_field("object", "payment_method")?;
661 s.end()
662 }
663}
664#[derive(Clone, Eq, PartialEq)]
668#[non_exhaustive]
669pub enum PaymentMethodType {
670 AcssDebit,
671 Affirm,
672 AfterpayClearpay,
673 Alipay,
674 Alma,
675 AmazonPay,
676 AuBecsDebit,
677 BacsDebit,
678 Bancontact,
679 Billie,
680 Blik,
681 Boleto,
682 Card,
683 CardPresent,
684 Cashapp,
685 Crypto,
686 CustomerBalance,
687 Eps,
688 Fpx,
689 Giropay,
690 Grabpay,
691 Ideal,
692 InteracPresent,
693 KakaoPay,
694 Klarna,
695 Konbini,
696 KrCard,
697 Link,
698 Mobilepay,
699 Multibanco,
700 NaverPay,
701 NzBankAccount,
702 Oxxo,
703 P24,
704 PayByBank,
705 Payco,
706 Paynow,
707 Paypal,
708 Pix,
709 Promptpay,
710 RevolutPay,
711 SamsungPay,
712 Satispay,
713 SepaDebit,
714 Sofort,
715 Swish,
716 Twint,
717 UsBankAccount,
718 WechatPay,
719 Zip,
720 Unknown(String),
722}
723impl PaymentMethodType {
724 pub fn as_str(&self) -> &str {
725 use PaymentMethodType::*;
726 match self {
727 AcssDebit => "acss_debit",
728 Affirm => "affirm",
729 AfterpayClearpay => "afterpay_clearpay",
730 Alipay => "alipay",
731 Alma => "alma",
732 AmazonPay => "amazon_pay",
733 AuBecsDebit => "au_becs_debit",
734 BacsDebit => "bacs_debit",
735 Bancontact => "bancontact",
736 Billie => "billie",
737 Blik => "blik",
738 Boleto => "boleto",
739 Card => "card",
740 CardPresent => "card_present",
741 Cashapp => "cashapp",
742 Crypto => "crypto",
743 CustomerBalance => "customer_balance",
744 Eps => "eps",
745 Fpx => "fpx",
746 Giropay => "giropay",
747 Grabpay => "grabpay",
748 Ideal => "ideal",
749 InteracPresent => "interac_present",
750 KakaoPay => "kakao_pay",
751 Klarna => "klarna",
752 Konbini => "konbini",
753 KrCard => "kr_card",
754 Link => "link",
755 Mobilepay => "mobilepay",
756 Multibanco => "multibanco",
757 NaverPay => "naver_pay",
758 NzBankAccount => "nz_bank_account",
759 Oxxo => "oxxo",
760 P24 => "p24",
761 PayByBank => "pay_by_bank",
762 Payco => "payco",
763 Paynow => "paynow",
764 Paypal => "paypal",
765 Pix => "pix",
766 Promptpay => "promptpay",
767 RevolutPay => "revolut_pay",
768 SamsungPay => "samsung_pay",
769 Satispay => "satispay",
770 SepaDebit => "sepa_debit",
771 Sofort => "sofort",
772 Swish => "swish",
773 Twint => "twint",
774 UsBankAccount => "us_bank_account",
775 WechatPay => "wechat_pay",
776 Zip => "zip",
777 Unknown(v) => v,
778 }
779 }
780}
781
782impl std::str::FromStr for PaymentMethodType {
783 type Err = std::convert::Infallible;
784 fn from_str(s: &str) -> Result<Self, Self::Err> {
785 use PaymentMethodType::*;
786 match s {
787 "acss_debit" => Ok(AcssDebit),
788 "affirm" => Ok(Affirm),
789 "afterpay_clearpay" => Ok(AfterpayClearpay),
790 "alipay" => Ok(Alipay),
791 "alma" => Ok(Alma),
792 "amazon_pay" => Ok(AmazonPay),
793 "au_becs_debit" => Ok(AuBecsDebit),
794 "bacs_debit" => Ok(BacsDebit),
795 "bancontact" => Ok(Bancontact),
796 "billie" => Ok(Billie),
797 "blik" => Ok(Blik),
798 "boleto" => Ok(Boleto),
799 "card" => Ok(Card),
800 "card_present" => Ok(CardPresent),
801 "cashapp" => Ok(Cashapp),
802 "crypto" => Ok(Crypto),
803 "customer_balance" => Ok(CustomerBalance),
804 "eps" => Ok(Eps),
805 "fpx" => Ok(Fpx),
806 "giropay" => Ok(Giropay),
807 "grabpay" => Ok(Grabpay),
808 "ideal" => Ok(Ideal),
809 "interac_present" => Ok(InteracPresent),
810 "kakao_pay" => Ok(KakaoPay),
811 "klarna" => Ok(Klarna),
812 "konbini" => Ok(Konbini),
813 "kr_card" => Ok(KrCard),
814 "link" => Ok(Link),
815 "mobilepay" => Ok(Mobilepay),
816 "multibanco" => Ok(Multibanco),
817 "naver_pay" => Ok(NaverPay),
818 "nz_bank_account" => Ok(NzBankAccount),
819 "oxxo" => Ok(Oxxo),
820 "p24" => Ok(P24),
821 "pay_by_bank" => Ok(PayByBank),
822 "payco" => Ok(Payco),
823 "paynow" => Ok(Paynow),
824 "paypal" => Ok(Paypal),
825 "pix" => Ok(Pix),
826 "promptpay" => Ok(Promptpay),
827 "revolut_pay" => Ok(RevolutPay),
828 "samsung_pay" => Ok(SamsungPay),
829 "satispay" => Ok(Satispay),
830 "sepa_debit" => Ok(SepaDebit),
831 "sofort" => Ok(Sofort),
832 "swish" => Ok(Swish),
833 "twint" => Ok(Twint),
834 "us_bank_account" => Ok(UsBankAccount),
835 "wechat_pay" => Ok(WechatPay),
836 "zip" => Ok(Zip),
837 v => Ok(Unknown(v.to_owned())),
838 }
839 }
840}
841impl std::fmt::Display for PaymentMethodType {
842 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
843 f.write_str(self.as_str())
844 }
845}
846
847impl std::fmt::Debug for PaymentMethodType {
848 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
849 f.write_str(self.as_str())
850 }
851}
852#[cfg(feature = "serialize")]
853impl serde::Serialize for PaymentMethodType {
854 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
855 where
856 S: serde::Serializer,
857 {
858 serializer.serialize_str(self.as_str())
859 }
860}
861impl miniserde::Deserialize for PaymentMethodType {
862 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
863 crate::Place::new(out)
864 }
865}
866
867impl miniserde::de::Visitor for crate::Place<PaymentMethodType> {
868 fn string(&mut self, s: &str) -> miniserde::Result<()> {
869 use std::str::FromStr;
870 self.out = Some(PaymentMethodType::from_str(s).unwrap());
871 Ok(())
872 }
873}
874
875stripe_types::impl_from_val_with_from_str!(PaymentMethodType);
876#[cfg(feature = "deserialize")]
877impl<'de> serde::Deserialize<'de> for PaymentMethodType {
878 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
879 use std::str::FromStr;
880 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
881 Ok(Self::from_str(&s).unwrap())
882 }
883}
884impl stripe_types::Object for PaymentMethod {
885 type Id = stripe_shared::PaymentMethodId;
886 fn id(&self) -> &Self::Id {
887 &self.id
888 }
889
890 fn into_id(self) -> Self::Id {
891 self.id
892 }
893}
894stripe_types::def_id!(PaymentMethodId);
895#[derive(Copy, Clone, Eq, PartialEq)]
896pub enum PaymentMethodAllowRedisplay {
897 Always,
898 Limited,
899 Unspecified,
900}
901impl PaymentMethodAllowRedisplay {
902 pub fn as_str(self) -> &'static str {
903 use PaymentMethodAllowRedisplay::*;
904 match self {
905 Always => "always",
906 Limited => "limited",
907 Unspecified => "unspecified",
908 }
909 }
910}
911
912impl std::str::FromStr for PaymentMethodAllowRedisplay {
913 type Err = stripe_types::StripeParseError;
914 fn from_str(s: &str) -> Result<Self, Self::Err> {
915 use PaymentMethodAllowRedisplay::*;
916 match s {
917 "always" => Ok(Always),
918 "limited" => Ok(Limited),
919 "unspecified" => Ok(Unspecified),
920 _ => Err(stripe_types::StripeParseError),
921 }
922 }
923}
924impl std::fmt::Display for PaymentMethodAllowRedisplay {
925 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
926 f.write_str(self.as_str())
927 }
928}
929
930impl std::fmt::Debug for PaymentMethodAllowRedisplay {
931 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
932 f.write_str(self.as_str())
933 }
934}
935impl serde::Serialize for PaymentMethodAllowRedisplay {
936 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
937 where
938 S: serde::Serializer,
939 {
940 serializer.serialize_str(self.as_str())
941 }
942}
943impl miniserde::Deserialize for PaymentMethodAllowRedisplay {
944 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
945 crate::Place::new(out)
946 }
947}
948
949impl miniserde::de::Visitor for crate::Place<PaymentMethodAllowRedisplay> {
950 fn string(&mut self, s: &str) -> miniserde::Result<()> {
951 use std::str::FromStr;
952 self.out = Some(PaymentMethodAllowRedisplay::from_str(s).map_err(|_| miniserde::Error)?);
953 Ok(())
954 }
955}
956
957stripe_types::impl_from_val_with_from_str!(PaymentMethodAllowRedisplay);
958#[cfg(feature = "deserialize")]
959impl<'de> serde::Deserialize<'de> for PaymentMethodAllowRedisplay {
960 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
961 use std::str::FromStr;
962 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
963 Self::from_str(&s)
964 .map_err(|_| serde::de::Error::custom("Unknown value for PaymentMethodAllowRedisplay"))
965 }
966}