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