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<'a> Map for Builder<'a> {
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 CustomerBalance,
159 Eps,
160 Fpx,
161 Giropay,
162 Grabpay,
163 Ideal,
164 JpCreditTransfer,
165 KakaoPay,
166 Klarna,
167 Konbini,
168 KrCard,
169 Link,
170 Multibanco,
171 NaverPay,
172 NzBankAccount,
173 P24,
174 Payco,
175 Paynow,
176 Paypal,
177 Promptpay,
178 RevolutPay,
179 SepaCreditTransfer,
180 SepaDebit,
181 Sofort,
182 Swish,
183 UsBankAccount,
184 WechatPay,
185 Unknown(String),
187}
188impl SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
189 pub fn as_str(&self) -> &str {
190 use SubscriptionsResourcePaymentSettingsPaymentMethodTypes::*;
191 match self {
192 AchCreditTransfer => "ach_credit_transfer",
193 AchDebit => "ach_debit",
194 AcssDebit => "acss_debit",
195 Affirm => "affirm",
196 AmazonPay => "amazon_pay",
197 AuBecsDebit => "au_becs_debit",
198 BacsDebit => "bacs_debit",
199 Bancontact => "bancontact",
200 Boleto => "boleto",
201 Card => "card",
202 Cashapp => "cashapp",
203 CustomerBalance => "customer_balance",
204 Eps => "eps",
205 Fpx => "fpx",
206 Giropay => "giropay",
207 Grabpay => "grabpay",
208 Ideal => "ideal",
209 JpCreditTransfer => "jp_credit_transfer",
210 KakaoPay => "kakao_pay",
211 Klarna => "klarna",
212 Konbini => "konbini",
213 KrCard => "kr_card",
214 Link => "link",
215 Multibanco => "multibanco",
216 NaverPay => "naver_pay",
217 NzBankAccount => "nz_bank_account",
218 P24 => "p24",
219 Payco => "payco",
220 Paynow => "paynow",
221 Paypal => "paypal",
222 Promptpay => "promptpay",
223 RevolutPay => "revolut_pay",
224 SepaCreditTransfer => "sepa_credit_transfer",
225 SepaDebit => "sepa_debit",
226 Sofort => "sofort",
227 Swish => "swish",
228 UsBankAccount => "us_bank_account",
229 WechatPay => "wechat_pay",
230 Unknown(v) => v,
231 }
232 }
233}
234
235impl std::str::FromStr for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
236 type Err = std::convert::Infallible;
237 fn from_str(s: &str) -> Result<Self, Self::Err> {
238 use SubscriptionsResourcePaymentSettingsPaymentMethodTypes::*;
239 match s {
240 "ach_credit_transfer" => Ok(AchCreditTransfer),
241 "ach_debit" => Ok(AchDebit),
242 "acss_debit" => Ok(AcssDebit),
243 "affirm" => Ok(Affirm),
244 "amazon_pay" => Ok(AmazonPay),
245 "au_becs_debit" => Ok(AuBecsDebit),
246 "bacs_debit" => Ok(BacsDebit),
247 "bancontact" => Ok(Bancontact),
248 "boleto" => Ok(Boleto),
249 "card" => Ok(Card),
250 "cashapp" => Ok(Cashapp),
251 "customer_balance" => Ok(CustomerBalance),
252 "eps" => Ok(Eps),
253 "fpx" => Ok(Fpx),
254 "giropay" => Ok(Giropay),
255 "grabpay" => Ok(Grabpay),
256 "ideal" => Ok(Ideal),
257 "jp_credit_transfer" => Ok(JpCreditTransfer),
258 "kakao_pay" => Ok(KakaoPay),
259 "klarna" => Ok(Klarna),
260 "konbini" => Ok(Konbini),
261 "kr_card" => Ok(KrCard),
262 "link" => Ok(Link),
263 "multibanco" => Ok(Multibanco),
264 "naver_pay" => Ok(NaverPay),
265 "nz_bank_account" => Ok(NzBankAccount),
266 "p24" => Ok(P24),
267 "payco" => Ok(Payco),
268 "paynow" => Ok(Paynow),
269 "paypal" => Ok(Paypal),
270 "promptpay" => Ok(Promptpay),
271 "revolut_pay" => Ok(RevolutPay),
272 "sepa_credit_transfer" => Ok(SepaCreditTransfer),
273 "sepa_debit" => Ok(SepaDebit),
274 "sofort" => Ok(Sofort),
275 "swish" => Ok(Swish),
276 "us_bank_account" => Ok(UsBankAccount),
277 "wechat_pay" => Ok(WechatPay),
278 v => Ok(Unknown(v.to_owned())),
279 }
280 }
281}
282impl std::fmt::Display for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
283 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
284 f.write_str(self.as_str())
285 }
286}
287
288impl std::fmt::Debug for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
289 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
290 f.write_str(self.as_str())
291 }
292}
293#[cfg(feature = "serialize")]
294impl serde::Serialize for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
295 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
296 where
297 S: serde::Serializer,
298 {
299 serializer.serialize_str(self.as_str())
300 }
301}
302impl miniserde::Deserialize for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
303 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
304 crate::Place::new(out)
305 }
306}
307
308impl miniserde::de::Visitor
309 for crate::Place<SubscriptionsResourcePaymentSettingsPaymentMethodTypes>
310{
311 fn string(&mut self, s: &str) -> miniserde::Result<()> {
312 use std::str::FromStr;
313 self.out =
314 Some(SubscriptionsResourcePaymentSettingsPaymentMethodTypes::from_str(s).unwrap());
315 Ok(())
316 }
317}
318
319stripe_types::impl_from_val_with_from_str!(SubscriptionsResourcePaymentSettingsPaymentMethodTypes);
320#[cfg(feature = "deserialize")]
321impl<'de> serde::Deserialize<'de> for SubscriptionsResourcePaymentSettingsPaymentMethodTypes {
322 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
323 use std::str::FromStr;
324 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
325 Ok(Self::from_str(&s).unwrap())
326 }
327}
328#[derive(Copy, Clone, Eq, PartialEq)]
331pub enum SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
332 Off,
333 OnSubscription,
334}
335impl SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
336 pub fn as_str(self) -> &'static str {
337 use SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod::*;
338 match self {
339 Off => "off",
340 OnSubscription => "on_subscription",
341 }
342 }
343}
344
345impl std::str::FromStr for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
346 type Err = stripe_types::StripeParseError;
347 fn from_str(s: &str) -> Result<Self, Self::Err> {
348 use SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod::*;
349 match s {
350 "off" => Ok(Off),
351 "on_subscription" => Ok(OnSubscription),
352 _ => Err(stripe_types::StripeParseError),
353 }
354 }
355}
356impl std::fmt::Display for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
357 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
358 f.write_str(self.as_str())
359 }
360}
361
362impl std::fmt::Debug for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
363 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
364 f.write_str(self.as_str())
365 }
366}
367#[cfg(feature = "serialize")]
368impl serde::Serialize for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
369 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
370 where
371 S: serde::Serializer,
372 {
373 serializer.serialize_str(self.as_str())
374 }
375}
376impl miniserde::Deserialize for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
377 fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
378 crate::Place::new(out)
379 }
380}
381
382impl miniserde::de::Visitor
383 for crate::Place<SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod>
384{
385 fn string(&mut self, s: &str) -> miniserde::Result<()> {
386 use std::str::FromStr;
387 self.out = Some(
388 SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod::from_str(s)
389 .map_err(|_| miniserde::Error)?,
390 );
391 Ok(())
392 }
393}
394
395stripe_types::impl_from_val_with_from_str!(
396 SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod
397);
398#[cfg(feature = "deserialize")]
399impl<'de> serde::Deserialize<'de> for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod {
400 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
401 use std::str::FromStr;
402 let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
403 Self::from_str(&s).map_err(|_| {
404 serde::de::Error::custom(
405 "Unknown value for SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod",
406 )
407 })
408 }
409}