1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct SubscriptionsResourcePaymentSettings {
5 pub payment_method_options: Option<stripe_shared::SubscriptionsResourcePaymentMethodOptions>,
7 pub payment_method_types: Option<Vec<SubscriptionsResourcePaymentSettingsPaymentMethodTypes>>,
10 pub save_default_payment_method:
13 Option<SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod>,
14}
15#[doc(hidden)]
16pub struct SubscriptionsResourcePaymentSettingsBuilder {
17 payment_method_options:
18 Option<Option<stripe_shared::SubscriptionsResourcePaymentMethodOptions>>,
19 payment_method_types:
20 Option<Option<Vec<SubscriptionsResourcePaymentSettingsPaymentMethodTypes>>>,
21 save_default_payment_method:
22 Option<Option<SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod>>,
23}
24
25#[allow(
26 unused_variables,
27 irrefutable_let_patterns,
28 clippy::let_unit_value,
29 clippy::match_single_binding,
30 clippy::single_match
31)]
32const _: () = {
33 use miniserde::de::{Map, Visitor};
34 use miniserde::json::Value;
35 use miniserde::{make_place, Deserialize, Result};
36 use stripe_types::miniserde_helpers::FromValueOpt;
37 use stripe_types::{MapBuilder, ObjectDeser};
38
39 make_place!(Place);
40
41 impl Deserialize for SubscriptionsResourcePaymentSettings {
42 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
43 Place::new(out)
44 }
45 }
46
47 struct Builder<'a> {
48 out: &'a mut Option<SubscriptionsResourcePaymentSettings>,
49 builder: SubscriptionsResourcePaymentSettingsBuilder,
50 }
51
52 impl Visitor for Place<SubscriptionsResourcePaymentSettings> {
53 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
54 Ok(Box::new(Builder {
55 out: &mut self.out,
56 builder: SubscriptionsResourcePaymentSettingsBuilder::deser_default(),
57 }))
58 }
59 }
60
61 impl MapBuilder for SubscriptionsResourcePaymentSettingsBuilder {
62 type Out = SubscriptionsResourcePaymentSettings;
63 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
64 Ok(match k {
65 "payment_method_options" => Deserialize::begin(&mut self.payment_method_options),
66 "payment_method_types" => Deserialize::begin(&mut self.payment_method_types),
67 "save_default_payment_method" => {
68 Deserialize::begin(&mut self.save_default_payment_method)
69 }
70
71 _ => <dyn Visitor>::ignore(),
72 })
73 }
74
75 fn deser_default() -> Self {
76 Self {
77 payment_method_options: Deserialize::default(),
78 payment_method_types: Deserialize::default(),
79 save_default_payment_method: Deserialize::default(),
80 }
81 }
82
83 fn take_out(&mut self) -> Option<Self::Out> {
84 let (
85 Some(payment_method_options),
86 Some(payment_method_types),
87 Some(save_default_payment_method),
88 ) = (
89 self.payment_method_options.take(),
90 self.payment_method_types.take(),
91 self.save_default_payment_method,
92 )
93 else {
94 return None;
95 };
96 Some(Self::Out {
97 payment_method_options,
98 payment_method_types,
99 save_default_payment_method,
100 })
101 }
102 }
103
104 impl Map for Builder<'_> {
105 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
106 self.builder.key(k)
107 }
108
109 fn finish(&mut self) -> Result<()> {
110 *self.out = self.builder.take_out();
111 Ok(())
112 }
113 }
114
115 impl ObjectDeser for SubscriptionsResourcePaymentSettings {
116 type Builder = SubscriptionsResourcePaymentSettingsBuilder;
117 }
118
119 impl FromValueOpt for SubscriptionsResourcePaymentSettings {
120 fn from_value(v: Value) -> Option<Self> {
121 let Value::Object(obj) = v else {
122 return None;
123 };
124 let mut b = SubscriptionsResourcePaymentSettingsBuilder::deser_default();
125 for (k, v) in obj {
126 match k.as_str() {
127 "payment_method_options" => {
128 b.payment_method_options = FromValueOpt::from_value(v)
129 }
130 "payment_method_types" => b.payment_method_types = FromValueOpt::from_value(v),
131 "save_default_payment_method" => {
132 b.save_default_payment_method = FromValueOpt::from_value(v)
133 }
134
135 _ => {}
136 }
137 }
138 b.take_out()
139 }
140 }
141};
142#[derive(Clone, Eq, PartialEq)]
145#[non_exhaustive]
146pub enum SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
147 AchCreditTransfer,
148 AchDebit,
149 AcssDebit,
150 Affirm,
151 AmazonPay,
152 AuBecsDebit,
153 BacsDebit,
154 Bancontact,
155 Boleto,
156 Card,
157 Cashapp,
158 Crypto,
159 CustomerBalance,
160 Eps,
161 Fpx,
162 Giropay,
163 Grabpay,
164 Ideal,
165 JpCreditTransfer,
166 KakaoPay,
167 Klarna,
168 Konbini,
169 KrCard,
170 Link,
171 Multibanco,
172 NaverPay,
173 NzBankAccount,
174 P24,
175 Payco,
176 Paynow,
177 Paypal,
178 Promptpay,
179 RevolutPay,
180 SepaCreditTransfer,
181 SepaDebit,
182 Sofort,
183 Swish,
184 UsBankAccount,
185 WechatPay,
186 Unknown(String),
188}
189impl SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
190 pub fn as_str(&self) -> &str {
191 use SubscriptionsResourcePaymentSettingsPaymentMethodTypes::*;
192 match self {
193 AchCreditTransfer => "ach_credit_transfer",
194 AchDebit => "ach_debit",
195 AcssDebit => "acss_debit",
196 Affirm => "affirm",
197 AmazonPay => "amazon_pay",
198 AuBecsDebit => "au_becs_debit",
199 BacsDebit => "bacs_debit",
200 Bancontact => "bancontact",
201 Boleto => "boleto",
202 Card => "card",
203 Cashapp => "cashapp",
204 Crypto => "crypto",
205 CustomerBalance => "customer_balance",
206 Eps => "eps",
207 Fpx => "fpx",
208 Giropay => "giropay",
209 Grabpay => "grabpay",
210 Ideal => "ideal",
211 JpCreditTransfer => "jp_credit_transfer",
212 KakaoPay => "kakao_pay",
213 Klarna => "klarna",
214 Konbini => "konbini",
215 KrCard => "kr_card",
216 Link => "link",
217 Multibanco => "multibanco",
218 NaverPay => "naver_pay",
219 NzBankAccount => "nz_bank_account",
220 P24 => "p24",
221 Payco => "payco",
222 Paynow => "paynow",
223 Paypal => "paypal",
224 Promptpay => "promptpay",
225 RevolutPay => "revolut_pay",
226 SepaCreditTransfer => "sepa_credit_transfer",
227 SepaDebit => "sepa_debit",
228 Sofort => "sofort",
229 Swish => "swish",
230 UsBankAccount => "us_bank_account",
231 WechatPay => "wechat_pay",
232 Unknown(v) => v,
233 }
234 }
235}
236
237impl std::str::FromStr for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
238 type Err = std::convert::Infallible;
239 fn from_str(s: &str) -> Result<Self, Self::Err> {
240 use SubscriptionsResourcePaymentSettingsPaymentMethodTypes::*;
241 match s {
242 "ach_credit_transfer" => Ok(AchCreditTransfer),
243 "ach_debit" => Ok(AchDebit),
244 "acss_debit" => Ok(AcssDebit),
245 "affirm" => Ok(Affirm),
246 "amazon_pay" => Ok(AmazonPay),
247 "au_becs_debit" => Ok(AuBecsDebit),
248 "bacs_debit" => Ok(BacsDebit),
249 "bancontact" => Ok(Bancontact),
250 "boleto" => Ok(Boleto),
251 "card" => Ok(Card),
252 "cashapp" => Ok(Cashapp),
253 "crypto" => Ok(Crypto),
254 "customer_balance" => Ok(CustomerBalance),
255 "eps" => Ok(Eps),
256 "fpx" => Ok(Fpx),
257 "giropay" => Ok(Giropay),
258 "grabpay" => Ok(Grabpay),
259 "ideal" => Ok(Ideal),
260 "jp_credit_transfer" => Ok(JpCreditTransfer),
261 "kakao_pay" => Ok(KakaoPay),
262 "klarna" => Ok(Klarna),
263 "konbini" => Ok(Konbini),
264 "kr_card" => Ok(KrCard),
265 "link" => Ok(Link),
266 "multibanco" => Ok(Multibanco),
267 "naver_pay" => Ok(NaverPay),
268 "nz_bank_account" => Ok(NzBankAccount),
269 "p24" => Ok(P24),
270 "payco" => Ok(Payco),
271 "paynow" => Ok(Paynow),
272 "paypal" => Ok(Paypal),
273 "promptpay" => Ok(Promptpay),
274 "revolut_pay" => Ok(RevolutPay),
275 "sepa_credit_transfer" => Ok(SepaCreditTransfer),
276 "sepa_debit" => Ok(SepaDebit),
277 "sofort" => Ok(Sofort),
278 "swish" => Ok(Swish),
279 "us_bank_account" => Ok(UsBankAccount),
280 "wechat_pay" => Ok(WechatPay),
281 v => Ok(Unknown(v.to_owned())),
282 }
283 }
284}
285impl std::fmt::Display for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
286 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
287 f.write_str(self.as_str())
288 }
289}
290
291impl std::fmt::Debug for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
292 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
293 f.write_str(self.as_str())
294 }
295}
296#[cfg(feature = "serialize")]
297impl serde::Serialize for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
298 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
299 where
300 S: serde::Serializer,
301 {
302 serializer.serialize_str(self.as_str())
303 }
304}
305impl miniserde::Deserialize for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
306 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
307 crate::Place::new(out)
308 }
309}
310
311impl miniserde::de::Visitor
312 for crate::Place<SubscriptionsResourcePaymentSettingsPaymentMethodTypes>
313{
314 fn string(&mut self, s: &str) -> miniserde::Result<()> {
315 use std::str::FromStr;
316 self.out =
317 Some(SubscriptionsResourcePaymentSettingsPaymentMethodTypes::from_str(s).unwrap());
318 Ok(())
319 }
320}
321
322stripe_types::impl_from_val_with_from_str!(SubscriptionsResourcePaymentSettingsPaymentMethodTypes);
323#[cfg(feature = "deserialize")]
324impl<'de> serde::Deserialize<'de> for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
325 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
326 use std::str::FromStr;
327 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
328 Ok(Self::from_str(&s).unwrap())
329 }
330}
331#[derive(Copy, Clone, Eq, PartialEq)]
334pub enum SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
335 Off,
336 OnSubscription,
337}
338impl SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
339 pub fn as_str(self) -> &'static str {
340 use SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod::*;
341 match self {
342 Off => "off",
343 OnSubscription => "on_subscription",
344 }
345 }
346}
347
348impl std::str::FromStr for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
349 type Err = stripe_types::StripeParseError;
350 fn from_str(s: &str) -> Result<Self, Self::Err> {
351 use SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod::*;
352 match s {
353 "off" => Ok(Off),
354 "on_subscription" => Ok(OnSubscription),
355 _ => Err(stripe_types::StripeParseError),
356 }
357 }
358}
359impl std::fmt::Display for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
360 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
361 f.write_str(self.as_str())
362 }
363}
364
365impl std::fmt::Debug for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
366 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
367 f.write_str(self.as_str())
368 }
369}
370#[cfg(feature = "serialize")]
371impl serde::Serialize for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
372 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
373 where
374 S: serde::Serializer,
375 {
376 serializer.serialize_str(self.as_str())
377 }
378}
379impl miniserde::Deserialize for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
380 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
381 crate::Place::new(out)
382 }
383}
384
385impl miniserde::de::Visitor
386 for crate::Place<SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod>
387{
388 fn string(&mut self, s: &str) -> miniserde::Result<()> {
389 use std::str::FromStr;
390 self.out = Some(
391 SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod::from_str(s)
392 .map_err(|_| miniserde::Error)?,
393 );
394 Ok(())
395 }
396}
397
398stripe_types::impl_from_val_with_from_str!(
399 SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod
400);
401#[cfg(feature = "deserialize")]
402impl<'de> serde::Deserialize<'de> for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
403 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
404 use std::str::FromStr;
405 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
406 Self::from_str(&s).map_err(|_| {
407 serde::de::Error::custom(
408 "Unknown value for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod",
409 )
410 })
411 }
412}