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