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