use serde_derive::{Deserialize, Serialize};
use crate::config::{Client, Response};
use crate::ids::{CustomerId, PaymentMethodId, SetupIntentId};
use crate::params::{Expand, Expandable, List, Metadata, Object, RangeQuery, Timestamp};
use crate::resources::{
Account, ApiErrors, Application, Currency, Customer, Mandate, PaymentMethod, SetupAttempt,
};
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntent {
pub id: SetupIntentId,
#[serde(skip_serializing_if = "Option::is_none")]
pub application: Option<Box<Expandable<Application>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cancellation_reason: Option<Box<SetupIntentCancellationReason>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_secret: Option<Box<String>>,
pub created: Timestamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<Box<Expandable<Customer>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_setup_error: Option<Box<ApiErrors>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub latest_attempt: Option<Box<Expandable<SetupAttempt>>>,
pub livemode: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate: Option<Box<Expandable<Mandate>>>,
#[serde(default)]
pub metadata: Metadata,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_action: Option<Box<SetupIntentNextAction>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub on_behalf_of: Option<Box<Expandable<Account>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method: Option<Box<Expandable<PaymentMethod>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_options: Option<Box<SetupIntentPaymentMethodOptions>>,
pub payment_method_types: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub single_use_mandate: Option<Box<Expandable<Mandate>>>,
pub status: SetupIntentStatus,
pub usage: String,
}
impl SetupIntent {
pub fn list(client: &Client, params: ListSetupIntents<'_>) -> Response<List<SetupIntent>> {
client.get_query("/setup_intents", ¶ms)
}
pub fn create(client: &Client, params: CreateSetupIntent<'_>) -> Response<SetupIntent> {
client.post_form("/setup_intents", ¶ms)
}
pub fn retrieve(client: &Client, id: &SetupIntentId, expand: &[&str]) -> Response<SetupIntent> {
client.get_query(&format!("/setup_intents/{}", id), &Expand { expand })
}
pub fn update(
client: &Client,
id: &SetupIntentId,
params: UpdateSetupIntent<'_>,
) -> Response<SetupIntent> {
client.post_form(&format!("/setup_intents/{}", id), ¶ms)
}
}
impl Object for SetupIntent {
type Id = SetupIntentId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"setup_intent"
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentNextAction {
#[serde(skip_serializing_if = "Option::is_none")]
pub redirect_to_url: Option<Box<SetupIntentNextActionRedirectToUrl>>,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub use_stripe_sdk: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verify_with_microdeposits: Option<Box<SetupIntentNextActionVerifyWithMicrodeposits>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentNextActionRedirectToUrl {
#[serde(skip_serializing_if = "Option::is_none")]
pub return_url: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<Box<String>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentNextActionVerifyWithMicrodeposits {
pub arrival_date: Timestamp,
pub hosted_verification_url: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentPaymentMethodOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub acss_debit: Option<Box<SetupIntentPaymentMethodOptionsAcssDebit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card: Option<Box<SetupIntentPaymentMethodOptionsCard>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit: Option<Box<SetupIntentPaymentMethodOptionsSepaDebit>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentPaymentMethodOptionsAcssDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_options: Option<Box<SetupIntentPaymentMethodOptionsMandateOptionsAcssDebit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification_method:
Option<Box<SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentPaymentMethodOptionsCard {
#[serde(skip_serializing_if = "Option::is_none")]
pub request_three_d_secure: Option<Box<SetupIntentPaymentMethodOptionsCardRequestThreeDSecure>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentPaymentMethodOptionsMandateOptionsAcssDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_mandate_url: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_for:
Option<Box<Vec<SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_description: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_schedule:
Option<Box<SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_type:
Option<Box<SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentPaymentMethodOptionsSepaDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_options: Option<Box<SetupIntentPaymentMethodOptionsMandateOptionsSepaDebit>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SetupIntentPaymentMethodOptionsMandateOptionsSepaDebit {}
#[derive(Clone, Debug, Serialize, Default)]
pub struct CreateSetupIntent<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub confirm: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<CustomerId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<&'a str>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_data: Option<Box<CreateSetupIntentMandateData>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub on_behalf_of: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method: Option<PaymentMethodId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_options: Option<Box<CreateSetupIntentPaymentMethodOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_types: Option<Box<Vec<String>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_url: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub single_use: Option<Box<CreateSetupIntentSingleUse>>,
}
impl<'a> CreateSetupIntent<'a> {
pub fn new() -> Self {
CreateSetupIntent {
confirm: Default::default(),
customer: Default::default(),
description: Default::default(),
expand: Default::default(),
mandate_data: Default::default(),
metadata: Default::default(),
on_behalf_of: Default::default(),
payment_method: Default::default(),
payment_method_options: Default::default(),
payment_method_types: Default::default(),
return_url: Default::default(),
single_use: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct ListSetupIntents<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<RangeQuery<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<CustomerId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ending_before: Option<SetupIntentId>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method: Option<PaymentMethodId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starting_after: Option<SetupIntentId>,
}
impl<'a> ListSetupIntents<'a> {
pub fn new() -> Self {
ListSetupIntents {
created: Default::default(),
customer: Default::default(),
ending_before: Default::default(),
expand: Default::default(),
limit: Default::default(),
payment_method: Default::default(),
starting_after: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct UpdateSetupIntent<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<CustomerId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<&'a str>,
#[serde(skip_serializing_if = "Expand::is_empty")]
pub expand: &'a [&'a str],
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method: Option<PaymentMethodId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_options: Option<Box<UpdateSetupIntentPaymentMethodOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_types: Option<Box<Vec<String>>>,
}
impl<'a> UpdateSetupIntent<'a> {
pub fn new() -> Self {
UpdateSetupIntent {
customer: Default::default(),
description: Default::default(),
expand: Default::default(),
metadata: Default::default(),
payment_method: Default::default(),
payment_method_options: Default::default(),
payment_method_types: Default::default(),
}
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentMandateData {
pub customer_acceptance: CreateSetupIntentMandateDataCustomerAcceptance,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentPaymentMethodOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub acss_debit: Option<Box<CreateSetupIntentPaymentMethodOptionsAcssDebit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card: Option<Box<CreateSetupIntentPaymentMethodOptionsCard>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit: Option<Box<CreateSetupIntentPaymentMethodOptionsSepaDebit>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentSingleUse {
pub amount: i64,
pub currency: Currency,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSetupIntentPaymentMethodOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub acss_debit: Option<Box<UpdateSetupIntentPaymentMethodOptionsAcssDebit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card: Option<Box<UpdateSetupIntentPaymentMethodOptionsCard>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit: Option<Box<UpdateSetupIntentPaymentMethodOptionsSepaDebit>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentMandateDataCustomerAcceptance {
#[serde(skip_serializing_if = "Option::is_none")]
pub accepted_at: Option<Box<Timestamp>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offline: Option<Box<CreateSetupIntentMandateDataCustomerAcceptanceOffline>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub online: Option<Box<CreateSetupIntentMandateDataCustomerAcceptanceOnline>>,
#[serde(rename = "type")]
pub type_: CreateSetupIntentMandateDataCustomerAcceptanceType,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentPaymentMethodOptionsAcssDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_options: Option<Box<CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification_method:
Option<Box<CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentPaymentMethodOptionsCard {
#[serde(skip_serializing_if = "Option::is_none")]
pub request_three_d_secure:
Option<Box<CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentPaymentMethodOptionsSepaDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_options: Option<Box<CreateSetupIntentPaymentMethodOptionsSepaDebitMandateOptions>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSetupIntentPaymentMethodOptionsAcssDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_options: Option<Box<UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptions>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification_method:
Option<Box<UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSetupIntentPaymentMethodOptionsCard {
#[serde(skip_serializing_if = "Option::is_none")]
pub request_three_d_secure:
Option<Box<UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSetupIntentPaymentMethodOptionsSepaDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate_options: Option<Box<UpdateSetupIntentPaymentMethodOptionsSepaDebitMandateOptions>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentMandateDataCustomerAcceptanceOffline {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentMandateDataCustomerAcceptanceOnline {
pub ip_address: String,
pub user_agent: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_mandate_url: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_for:
Option<Box<Vec<CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_description: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_schedule:
Option<Box<CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_type:
Option<Box<CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CreateSetupIntentPaymentMethodOptionsSepaDebitMandateOptions {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub custom_mandate_url: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_for:
Option<Box<Vec<UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_description: Option<Box<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_schedule:
Option<Box<UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_type:
Option<Box<UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType>>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct UpdateSetupIntentPaymentMethodOptionsSepaDebitMandateOptions {}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSetupIntentMandateDataCustomerAcceptanceType {
Offline,
Online,
}
impl CreateSetupIntentMandateDataCustomerAcceptanceType {
pub fn as_str(self) -> &'static str {
match self {
CreateSetupIntentMandateDataCustomerAcceptanceType::Offline => "offline",
CreateSetupIntentMandateDataCustomerAcceptanceType::Online => "online",
}
}
}
impl AsRef<str> for CreateSetupIntentMandateDataCustomerAcceptanceType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CreateSetupIntentMandateDataCustomerAcceptanceType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
Invoice,
Subscription,
}
impl CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
pub fn as_str(self) -> &'static str {
match self {
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor::Invoice => "invoice",
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor::Subscription => "subscription",
}
}
}
impl AsRef<str> for CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule {
Combined,
Interval,
Sporadic,
}
impl CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule {
pub fn as_str(self) -> &'static str {
match self {
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule::Combined => "combined",
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule::Interval => "interval",
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule::Sporadic => "sporadic",
}
}
}
impl AsRef<str> for CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display
for CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule
{
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType {
Business,
Personal,
}
impl CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType {
pub fn as_str(self) -> &'static str {
match self {
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType::Business => "business",
CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType::Personal => "personal",
}
}
}
impl AsRef<str> for CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display
for CreateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType
{
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
Automatic,
Instant,
Microdeposits,
}
impl CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
pub fn as_str(self) -> &'static str {
match self {
CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Automatic => {
"automatic"
}
CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Instant => "instant",
CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Microdeposits => {
"microdeposits"
}
}
}
}
impl AsRef<str> for CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CreateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
Any,
Automatic,
}
impl CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
pub fn as_str(self) -> &'static str {
match self {
CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure::Any => "any",
CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure::Automatic => "automatic",
}
}
}
impl AsRef<str> for CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for CreateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentCancellationReason {
Abandoned,
Duplicate,
RequestedByCustomer,
}
impl SetupIntentCancellationReason {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentCancellationReason::Abandoned => "abandoned",
SetupIntentCancellationReason::Duplicate => "duplicate",
SetupIntentCancellationReason::RequestedByCustomer => "requested_by_customer",
}
}
}
impl AsRef<str> for SetupIntentCancellationReason {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentCancellationReason {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
Automatic,
Instant,
Microdeposits,
}
impl SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Automatic => "automatic",
SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Instant => "instant",
SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Microdeposits => {
"microdeposits"
}
}
}
}
impl AsRef<str> for SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
Any,
Automatic,
ChallengeOnly,
}
impl SetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentPaymentMethodOptionsCardRequestThreeDSecure::Any => "any",
SetupIntentPaymentMethodOptionsCardRequestThreeDSecure::Automatic => "automatic",
SetupIntentPaymentMethodOptionsCardRequestThreeDSecure::ChallengeOnly => {
"challenge_only"
}
}
}
}
impl AsRef<str> for SetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor {
Invoice,
Subscription,
}
impl SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor::Invoice => "invoice",
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor::Subscription => {
"subscription"
}
}
}
}
impl AsRef<str> for SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitDefaultFor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule {
Combined,
Interval,
Sporadic,
}
impl SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule::Combined => {
"combined"
}
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule::Interval => {
"interval"
}
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule::Sporadic => {
"sporadic"
}
}
}
}
impl AsRef<str> for SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitPaymentSchedule {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType {
Business,
Personal,
}
impl SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType::Business => {
"business"
}
SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType::Personal => {
"personal"
}
}
}
}
impl AsRef<str> for SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentPaymentMethodOptionsMandateOptionsAcssDebitTransactionType {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SetupIntentStatus {
Canceled,
Processing,
RequiresAction,
RequiresConfirmation,
RequiresPaymentMethod,
Succeeded,
}
impl SetupIntentStatus {
pub fn as_str(self) -> &'static str {
match self {
SetupIntentStatus::Canceled => "canceled",
SetupIntentStatus::Processing => "processing",
SetupIntentStatus::RequiresAction => "requires_action",
SetupIntentStatus::RequiresConfirmation => "requires_confirmation",
SetupIntentStatus::RequiresPaymentMethod => "requires_payment_method",
SetupIntentStatus::Succeeded => "succeeded",
}
}
}
impl AsRef<str> for SetupIntentStatus {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for SetupIntentStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
Invoice,
Subscription,
}
impl UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
pub fn as_str(self) -> &'static str {
match self {
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor::Invoice => "invoice",
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor::Subscription => "subscription",
}
}
}
impl AsRef<str> for UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsDefaultFor {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule {
Combined,
Interval,
Sporadic,
}
impl UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule {
pub fn as_str(self) -> &'static str {
match self {
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule::Combined => "combined",
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule::Interval => "interval",
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule::Sporadic => "sporadic",
}
}
}
impl AsRef<str> for UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display
for UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsPaymentSchedule
{
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType {
Business,
Personal,
}
impl UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType {
pub fn as_str(self) -> &'static str {
match self {
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType::Business => "business",
UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType::Personal => "personal",
}
}
}
impl AsRef<str> for UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display
for UpdateSetupIntentPaymentMethodOptionsAcssDebitMandateOptionsTransactionType
{
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
Automatic,
Instant,
Microdeposits,
}
impl UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
pub fn as_str(self) -> &'static str {
match self {
UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Automatic => {
"automatic"
}
UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Instant => "instant",
UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod::Microdeposits => {
"microdeposits"
}
}
}
}
impl AsRef<str> for UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for UpdateSetupIntentPaymentMethodOptionsAcssDebitVerificationMethod {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
Any,
Automatic,
}
impl UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
pub fn as_str(self) -> &'static str {
match self {
UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure::Any => "any",
UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure::Automatic => "automatic",
}
}
}
impl AsRef<str> for UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for UpdateSetupIntentPaymentMethodOptionsCardRequestThreeDSecure {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}