#[derive(Clone)]
#[cfg_attr(not(feature = "redact-generated-debug"), derive(Debug))]
#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
pub struct PaymentMethod {
pub acss_debit: Option<stripe_shared::PaymentMethodAcssDebit>,
pub affirm: Option<stripe_shared::PaymentMethodAffirm>,
pub afterpay_clearpay: Option<stripe_shared::PaymentMethodAfterpayClearpay>,
pub alipay: Option<stripe_shared::PaymentFlowsPrivatePaymentMethodsAlipay>,
pub allow_redisplay: Option<stripe_shared::PaymentMethodAllowRedisplay>,
pub alma: Option<stripe_shared::PaymentMethodAlma>,
pub amazon_pay: Option<stripe_shared::PaymentMethodAmazonPay>,
pub au_becs_debit: Option<stripe_shared::PaymentMethodAuBecsDebit>,
pub bacs_debit: Option<stripe_shared::PaymentMethodBacsDebit>,
pub bancontact: Option<stripe_shared::PaymentMethodBancontact>,
pub billie: Option<stripe_shared::PaymentMethodBillie>,
pub billing_details: stripe_shared::BillingDetails,
pub blik: Option<stripe_shared::PaymentMethodBlik>,
pub boleto: Option<stripe_shared::PaymentMethodBoleto>,
pub card: Option<stripe_shared::PaymentMethodCard>,
pub card_present: Option<stripe_shared::PaymentMethodCardPresent>,
pub cashapp: Option<stripe_shared::PaymentMethodCashapp>,
pub created: stripe_types::Timestamp,
pub crypto: Option<stripe_shared::PaymentMethodCrypto>,
pub custom: Option<stripe_shared::PaymentMethodCustom>,
pub customer: Option<stripe_types::Expandable<stripe_shared::Customer>>,
pub customer_account: Option<String>,
pub customer_balance: Option<stripe_shared::PaymentMethodCustomerBalance>,
pub eps: Option<stripe_shared::PaymentMethodEps>,
pub fpx: Option<stripe_shared::PaymentMethodFpx>,
pub giropay: Option<stripe_shared::PaymentMethodGiropay>,
pub grabpay: Option<stripe_shared::PaymentMethodGrabpay>,
pub id: stripe_shared::PaymentMethodId,
pub ideal: Option<stripe_shared::PaymentMethodIdeal>,
pub interac_present: Option<stripe_shared::PaymentMethodInteracPresent>,
pub kakao_pay: Option<stripe_shared::PaymentMethodKakaoPay>,
pub klarna: Option<stripe_shared::PaymentMethodKlarna>,
pub konbini: Option<stripe_shared::PaymentMethodKonbini>,
pub kr_card: Option<stripe_shared::PaymentMethodKrCard>,
pub link: Option<stripe_shared::PaymentMethodLink>,
pub livemode: bool,
pub mb_way: Option<stripe_shared::PaymentMethodMbWay>,
pub metadata: Option<std::collections::HashMap<String, String>>,
pub mobilepay: Option<stripe_shared::PaymentMethodMobilepay>,
pub multibanco: Option<stripe_shared::PaymentMethodMultibanco>,
pub naver_pay: Option<stripe_shared::PaymentMethodNaverPay>,
pub nz_bank_account: Option<stripe_shared::PaymentMethodNzBankAccount>,
pub oxxo: Option<stripe_shared::PaymentMethodOxxo>,
pub p24: Option<stripe_shared::PaymentMethodP24>,
pub pay_by_bank: Option<stripe_shared::PaymentMethodPayByBank>,
pub payco: Option<stripe_shared::PaymentMethodPayco>,
pub paynow: Option<stripe_shared::PaymentMethodPaynow>,
pub paypal: Option<stripe_shared::PaymentMethodPaypal>,
pub payto: Option<stripe_shared::PaymentMethodPayto>,
pub pix: Option<stripe_shared::PaymentMethodPix>,
pub promptpay: Option<stripe_shared::PaymentMethodPromptpay>,
pub radar_options: Option<stripe_shared::RadarRadarOptions>,
pub revolut_pay: Option<stripe_shared::PaymentMethodRevolutPay>,
pub samsung_pay: Option<stripe_shared::PaymentMethodSamsungPay>,
pub satispay: Option<stripe_shared::PaymentMethodSatispay>,
pub sepa_debit: Option<stripe_shared::PaymentMethodSepaDebit>,
pub sofort: Option<stripe_shared::PaymentMethodSofort>,
pub sunbit: Option<stripe_shared::PaymentMethodSunbit>,
pub swish: Option<stripe_shared::PaymentMethodSwish>,
pub twint: Option<stripe_shared::PaymentMethodTwint>,
#[cfg_attr(feature = "deserialize", serde(rename = "type"))]
pub type_: PaymentMethodType,
pub upi: Option<stripe_shared::PaymentMethodUpi>,
pub us_bank_account: Option<stripe_shared::PaymentMethodUsBankAccount>,
pub wechat_pay: Option<stripe_shared::PaymentMethodWechatPay>,
pub zip: Option<stripe_shared::PaymentMethodZip>,
}
#[cfg(feature = "redact-generated-debug")]
impl std::fmt::Debug for PaymentMethod {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PaymentMethod").finish_non_exhaustive()
}
}
#[doc(hidden)]
pub struct PaymentMethodBuilder {
acss_debit: Option<Option<stripe_shared::PaymentMethodAcssDebit>>,
affirm: Option<Option<stripe_shared::PaymentMethodAffirm>>,
afterpay_clearpay: Option<Option<stripe_shared::PaymentMethodAfterpayClearpay>>,
alipay: Option<Option<stripe_shared::PaymentFlowsPrivatePaymentMethodsAlipay>>,
allow_redisplay: Option<Option<stripe_shared::PaymentMethodAllowRedisplay>>,
alma: Option<Option<stripe_shared::PaymentMethodAlma>>,
amazon_pay: Option<Option<stripe_shared::PaymentMethodAmazonPay>>,
au_becs_debit: Option<Option<stripe_shared::PaymentMethodAuBecsDebit>>,
bacs_debit: Option<Option<stripe_shared::PaymentMethodBacsDebit>>,
bancontact: Option<Option<stripe_shared::PaymentMethodBancontact>>,
billie: Option<Option<stripe_shared::PaymentMethodBillie>>,
billing_details: Option<stripe_shared::BillingDetails>,
blik: Option<Option<stripe_shared::PaymentMethodBlik>>,
boleto: Option<Option<stripe_shared::PaymentMethodBoleto>>,
card: Option<Option<stripe_shared::PaymentMethodCard>>,
card_present: Option<Option<stripe_shared::PaymentMethodCardPresent>>,
cashapp: Option<Option<stripe_shared::PaymentMethodCashapp>>,
created: Option<stripe_types::Timestamp>,
crypto: Option<Option<stripe_shared::PaymentMethodCrypto>>,
custom: Option<Option<stripe_shared::PaymentMethodCustom>>,
customer: Option<Option<stripe_types::Expandable<stripe_shared::Customer>>>,
customer_account: Option<Option<String>>,
customer_balance: Option<Option<stripe_shared::PaymentMethodCustomerBalance>>,
eps: Option<Option<stripe_shared::PaymentMethodEps>>,
fpx: Option<Option<stripe_shared::PaymentMethodFpx>>,
giropay: Option<Option<stripe_shared::PaymentMethodGiropay>>,
grabpay: Option<Option<stripe_shared::PaymentMethodGrabpay>>,
id: Option<stripe_shared::PaymentMethodId>,
ideal: Option<Option<stripe_shared::PaymentMethodIdeal>>,
interac_present: Option<Option<stripe_shared::PaymentMethodInteracPresent>>,
kakao_pay: Option<Option<stripe_shared::PaymentMethodKakaoPay>>,
klarna: Option<Option<stripe_shared::PaymentMethodKlarna>>,
konbini: Option<Option<stripe_shared::PaymentMethodKonbini>>,
kr_card: Option<Option<stripe_shared::PaymentMethodKrCard>>,
link: Option<Option<stripe_shared::PaymentMethodLink>>,
livemode: Option<bool>,
mb_way: Option<Option<stripe_shared::PaymentMethodMbWay>>,
metadata: Option<Option<std::collections::HashMap<String, String>>>,
mobilepay: Option<Option<stripe_shared::PaymentMethodMobilepay>>,
multibanco: Option<Option<stripe_shared::PaymentMethodMultibanco>>,
naver_pay: Option<Option<stripe_shared::PaymentMethodNaverPay>>,
nz_bank_account: Option<Option<stripe_shared::PaymentMethodNzBankAccount>>,
oxxo: Option<Option<stripe_shared::PaymentMethodOxxo>>,
p24: Option<Option<stripe_shared::PaymentMethodP24>>,
pay_by_bank: Option<Option<stripe_shared::PaymentMethodPayByBank>>,
payco: Option<Option<stripe_shared::PaymentMethodPayco>>,
paynow: Option<Option<stripe_shared::PaymentMethodPaynow>>,
paypal: Option<Option<stripe_shared::PaymentMethodPaypal>>,
payto: Option<Option<stripe_shared::PaymentMethodPayto>>,
pix: Option<Option<stripe_shared::PaymentMethodPix>>,
promptpay: Option<Option<stripe_shared::PaymentMethodPromptpay>>,
radar_options: Option<Option<stripe_shared::RadarRadarOptions>>,
revolut_pay: Option<Option<stripe_shared::PaymentMethodRevolutPay>>,
samsung_pay: Option<Option<stripe_shared::PaymentMethodSamsungPay>>,
satispay: Option<Option<stripe_shared::PaymentMethodSatispay>>,
sepa_debit: Option<Option<stripe_shared::PaymentMethodSepaDebit>>,
sofort: Option<Option<stripe_shared::PaymentMethodSofort>>,
sunbit: Option<Option<stripe_shared::PaymentMethodSunbit>>,
swish: Option<Option<stripe_shared::PaymentMethodSwish>>,
twint: Option<Option<stripe_shared::PaymentMethodTwint>>,
type_: Option<PaymentMethodType>,
upi: Option<Option<stripe_shared::PaymentMethodUpi>>,
us_bank_account: Option<Option<stripe_shared::PaymentMethodUsBankAccount>>,
wechat_pay: Option<Option<stripe_shared::PaymentMethodWechatPay>>,
zip: Option<Option<stripe_shared::PaymentMethodZip>>,
}
#[allow(
unused_variables,
irrefutable_let_patterns,
clippy::let_unit_value,
clippy::match_single_binding,
clippy::single_match
)]
const _: () = {
use miniserde::de::{Map, Visitor};
use miniserde::json::Value;
use miniserde::{Deserialize, Result, make_place};
use stripe_types::miniserde_helpers::FromValueOpt;
use stripe_types::{MapBuilder, ObjectDeser};
make_place!(Place);
impl Deserialize for PaymentMethod {
fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
Place::new(out)
}
}
struct Builder<'a> {
out: &'a mut Option<PaymentMethod>,
builder: PaymentMethodBuilder,
}
impl Visitor for Place<PaymentMethod> {
fn map(&mut self) -> Result<Box<dyn Map + '_>> {
Ok(Box::new(Builder {
out: &mut self.out,
builder: PaymentMethodBuilder::deser_default(),
}))
}
}
impl MapBuilder for PaymentMethodBuilder {
type Out = PaymentMethod;
fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
Ok(match k {
"acss_debit" => Deserialize::begin(&mut self.acss_debit),
"affirm" => Deserialize::begin(&mut self.affirm),
"afterpay_clearpay" => Deserialize::begin(&mut self.afterpay_clearpay),
"alipay" => Deserialize::begin(&mut self.alipay),
"allow_redisplay" => Deserialize::begin(&mut self.allow_redisplay),
"alma" => Deserialize::begin(&mut self.alma),
"amazon_pay" => Deserialize::begin(&mut self.amazon_pay),
"au_becs_debit" => Deserialize::begin(&mut self.au_becs_debit),
"bacs_debit" => Deserialize::begin(&mut self.bacs_debit),
"bancontact" => Deserialize::begin(&mut self.bancontact),
"billie" => Deserialize::begin(&mut self.billie),
"billing_details" => Deserialize::begin(&mut self.billing_details),
"blik" => Deserialize::begin(&mut self.blik),
"boleto" => Deserialize::begin(&mut self.boleto),
"card" => Deserialize::begin(&mut self.card),
"card_present" => Deserialize::begin(&mut self.card_present),
"cashapp" => Deserialize::begin(&mut self.cashapp),
"created" => Deserialize::begin(&mut self.created),
"crypto" => Deserialize::begin(&mut self.crypto),
"custom" => Deserialize::begin(&mut self.custom),
"customer" => Deserialize::begin(&mut self.customer),
"customer_account" => Deserialize::begin(&mut self.customer_account),
"customer_balance" => Deserialize::begin(&mut self.customer_balance),
"eps" => Deserialize::begin(&mut self.eps),
"fpx" => Deserialize::begin(&mut self.fpx),
"giropay" => Deserialize::begin(&mut self.giropay),
"grabpay" => Deserialize::begin(&mut self.grabpay),
"id" => Deserialize::begin(&mut self.id),
"ideal" => Deserialize::begin(&mut self.ideal),
"interac_present" => Deserialize::begin(&mut self.interac_present),
"kakao_pay" => Deserialize::begin(&mut self.kakao_pay),
"klarna" => Deserialize::begin(&mut self.klarna),
"konbini" => Deserialize::begin(&mut self.konbini),
"kr_card" => Deserialize::begin(&mut self.kr_card),
"link" => Deserialize::begin(&mut self.link),
"livemode" => Deserialize::begin(&mut self.livemode),
"mb_way" => Deserialize::begin(&mut self.mb_way),
"metadata" => Deserialize::begin(&mut self.metadata),
"mobilepay" => Deserialize::begin(&mut self.mobilepay),
"multibanco" => Deserialize::begin(&mut self.multibanco),
"naver_pay" => Deserialize::begin(&mut self.naver_pay),
"nz_bank_account" => Deserialize::begin(&mut self.nz_bank_account),
"oxxo" => Deserialize::begin(&mut self.oxxo),
"p24" => Deserialize::begin(&mut self.p24),
"pay_by_bank" => Deserialize::begin(&mut self.pay_by_bank),
"payco" => Deserialize::begin(&mut self.payco),
"paynow" => Deserialize::begin(&mut self.paynow),
"paypal" => Deserialize::begin(&mut self.paypal),
"payto" => Deserialize::begin(&mut self.payto),
"pix" => Deserialize::begin(&mut self.pix),
"promptpay" => Deserialize::begin(&mut self.promptpay),
"radar_options" => Deserialize::begin(&mut self.radar_options),
"revolut_pay" => Deserialize::begin(&mut self.revolut_pay),
"samsung_pay" => Deserialize::begin(&mut self.samsung_pay),
"satispay" => Deserialize::begin(&mut self.satispay),
"sepa_debit" => Deserialize::begin(&mut self.sepa_debit),
"sofort" => Deserialize::begin(&mut self.sofort),
"sunbit" => Deserialize::begin(&mut self.sunbit),
"swish" => Deserialize::begin(&mut self.swish),
"twint" => Deserialize::begin(&mut self.twint),
"type" => Deserialize::begin(&mut self.type_),
"upi" => Deserialize::begin(&mut self.upi),
"us_bank_account" => Deserialize::begin(&mut self.us_bank_account),
"wechat_pay" => Deserialize::begin(&mut self.wechat_pay),
"zip" => Deserialize::begin(&mut self.zip),
_ => <dyn Visitor>::ignore(),
})
}
fn deser_default() -> Self {
Self {
acss_debit: Some(None),
affirm: Some(None),
afterpay_clearpay: Some(None),
alipay: Some(None),
allow_redisplay: Some(None),
alma: Some(None),
amazon_pay: Some(None),
au_becs_debit: Some(None),
bacs_debit: Some(None),
bancontact: Some(None),
billie: Some(None),
billing_details: None,
blik: Some(None),
boleto: Some(None),
card: Some(None),
card_present: Some(None),
cashapp: Some(None),
created: None,
crypto: Some(None),
custom: Some(None),
customer: Some(None),
customer_account: Some(None),
customer_balance: Some(None),
eps: Some(None),
fpx: Some(None),
giropay: Some(None),
grabpay: Some(None),
id: None,
ideal: Some(None),
interac_present: Some(None),
kakao_pay: Some(None),
klarna: Some(None),
konbini: Some(None),
kr_card: Some(None),
link: Some(None),
livemode: None,
mb_way: Some(None),
metadata: Some(None),
mobilepay: Some(None),
multibanco: Some(None),
naver_pay: Some(None),
nz_bank_account: Some(None),
oxxo: Some(None),
p24: Some(None),
pay_by_bank: Some(None),
payco: Some(None),
paynow: Some(None),
paypal: Some(None),
payto: Some(None),
pix: Some(None),
promptpay: Some(None),
radar_options: Some(None),
revolut_pay: Some(None),
samsung_pay: Some(None),
satispay: Some(None),
sepa_debit: Some(None),
sofort: Some(None),
sunbit: Some(None),
swish: Some(None),
twint: Some(None),
type_: None,
upi: Some(None),
us_bank_account: Some(None),
wechat_pay: Some(None),
zip: Some(None),
}
}
fn take_out(&mut self) -> Option<Self::Out> {
let (
Some(acss_debit),
Some(affirm),
Some(afterpay_clearpay),
Some(alipay),
Some(allow_redisplay),
Some(alma),
Some(amazon_pay),
Some(au_becs_debit),
Some(bacs_debit),
Some(bancontact),
Some(billie),
Some(billing_details),
Some(blik),
Some(boleto),
Some(card),
Some(card_present),
Some(cashapp),
Some(created),
Some(crypto),
Some(custom),
Some(customer),
Some(customer_account),
Some(customer_balance),
Some(eps),
Some(fpx),
Some(giropay),
Some(grabpay),
Some(id),
Some(ideal),
Some(interac_present),
Some(kakao_pay),
Some(klarna),
Some(konbini),
Some(kr_card),
Some(link),
Some(livemode),
Some(mb_way),
Some(metadata),
Some(mobilepay),
Some(multibanco),
Some(naver_pay),
Some(nz_bank_account),
Some(oxxo),
Some(p24),
Some(pay_by_bank),
Some(payco),
Some(paynow),
Some(paypal),
Some(payto),
Some(pix),
Some(promptpay),
Some(radar_options),
Some(revolut_pay),
Some(samsung_pay),
Some(satispay),
Some(sepa_debit),
Some(sofort),
Some(sunbit),
Some(swish),
Some(twint),
Some(type_),
Some(upi),
Some(us_bank_account),
Some(wechat_pay),
Some(zip),
) = (
self.acss_debit.take(),
self.affirm,
self.afterpay_clearpay,
self.alipay,
self.allow_redisplay.take(),
self.alma,
self.amazon_pay,
self.au_becs_debit.take(),
self.bacs_debit.take(),
self.bancontact,
self.billie,
self.billing_details.take(),
self.blik,
self.boleto.take(),
self.card.take(),
self.card_present.take(),
self.cashapp.take(),
self.created,
self.crypto,
self.custom.take(),
self.customer.take(),
self.customer_account.take(),
self.customer_balance,
self.eps.take(),
self.fpx.take(),
self.giropay,
self.grabpay,
self.id.take(),
self.ideal.take(),
self.interac_present.take(),
self.kakao_pay,
self.klarna,
self.konbini,
self.kr_card.take(),
self.link.take(),
self.livemode,
self.mb_way,
self.metadata.take(),
self.mobilepay,
self.multibanco,
self.naver_pay.take(),
self.nz_bank_account.take(),
self.oxxo,
self.p24.take(),
self.pay_by_bank,
self.payco,
self.paynow,
self.paypal.take(),
self.payto.take(),
self.pix,
self.promptpay,
self.radar_options.take(),
self.revolut_pay,
self.samsung_pay,
self.satispay,
self.sepa_debit.take(),
self.sofort.take(),
self.sunbit,
self.swish,
self.twint,
self.type_.take(),
self.upi.take(),
self.us_bank_account.take(),
self.wechat_pay,
self.zip,
)
else {
return None;
};
Some(Self::Out {
acss_debit,
affirm,
afterpay_clearpay,
alipay,
allow_redisplay,
alma,
amazon_pay,
au_becs_debit,
bacs_debit,
bancontact,
billie,
billing_details,
blik,
boleto,
card,
card_present,
cashapp,
created,
crypto,
custom,
customer,
customer_account,
customer_balance,
eps,
fpx,
giropay,
grabpay,
id,
ideal,
interac_present,
kakao_pay,
klarna,
konbini,
kr_card,
link,
livemode,
mb_way,
metadata,
mobilepay,
multibanco,
naver_pay,
nz_bank_account,
oxxo,
p24,
pay_by_bank,
payco,
paynow,
paypal,
payto,
pix,
promptpay,
radar_options,
revolut_pay,
samsung_pay,
satispay,
sepa_debit,
sofort,
sunbit,
swish,
twint,
type_,
upi,
us_bank_account,
wechat_pay,
zip,
})
}
}
impl Map for Builder<'_> {
fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
self.builder.key(k)
}
fn finish(&mut self) -> Result<()> {
*self.out = self.builder.take_out();
Ok(())
}
}
impl ObjectDeser for PaymentMethod {
type Builder = PaymentMethodBuilder;
}
impl FromValueOpt for PaymentMethod {
fn from_value(v: Value) -> Option<Self> {
let Value::Object(obj) = v else {
return None;
};
let mut b = PaymentMethodBuilder::deser_default();
for (k, v) in obj {
match k.as_str() {
"acss_debit" => b.acss_debit = FromValueOpt::from_value(v),
"affirm" => b.affirm = FromValueOpt::from_value(v),
"afterpay_clearpay" => b.afterpay_clearpay = FromValueOpt::from_value(v),
"alipay" => b.alipay = FromValueOpt::from_value(v),
"allow_redisplay" => b.allow_redisplay = FromValueOpt::from_value(v),
"alma" => b.alma = FromValueOpt::from_value(v),
"amazon_pay" => b.amazon_pay = FromValueOpt::from_value(v),
"au_becs_debit" => b.au_becs_debit = FromValueOpt::from_value(v),
"bacs_debit" => b.bacs_debit = FromValueOpt::from_value(v),
"bancontact" => b.bancontact = FromValueOpt::from_value(v),
"billie" => b.billie = FromValueOpt::from_value(v),
"billing_details" => b.billing_details = FromValueOpt::from_value(v),
"blik" => b.blik = FromValueOpt::from_value(v),
"boleto" => b.boleto = FromValueOpt::from_value(v),
"card" => b.card = FromValueOpt::from_value(v),
"card_present" => b.card_present = FromValueOpt::from_value(v),
"cashapp" => b.cashapp = FromValueOpt::from_value(v),
"created" => b.created = FromValueOpt::from_value(v),
"crypto" => b.crypto = FromValueOpt::from_value(v),
"custom" => b.custom = FromValueOpt::from_value(v),
"customer" => b.customer = FromValueOpt::from_value(v),
"customer_account" => b.customer_account = FromValueOpt::from_value(v),
"customer_balance" => b.customer_balance = FromValueOpt::from_value(v),
"eps" => b.eps = FromValueOpt::from_value(v),
"fpx" => b.fpx = FromValueOpt::from_value(v),
"giropay" => b.giropay = FromValueOpt::from_value(v),
"grabpay" => b.grabpay = FromValueOpt::from_value(v),
"id" => b.id = FromValueOpt::from_value(v),
"ideal" => b.ideal = FromValueOpt::from_value(v),
"interac_present" => b.interac_present = FromValueOpt::from_value(v),
"kakao_pay" => b.kakao_pay = FromValueOpt::from_value(v),
"klarna" => b.klarna = FromValueOpt::from_value(v),
"konbini" => b.konbini = FromValueOpt::from_value(v),
"kr_card" => b.kr_card = FromValueOpt::from_value(v),
"link" => b.link = FromValueOpt::from_value(v),
"livemode" => b.livemode = FromValueOpt::from_value(v),
"mb_way" => b.mb_way = FromValueOpt::from_value(v),
"metadata" => b.metadata = FromValueOpt::from_value(v),
"mobilepay" => b.mobilepay = FromValueOpt::from_value(v),
"multibanco" => b.multibanco = FromValueOpt::from_value(v),
"naver_pay" => b.naver_pay = FromValueOpt::from_value(v),
"nz_bank_account" => b.nz_bank_account = FromValueOpt::from_value(v),
"oxxo" => b.oxxo = FromValueOpt::from_value(v),
"p24" => b.p24 = FromValueOpt::from_value(v),
"pay_by_bank" => b.pay_by_bank = FromValueOpt::from_value(v),
"payco" => b.payco = FromValueOpt::from_value(v),
"paynow" => b.paynow = FromValueOpt::from_value(v),
"paypal" => b.paypal = FromValueOpt::from_value(v),
"payto" => b.payto = FromValueOpt::from_value(v),
"pix" => b.pix = FromValueOpt::from_value(v),
"promptpay" => b.promptpay = FromValueOpt::from_value(v),
"radar_options" => b.radar_options = FromValueOpt::from_value(v),
"revolut_pay" => b.revolut_pay = FromValueOpt::from_value(v),
"samsung_pay" => b.samsung_pay = FromValueOpt::from_value(v),
"satispay" => b.satispay = FromValueOpt::from_value(v),
"sepa_debit" => b.sepa_debit = FromValueOpt::from_value(v),
"sofort" => b.sofort = FromValueOpt::from_value(v),
"sunbit" => b.sunbit = FromValueOpt::from_value(v),
"swish" => b.swish = FromValueOpt::from_value(v),
"twint" => b.twint = FromValueOpt::from_value(v),
"type" => b.type_ = FromValueOpt::from_value(v),
"upi" => b.upi = FromValueOpt::from_value(v),
"us_bank_account" => b.us_bank_account = FromValueOpt::from_value(v),
"wechat_pay" => b.wechat_pay = FromValueOpt::from_value(v),
"zip" => b.zip = FromValueOpt::from_value(v),
_ => {}
}
}
b.take_out()
}
}
};
#[cfg(feature = "serialize")]
impl serde::Serialize for PaymentMethod {
fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
use serde::ser::SerializeStruct;
let mut s = s.serialize_struct("PaymentMethod", 66)?;
s.serialize_field("acss_debit", &self.acss_debit)?;
s.serialize_field("affirm", &self.affirm)?;
s.serialize_field("afterpay_clearpay", &self.afterpay_clearpay)?;
s.serialize_field("alipay", &self.alipay)?;
s.serialize_field("allow_redisplay", &self.allow_redisplay)?;
s.serialize_field("alma", &self.alma)?;
s.serialize_field("amazon_pay", &self.amazon_pay)?;
s.serialize_field("au_becs_debit", &self.au_becs_debit)?;
s.serialize_field("bacs_debit", &self.bacs_debit)?;
s.serialize_field("bancontact", &self.bancontact)?;
s.serialize_field("billie", &self.billie)?;
s.serialize_field("billing_details", &self.billing_details)?;
s.serialize_field("blik", &self.blik)?;
s.serialize_field("boleto", &self.boleto)?;
s.serialize_field("card", &self.card)?;
s.serialize_field("card_present", &self.card_present)?;
s.serialize_field("cashapp", &self.cashapp)?;
s.serialize_field("created", &self.created)?;
s.serialize_field("crypto", &self.crypto)?;
s.serialize_field("custom", &self.custom)?;
s.serialize_field("customer", &self.customer)?;
s.serialize_field("customer_account", &self.customer_account)?;
s.serialize_field("customer_balance", &self.customer_balance)?;
s.serialize_field("eps", &self.eps)?;
s.serialize_field("fpx", &self.fpx)?;
s.serialize_field("giropay", &self.giropay)?;
s.serialize_field("grabpay", &self.grabpay)?;
s.serialize_field("id", &self.id)?;
s.serialize_field("ideal", &self.ideal)?;
s.serialize_field("interac_present", &self.interac_present)?;
s.serialize_field("kakao_pay", &self.kakao_pay)?;
s.serialize_field("klarna", &self.klarna)?;
s.serialize_field("konbini", &self.konbini)?;
s.serialize_field("kr_card", &self.kr_card)?;
s.serialize_field("link", &self.link)?;
s.serialize_field("livemode", &self.livemode)?;
s.serialize_field("mb_way", &self.mb_way)?;
s.serialize_field("metadata", &self.metadata)?;
s.serialize_field("mobilepay", &self.mobilepay)?;
s.serialize_field("multibanco", &self.multibanco)?;
s.serialize_field("naver_pay", &self.naver_pay)?;
s.serialize_field("nz_bank_account", &self.nz_bank_account)?;
s.serialize_field("oxxo", &self.oxxo)?;
s.serialize_field("p24", &self.p24)?;
s.serialize_field("pay_by_bank", &self.pay_by_bank)?;
s.serialize_field("payco", &self.payco)?;
s.serialize_field("paynow", &self.paynow)?;
s.serialize_field("paypal", &self.paypal)?;
s.serialize_field("payto", &self.payto)?;
s.serialize_field("pix", &self.pix)?;
s.serialize_field("promptpay", &self.promptpay)?;
s.serialize_field("radar_options", &self.radar_options)?;
s.serialize_field("revolut_pay", &self.revolut_pay)?;
s.serialize_field("samsung_pay", &self.samsung_pay)?;
s.serialize_field("satispay", &self.satispay)?;
s.serialize_field("sepa_debit", &self.sepa_debit)?;
s.serialize_field("sofort", &self.sofort)?;
s.serialize_field("sunbit", &self.sunbit)?;
s.serialize_field("swish", &self.swish)?;
s.serialize_field("twint", &self.twint)?;
s.serialize_field("type", &self.type_)?;
s.serialize_field("upi", &self.upi)?;
s.serialize_field("us_bank_account", &self.us_bank_account)?;
s.serialize_field("wechat_pay", &self.wechat_pay)?;
s.serialize_field("zip", &self.zip)?;
s.serialize_field("object", "payment_method")?;
s.end()
}
}
#[derive(Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum PaymentMethodType {
AcssDebit,
Affirm,
AfterpayClearpay,
Alipay,
Alma,
AmazonPay,
AuBecsDebit,
BacsDebit,
Bancontact,
Billie,
Blik,
Boleto,
Card,
CardPresent,
Cashapp,
Crypto,
Custom,
CustomerBalance,
Eps,
Fpx,
Giropay,
Grabpay,
Ideal,
InteracPresent,
KakaoPay,
Klarna,
Konbini,
KrCard,
Link,
MbWay,
Mobilepay,
Multibanco,
NaverPay,
NzBankAccount,
Oxxo,
P24,
PayByBank,
Payco,
Paynow,
Paypal,
Payto,
Pix,
Promptpay,
RevolutPay,
SamsungPay,
Satispay,
SepaDebit,
Sofort,
Sunbit,
Swish,
Twint,
Upi,
UsBankAccount,
WechatPay,
Zip,
Unknown(String),
}
impl PaymentMethodType {
pub fn as_str(&self) -> &str {
use PaymentMethodType::*;
match self {
AcssDebit => "acss_debit",
Affirm => "affirm",
AfterpayClearpay => "afterpay_clearpay",
Alipay => "alipay",
Alma => "alma",
AmazonPay => "amazon_pay",
AuBecsDebit => "au_becs_debit",
BacsDebit => "bacs_debit",
Bancontact => "bancontact",
Billie => "billie",
Blik => "blik",
Boleto => "boleto",
Card => "card",
CardPresent => "card_present",
Cashapp => "cashapp",
Crypto => "crypto",
Custom => "custom",
CustomerBalance => "customer_balance",
Eps => "eps",
Fpx => "fpx",
Giropay => "giropay",
Grabpay => "grabpay",
Ideal => "ideal",
InteracPresent => "interac_present",
KakaoPay => "kakao_pay",
Klarna => "klarna",
Konbini => "konbini",
KrCard => "kr_card",
Link => "link",
MbWay => "mb_way",
Mobilepay => "mobilepay",
Multibanco => "multibanco",
NaverPay => "naver_pay",
NzBankAccount => "nz_bank_account",
Oxxo => "oxxo",
P24 => "p24",
PayByBank => "pay_by_bank",
Payco => "payco",
Paynow => "paynow",
Paypal => "paypal",
Payto => "payto",
Pix => "pix",
Promptpay => "promptpay",
RevolutPay => "revolut_pay",
SamsungPay => "samsung_pay",
Satispay => "satispay",
SepaDebit => "sepa_debit",
Sofort => "sofort",
Sunbit => "sunbit",
Swish => "swish",
Twint => "twint",
Upi => "upi",
UsBankAccount => "us_bank_account",
WechatPay => "wechat_pay",
Zip => "zip",
Unknown(v) => v,
}
}
}
impl std::str::FromStr for PaymentMethodType {
type Err = std::convert::Infallible;
fn from_str(s: &str) -> Result<Self, Self::Err> {
use PaymentMethodType::*;
match s {
"acss_debit" => Ok(AcssDebit),
"affirm" => Ok(Affirm),
"afterpay_clearpay" => Ok(AfterpayClearpay),
"alipay" => Ok(Alipay),
"alma" => Ok(Alma),
"amazon_pay" => Ok(AmazonPay),
"au_becs_debit" => Ok(AuBecsDebit),
"bacs_debit" => Ok(BacsDebit),
"bancontact" => Ok(Bancontact),
"billie" => Ok(Billie),
"blik" => Ok(Blik),
"boleto" => Ok(Boleto),
"card" => Ok(Card),
"card_present" => Ok(CardPresent),
"cashapp" => Ok(Cashapp),
"crypto" => Ok(Crypto),
"custom" => Ok(Custom),
"customer_balance" => Ok(CustomerBalance),
"eps" => Ok(Eps),
"fpx" => Ok(Fpx),
"giropay" => Ok(Giropay),
"grabpay" => Ok(Grabpay),
"ideal" => Ok(Ideal),
"interac_present" => Ok(InteracPresent),
"kakao_pay" => Ok(KakaoPay),
"klarna" => Ok(Klarna),
"konbini" => Ok(Konbini),
"kr_card" => Ok(KrCard),
"link" => Ok(Link),
"mb_way" => Ok(MbWay),
"mobilepay" => Ok(Mobilepay),
"multibanco" => Ok(Multibanco),
"naver_pay" => Ok(NaverPay),
"nz_bank_account" => Ok(NzBankAccount),
"oxxo" => Ok(Oxxo),
"p24" => Ok(P24),
"pay_by_bank" => Ok(PayByBank),
"payco" => Ok(Payco),
"paynow" => Ok(Paynow),
"paypal" => Ok(Paypal),
"payto" => Ok(Payto),
"pix" => Ok(Pix),
"promptpay" => Ok(Promptpay),
"revolut_pay" => Ok(RevolutPay),
"samsung_pay" => Ok(SamsungPay),
"satispay" => Ok(Satispay),
"sepa_debit" => Ok(SepaDebit),
"sofort" => Ok(Sofort),
"sunbit" => Ok(Sunbit),
"swish" => Ok(Swish),
"twint" => Ok(Twint),
"upi" => Ok(Upi),
"us_bank_account" => Ok(UsBankAccount),
"wechat_pay" => Ok(WechatPay),
"zip" => Ok(Zip),
v => {
tracing::warn!("Unknown value '{}' for enum '{}'", v, "PaymentMethodType");
Ok(Unknown(v.to_owned()))
}
}
}
}
impl std::fmt::Display for PaymentMethodType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(not(feature = "redact-generated-debug"))]
impl std::fmt::Debug for PaymentMethodType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(feature = "redact-generated-debug")]
impl std::fmt::Debug for PaymentMethodType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct(stringify!(PaymentMethodType)).finish_non_exhaustive()
}
}
#[cfg(feature = "serialize")]
impl serde::Serialize for PaymentMethodType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl miniserde::Deserialize for PaymentMethodType {
fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
crate::Place::new(out)
}
}
impl miniserde::de::Visitor for crate::Place<PaymentMethodType> {
fn string(&mut self, s: &str) -> miniserde::Result<()> {
use std::str::FromStr;
self.out = Some(PaymentMethodType::from_str(s).expect("infallible"));
Ok(())
}
}
stripe_types::impl_from_val_with_from_str!(PaymentMethodType);
#[cfg(feature = "deserialize")]
impl<'de> serde::Deserialize<'de> for PaymentMethodType {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
use std::str::FromStr;
let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
Ok(Self::from_str(&s).expect("infallible"))
}
}
impl stripe_types::Object for PaymentMethod {
type Id = stripe_shared::PaymentMethodId;
fn id(&self) -> &Self::Id {
&self.id
}
fn into_id(self) -> Self::Id {
self.id
}
}
stripe_types::def_id!(PaymentMethodId);
#[derive(Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum PaymentMethodAllowRedisplay {
Always,
Limited,
Unspecified,
Unknown(String),
}
impl PaymentMethodAllowRedisplay {
pub fn as_str(&self) -> &str {
use PaymentMethodAllowRedisplay::*;
match self {
Always => "always",
Limited => "limited",
Unspecified => "unspecified",
Unknown(v) => v,
}
}
}
impl std::str::FromStr for PaymentMethodAllowRedisplay {
type Err = std::convert::Infallible;
fn from_str(s: &str) -> Result<Self, Self::Err> {
use PaymentMethodAllowRedisplay::*;
match s {
"always" => Ok(Always),
"limited" => Ok(Limited),
"unspecified" => Ok(Unspecified),
v => {
tracing::warn!(
"Unknown value '{}' for enum '{}'",
v,
"PaymentMethodAllowRedisplay"
);
Ok(Unknown(v.to_owned()))
}
}
}
}
impl std::fmt::Display for PaymentMethodAllowRedisplay {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(not(feature = "redact-generated-debug"))]
impl std::fmt::Debug for PaymentMethodAllowRedisplay {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
#[cfg(feature = "redact-generated-debug")]
impl std::fmt::Debug for PaymentMethodAllowRedisplay {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct(stringify!(PaymentMethodAllowRedisplay)).finish_non_exhaustive()
}
}
impl serde::Serialize for PaymentMethodAllowRedisplay {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl miniserde::Deserialize for PaymentMethodAllowRedisplay {
fn begin(out: &mut Option<Self>) -> &mut dyn miniserde::de::Visitor {
crate::Place::new(out)
}
}
impl miniserde::de::Visitor for crate::Place<PaymentMethodAllowRedisplay> {
fn string(&mut self, s: &str) -> miniserde::Result<()> {
use std::str::FromStr;
self.out = Some(PaymentMethodAllowRedisplay::from_str(s).expect("infallible"));
Ok(())
}
}
stripe_types::impl_from_val_with_from_str!(PaymentMethodAllowRedisplay);
#[cfg(feature = "deserialize")]
impl<'de> serde::Deserialize<'de> for PaymentMethodAllowRedisplay {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
use std::str::FromStr;
let s: std::borrow::Cow<'de, str> = serde::Deserialize::deserialize(deserializer)?;
Ok(Self::from_str(&s).expect("infallible"))
}
}