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