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