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