use crate::config::{Client, Response};
use crate::ids::{ChargeId, CustomerId, PaymentIntentId};
use crate::params::{Expand, Expandable, List, Metadata, Object, RangeQuery, Timestamp};
use crate::resources::{
Account, Address, Application, ApplicationFee, BalanceTransaction, BillingDetails,
ChargeSourceParams, Currency, Customer, FraudDetailsReport, Invoice, Mandate, Order,
PaymentIntent, PaymentMethod, PaymentMethodDetailsCardInstallmentsPlan,
PaymentMethodDetailsCardPresent, Refund, Review, Shipping, ThreeDSecureDetails, Transfer,
};
use serde_derive::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Charge {
pub id: ChargeId,
pub amount: i64,
pub amount_captured: i64,
pub amount_refunded: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub application: Option<Expandable<Application>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee: Option<Expandable<ApplicationFee>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub balance_transaction: Option<Expandable<BalanceTransaction>>,
pub billing_details: BillingDetails,
#[serde(skip_serializing_if = "Option::is_none")]
pub calculated_statement_descriptor: Option<String>,
pub captured: bool,
pub created: Timestamp,
pub currency: Currency,
#[serde(skip_serializing_if = "Option::is_none")]
pub customer: Option<Expandable<Customer>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub disputed: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fraud_details: Option<FraudDetails>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice: Option<Expandable<Invoice>>,
pub livemode: bool,
pub metadata: Metadata,
#[serde(skip_serializing_if = "Option::is_none")]
pub on_behalf_of: Option<Expandable<Account>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<Expandable<Order>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub outcome: Option<ChargeOutcome>,
pub paid: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_intent: Option<Expandable<PaymentIntent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_method_details: Option<PaymentMethodDetails>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_url: Option<String>,
pub refunded: bool,
pub refunds: List<Refund>,
#[serde(skip_serializing_if = "Option::is_none")]
pub review: Option<Expandable<Review>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shipping: Option<Shipping>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source_transfer: Option<Expandable<Transfer>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_suffix: Option<String>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer: Option<Expandable<Transfer>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<TransferData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_group: Option<String>,
}
impl Charge {
pub fn list(client: &Client, params: ListCharges<'_>) -> Response<List<Charge>> {
client.get_query("/charges", ¶ms)
}
pub fn create(client: &Client, params: CreateCharge<'_>) -> Response<Charge> {
client.post_form("/charges", ¶ms)
}
pub fn retrieve(client: &Client, id: &ChargeId, expand: &[&str]) -> Response<Charge> {
client.get_query(&format!("/charges/{}", id), &Expand { expand })
}
pub fn update(client: &Client, id: &ChargeId, params: UpdateCharge<'_>) -> Response<Charge> {
client.post_form(&format!("/charges/{}", id), ¶ms)
}
}
impl Object for Charge {
type Id = ChargeId;
fn id(&self) -> Self::Id {
self.id.clone()
}
fn object(&self) -> &'static str {
"charge"
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct FraudDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub stripe_report: Option<FraudDetailsReport>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_report: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct ChargeOutcome {
#[serde(skip_serializing_if = "Option::is_none")]
pub network_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub risk_level: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub risk_score: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rule: Option<Expandable<Rule>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seller_message: Option<String>,
#[serde(rename = "type")]
pub type_: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TransferData {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount: Option<i64>,
pub destination: Expandable<Account>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub ach_credit_transfer: Option<PaymentMethodDetailsAchCreditTransfer>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ach_debit: Option<PaymentMethodDetailsAchDebit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub alipay: Option<PaymentFlowsPrivatePaymentMethodsAlipayDetails>,
#[serde(skip_serializing_if = "Option::is_none")]
pub au_becs_debit: Option<PaymentMethodDetailsAuBecsDebit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bacs_debit: Option<PaymentMethodDetailsBacsDebit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bancontact: Option<PaymentMethodDetailsBancontact>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card: Option<PaymentMethodDetailsCard>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_present: Option<PaymentMethodDetailsCardPresent>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eps: Option<PaymentMethodDetailsEps>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fpx: Option<PaymentMethodDetailsFpx>,
#[serde(skip_serializing_if = "Option::is_none")]
pub giropay: Option<PaymentMethodDetailsGiropay>,
#[serde(skip_serializing_if = "Option::is_none")]
pub grabpay: Option<PaymentMethodDetailsGrabpay>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ideal: Option<PaymentMethodDetailsIdeal>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interac_present: Option<PaymentMethodDetailsInteracPresent>,
#[serde(skip_serializing_if = "Option::is_none")]
pub klarna: Option<PaymentMethodDetailsKlarna>,
#[serde(skip_serializing_if = "Option::is_none")]
pub multibanco: Option<PaymentMethodDetailsMultibanco>,
#[serde(skip_serializing_if = "Option::is_none")]
pub oxxo: Option<PaymentMethodDetailsOxxo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub p24: Option<PaymentMethodDetailsP24>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sepa_debit: Option<PaymentMethodDetailsSepaDebit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sofort: Option<PaymentMethodDetailsSofort>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stripe_account: Option<PaymentMethodDetailsStripeAccount>,
#[serde(rename = "type")]
pub type_: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub wechat: Option<PaymentMethodDetailsWechat>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentFlowsPrivatePaymentMethodsAlipayDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_id: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsAchCreditTransfer {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub routing_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub swift_code: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsAchDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_holder_type: Option<PaymentMethodDetailsAchDebitAccountHolderType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub routing_number: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsAuBecsDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub bsb_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsBacsDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_code: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsBancontact {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bic: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_sepa_debit: Option<Expandable<PaymentMethod>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_sepa_debit_mandate: Option<Expandable<Mandate>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iban_last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preferred_language: Option<PaymentMethodDetailsBancontactPreferredLanguage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCard {
#[serde(skip_serializing_if = "Option::is_none")]
pub brand: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub checks: Option<PaymentMethodDetailsCardChecks>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
pub exp_month: i64,
pub exp_year: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub funding: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub installments: Option<PaymentMethodDetailsCardInstallments>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub three_d_secure: Option<ThreeDSecureDetails>,
#[serde(skip_serializing_if = "Option::is_none")]
pub wallet: Option<PaymentMethodDetailsCardWallet>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardChecks {
#[serde(skip_serializing_if = "Option::is_none")]
pub address_line1_check: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_postal_code_check: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cvc_check: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardInstallments {
#[serde(skip_serializing_if = "Option::is_none")]
pub plan: Option<PaymentMethodDetailsCardInstallmentsPlan>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWallet {
#[serde(skip_serializing_if = "Option::is_none")]
pub amex_express_checkout: Option<PaymentMethodDetailsCardWalletAmexExpressCheckout>,
#[serde(skip_serializing_if = "Option::is_none")]
pub apple_pay: Option<PaymentMethodDetailsCardWalletApplePay>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub google_pay: Option<PaymentMethodDetailsCardWalletGooglePay>,
#[serde(skip_serializing_if = "Option::is_none")]
pub masterpass: Option<PaymentMethodDetailsCardWalletMasterpass>,
#[serde(skip_serializing_if = "Option::is_none")]
pub samsung_pay: Option<PaymentMethodDetailsCardWalletSamsungPay>,
#[serde(rename = "type")]
pub type_: PaymentMethodDetailsCardWalletType,
#[serde(skip_serializing_if = "Option::is_none")]
pub visa_checkout: Option<PaymentMethodDetailsCardWalletVisaCheckout>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWalletAmexExpressCheckout {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWalletApplePay {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWalletGooglePay {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWalletMasterpass {
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shipping_address: Option<Address>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWalletSamsungPay {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsCardWalletVisaCheckout {
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shipping_address: Option<Address>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsEps {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank: Option<PaymentMethodDetailsEpsBank>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsFpx {
pub bank: PaymentMethodDetailsFpxBank,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_id: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsGiropay {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bic: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsGrabpay {
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_id: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsIdeal {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank: Option<PaymentMethodDetailsIdealBank>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bic: Option<PaymentMethodDetailsIdealBic>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_sepa_debit: Option<Expandable<PaymentMethod>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_sepa_debit_mandate: Option<Expandable<Mandate>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iban_last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsInteracPresent {
#[serde(skip_serializing_if = "Option::is_none")]
pub brand: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cardholder_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub emv_auth_data: Option<String>,
pub exp_month: i64,
pub exp_year: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub funding: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_card: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preferred_locales: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub read_method: Option<PaymentMethodDetailsInteracPresentReadMethod>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt: Option<PaymentMethodDetailsInteracPresentReceipt>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsInteracPresentReceipt {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_type: Option<PaymentMethodDetailsInteracPresentReceiptAccountType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_cryptogram: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_preferred_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authorization_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authorization_response_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cardholder_verification_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dedicated_file_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub terminal_verification_results: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_status_information: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsKlarna {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsMultibanco {
#[serde(skip_serializing_if = "Option::is_none")]
pub entity: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reference: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsOxxo {
#[serde(skip_serializing_if = "Option::is_none")]
pub number: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsP24 {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank: Option<PaymentMethodDetailsP24Bank>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reference: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsSepaDebit {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub branch_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mandate: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsSofort {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bic: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_sepa_debit: Option<Expandable<PaymentMethod>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generated_sepa_debit_mandate: Option<Expandable<Mandate>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub iban_last4: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preferred_language: Option<PaymentMethodDetailsSofortPreferredLanguage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified_name: Option<String>,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsStripeAccount {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct PaymentMethodDetailsWechat {}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Rule {
pub action: String,
pub id: String,
pub predicate: String,
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct CreateCharge<'a> {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub application_fee_amount: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capture: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<Currency>,
#[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 on_behalf_of: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_email: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shipping: Option<Shipping>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<ChargeSourceParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statement_descriptor_suffix: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_data: Option<TransferDataParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_group: Option<&'a str>,
}
impl<'a> CreateCharge<'a> {
pub fn new() -> Self {
CreateCharge {
amount: Default::default(),
application_fee: Default::default(),
application_fee_amount: Default::default(),
capture: Default::default(),
currency: Default::default(),
customer: Default::default(),
description: Default::default(),
expand: Default::default(),
metadata: Default::default(),
on_behalf_of: Default::default(),
receipt_email: Default::default(),
shipping: Default::default(),
source: Default::default(),
statement_descriptor: Default::default(),
statement_descriptor_suffix: Default::default(),
transfer_data: Default::default(),
transfer_group: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct ListCharges<'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<ChargeId>,
#[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_intent: Option<PaymentIntentId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub starting_after: Option<ChargeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_group: Option<&'a str>,
}
impl<'a> ListCharges<'a> {
pub fn new() -> Self {
ListCharges {
created: Default::default(),
customer: Default::default(),
ending_before: Default::default(),
expand: Default::default(),
limit: Default::default(),
payment_intent: Default::default(),
starting_after: Default::default(),
transfer_group: Default::default(),
}
}
}
#[derive(Clone, Debug, Serialize, Default)]
pub struct UpdateCharge<'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 fraud_details: Option<FraudDetailsParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub receipt_email: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub shipping: Option<Shipping>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transfer_group: Option<&'a str>,
}
impl<'a> UpdateCharge<'a> {
pub fn new() -> Self {
UpdateCharge {
customer: Default::default(),
description: Default::default(),
expand: Default::default(),
fraud_details: Default::default(),
metadata: Default::default(),
receipt_email: Default::default(),
shipping: Default::default(),
transfer_group: Default::default(),
}
}
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct FraudDetailsParams {
pub user_report: FraudDetailsReport,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TransferDataParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub amount: Option<i64>,
pub destination: String,
}
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum PaymentMethodDetailsAchDebitAccountHolderType {
Company,
Individual,
}
impl PaymentMethodDetailsAchDebitAccountHolderType {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsAchDebitAccountHolderType::Company => "company",
PaymentMethodDetailsAchDebitAccountHolderType::Individual => "individual",
}
}
}
impl AsRef<str> for PaymentMethodDetailsAchDebitAccountHolderType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsAchDebitAccountHolderType {
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 PaymentMethodDetailsBancontactPreferredLanguage {
De,
En,
Fr,
Nl,
}
impl PaymentMethodDetailsBancontactPreferredLanguage {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsBancontactPreferredLanguage::De => "de",
PaymentMethodDetailsBancontactPreferredLanguage::En => "en",
PaymentMethodDetailsBancontactPreferredLanguage::Fr => "fr",
PaymentMethodDetailsBancontactPreferredLanguage::Nl => "nl",
}
}
}
impl AsRef<str> for PaymentMethodDetailsBancontactPreferredLanguage {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsBancontactPreferredLanguage {
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 PaymentMethodDetailsCardWalletType {
AmexExpressCheckout,
ApplePay,
GooglePay,
Masterpass,
SamsungPay,
VisaCheckout,
}
impl PaymentMethodDetailsCardWalletType {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsCardWalletType::AmexExpressCheckout => "amex_express_checkout",
PaymentMethodDetailsCardWalletType::ApplePay => "apple_pay",
PaymentMethodDetailsCardWalletType::GooglePay => "google_pay",
PaymentMethodDetailsCardWalletType::Masterpass => "masterpass",
PaymentMethodDetailsCardWalletType::SamsungPay => "samsung_pay",
PaymentMethodDetailsCardWalletType::VisaCheckout => "visa_checkout",
}
}
}
impl AsRef<str> for PaymentMethodDetailsCardWalletType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsCardWalletType {
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 PaymentMethodDetailsEpsBank {
ArzteUndApothekerBank,
AustrianAnadiBankAg,
BankAustria,
BankhausCarlSpangler,
BankhausSchelhammerUndSchatteraAg,
BawagPskAg,
BksBankAg,
BrullKallmusBankAg,
BtvVierLanderBank,
CapitalBankGraweGruppeAg,
Dolomitenbank,
EasybankAg,
ErsteBankUndSparkassen,
HypoAlpeadriabankInternationalAg,
HypoBankBurgenlandAktiengesellschaft,
HypoNoeLbFurNiederosterreichUWien,
HypoOberosterreichSalzburgSteiermark,
HypoTirolBankAg,
HypoVorarlbergBankAg,
MarchfelderBank,
OberbankAg,
RaiffeisenBankengruppeOsterreich,
SchoellerbankAg,
SpardaBankWien,
VolksbankGruppe,
VolkskreditbankAg,
VrBankBraunau,
}
impl PaymentMethodDetailsEpsBank {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsEpsBank::ArzteUndApothekerBank => "arzte_und_apotheker_bank",
PaymentMethodDetailsEpsBank::AustrianAnadiBankAg => "austrian_anadi_bank_ag",
PaymentMethodDetailsEpsBank::BankAustria => "bank_austria",
PaymentMethodDetailsEpsBank::BankhausCarlSpangler => "bankhaus_carl_spangler",
PaymentMethodDetailsEpsBank::BankhausSchelhammerUndSchatteraAg => {
"bankhaus_schelhammer_und_schattera_ag"
}
PaymentMethodDetailsEpsBank::BawagPskAg => "bawag_psk_ag",
PaymentMethodDetailsEpsBank::BksBankAg => "bks_bank_ag",
PaymentMethodDetailsEpsBank::BrullKallmusBankAg => "brull_kallmus_bank_ag",
PaymentMethodDetailsEpsBank::BtvVierLanderBank => "btv_vier_lander_bank",
PaymentMethodDetailsEpsBank::CapitalBankGraweGruppeAg => "capital_bank_grawe_gruppe_ag",
PaymentMethodDetailsEpsBank::Dolomitenbank => "dolomitenbank",
PaymentMethodDetailsEpsBank::EasybankAg => "easybank_ag",
PaymentMethodDetailsEpsBank::ErsteBankUndSparkassen => "erste_bank_und_sparkassen",
PaymentMethodDetailsEpsBank::HypoAlpeadriabankInternationalAg => {
"hypo_alpeadriabank_international_ag"
}
PaymentMethodDetailsEpsBank::HypoBankBurgenlandAktiengesellschaft => {
"hypo_bank_burgenland_aktiengesellschaft"
}
PaymentMethodDetailsEpsBank::HypoNoeLbFurNiederosterreichUWien => {
"hypo_noe_lb_fur_niederosterreich_u_wien"
}
PaymentMethodDetailsEpsBank::HypoOberosterreichSalzburgSteiermark => {
"hypo_oberosterreich_salzburg_steiermark"
}
PaymentMethodDetailsEpsBank::HypoTirolBankAg => "hypo_tirol_bank_ag",
PaymentMethodDetailsEpsBank::HypoVorarlbergBankAg => "hypo_vorarlberg_bank_ag",
PaymentMethodDetailsEpsBank::MarchfelderBank => "marchfelder_bank",
PaymentMethodDetailsEpsBank::OberbankAg => "oberbank_ag",
PaymentMethodDetailsEpsBank::RaiffeisenBankengruppeOsterreich => {
"raiffeisen_bankengruppe_osterreich"
}
PaymentMethodDetailsEpsBank::SchoellerbankAg => "schoellerbank_ag",
PaymentMethodDetailsEpsBank::SpardaBankWien => "sparda_bank_wien",
PaymentMethodDetailsEpsBank::VolksbankGruppe => "volksbank_gruppe",
PaymentMethodDetailsEpsBank::VolkskreditbankAg => "volkskreditbank_ag",
PaymentMethodDetailsEpsBank::VrBankBraunau => "vr_bank_braunau",
}
}
}
impl AsRef<str> for PaymentMethodDetailsEpsBank {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsEpsBank {
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 PaymentMethodDetailsFpxBank {
AffinBank,
AllianceBank,
Ambank,
BankIslam,
BankMuamalat,
BankRakyat,
Bsn,
Cimb,
DeutscheBank,
HongLeongBank,
Hsbc,
Kfh,
Maybank2e,
Maybank2u,
Ocbc,
PbEnterprise,
PublicBank,
Rhb,
StandardChartered,
Uob,
}
impl PaymentMethodDetailsFpxBank {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsFpxBank::AffinBank => "affin_bank",
PaymentMethodDetailsFpxBank::AllianceBank => "alliance_bank",
PaymentMethodDetailsFpxBank::Ambank => "ambank",
PaymentMethodDetailsFpxBank::BankIslam => "bank_islam",
PaymentMethodDetailsFpxBank::BankMuamalat => "bank_muamalat",
PaymentMethodDetailsFpxBank::BankRakyat => "bank_rakyat",
PaymentMethodDetailsFpxBank::Bsn => "bsn",
PaymentMethodDetailsFpxBank::Cimb => "cimb",
PaymentMethodDetailsFpxBank::DeutscheBank => "deutsche_bank",
PaymentMethodDetailsFpxBank::HongLeongBank => "hong_leong_bank",
PaymentMethodDetailsFpxBank::Hsbc => "hsbc",
PaymentMethodDetailsFpxBank::Kfh => "kfh",
PaymentMethodDetailsFpxBank::Maybank2e => "maybank2e",
PaymentMethodDetailsFpxBank::Maybank2u => "maybank2u",
PaymentMethodDetailsFpxBank::Ocbc => "ocbc",
PaymentMethodDetailsFpxBank::PbEnterprise => "pb_enterprise",
PaymentMethodDetailsFpxBank::PublicBank => "public_bank",
PaymentMethodDetailsFpxBank::Rhb => "rhb",
PaymentMethodDetailsFpxBank::StandardChartered => "standard_chartered",
PaymentMethodDetailsFpxBank::Uob => "uob",
}
}
}
impl AsRef<str> for PaymentMethodDetailsFpxBank {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsFpxBank {
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 PaymentMethodDetailsIdealBank {
AbnAmro,
AsnBank,
Bunq,
Handelsbanken,
Ing,
Knab,
Moneyou,
Rabobank,
Regiobank,
SnsBank,
TriodosBank,
VanLanschot,
}
impl PaymentMethodDetailsIdealBank {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsIdealBank::AbnAmro => "abn_amro",
PaymentMethodDetailsIdealBank::AsnBank => "asn_bank",
PaymentMethodDetailsIdealBank::Bunq => "bunq",
PaymentMethodDetailsIdealBank::Handelsbanken => "handelsbanken",
PaymentMethodDetailsIdealBank::Ing => "ing",
PaymentMethodDetailsIdealBank::Knab => "knab",
PaymentMethodDetailsIdealBank::Moneyou => "moneyou",
PaymentMethodDetailsIdealBank::Rabobank => "rabobank",
PaymentMethodDetailsIdealBank::Regiobank => "regiobank",
PaymentMethodDetailsIdealBank::SnsBank => "sns_bank",
PaymentMethodDetailsIdealBank::TriodosBank => "triodos_bank",
PaymentMethodDetailsIdealBank::VanLanschot => "van_lanschot",
}
}
}
impl AsRef<str> for PaymentMethodDetailsIdealBank {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsIdealBank {
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 PaymentMethodDetailsIdealBic {
#[serde(rename = "ABNANL2A")]
Abnanl2a,
#[serde(rename = "ASNBNL21")]
Asnbnl21,
#[serde(rename = "BUNQNL2A")]
Bunqnl2a,
#[serde(rename = "FVLBNL22")]
Fvlbnl22,
#[serde(rename = "HANDNL2A")]
Handnl2a,
#[serde(rename = "INGBNL2A")]
Ingbnl2a,
#[serde(rename = "KNABNL2H")]
Knabnl2h,
#[serde(rename = "MOYONL21")]
Moyonl21,
#[serde(rename = "RABONL2U")]
Rabonl2u,
#[serde(rename = "RBRBNL21")]
Rbrbnl21,
#[serde(rename = "SNSBNL2A")]
Snsbnl2a,
#[serde(rename = "TRIONL2U")]
Trionl2u,
}
impl PaymentMethodDetailsIdealBic {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsIdealBic::Abnanl2a => "ABNANL2A",
PaymentMethodDetailsIdealBic::Asnbnl21 => "ASNBNL21",
PaymentMethodDetailsIdealBic::Bunqnl2a => "BUNQNL2A",
PaymentMethodDetailsIdealBic::Fvlbnl22 => "FVLBNL22",
PaymentMethodDetailsIdealBic::Handnl2a => "HANDNL2A",
PaymentMethodDetailsIdealBic::Ingbnl2a => "INGBNL2A",
PaymentMethodDetailsIdealBic::Knabnl2h => "KNABNL2H",
PaymentMethodDetailsIdealBic::Moyonl21 => "MOYONL21",
PaymentMethodDetailsIdealBic::Rabonl2u => "RABONL2U",
PaymentMethodDetailsIdealBic::Rbrbnl21 => "RBRBNL21",
PaymentMethodDetailsIdealBic::Snsbnl2a => "SNSBNL2A",
PaymentMethodDetailsIdealBic::Trionl2u => "TRIONL2U",
}
}
}
impl AsRef<str> for PaymentMethodDetailsIdealBic {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsIdealBic {
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 PaymentMethodDetailsInteracPresentReadMethod {
ContactEmv,
ContactlessEmv,
ContactlessMagstripeMode,
MagneticStripeFallback,
MagneticStripeTrack2,
}
impl PaymentMethodDetailsInteracPresentReadMethod {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsInteracPresentReadMethod::ContactEmv => "contact_emv",
PaymentMethodDetailsInteracPresentReadMethod::ContactlessEmv => "contactless_emv",
PaymentMethodDetailsInteracPresentReadMethod::ContactlessMagstripeMode => {
"contactless_magstripe_mode"
}
PaymentMethodDetailsInteracPresentReadMethod::MagneticStripeFallback => {
"magnetic_stripe_fallback"
}
PaymentMethodDetailsInteracPresentReadMethod::MagneticStripeTrack2 => {
"magnetic_stripe_track2"
}
}
}
}
impl AsRef<str> for PaymentMethodDetailsInteracPresentReadMethod {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsInteracPresentReadMethod {
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 PaymentMethodDetailsInteracPresentReceiptAccountType {
Checking,
Savings,
Unknown,
}
impl PaymentMethodDetailsInteracPresentReceiptAccountType {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsInteracPresentReceiptAccountType::Checking => "checking",
PaymentMethodDetailsInteracPresentReceiptAccountType::Savings => "savings",
PaymentMethodDetailsInteracPresentReceiptAccountType::Unknown => "unknown",
}
}
}
impl AsRef<str> for PaymentMethodDetailsInteracPresentReceiptAccountType {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsInteracPresentReceiptAccountType {
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 PaymentMethodDetailsP24Bank {
AliorBank,
BankMillennium,
BankNowyBfgSa,
BankPekaoSa,
BankiSpbdzielcze,
Blik,
BnpParibas,
Boz,
CitiHandlowy,
CreditAgricole,
Envelobank,
EtransferPocztowy24,
GetinBank,
Ideabank,
Ing,
Inteligo,
MbankMtransfer,
NestPrzelew,
NoblePay,
PbacZIpko,
PlusBank,
SantanderPrzelew24,
TmobileUsbugiBankowe,
ToyotaBank,
VolkswagenBank,
}
impl PaymentMethodDetailsP24Bank {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsP24Bank::AliorBank => "alior_bank",
PaymentMethodDetailsP24Bank::BankMillennium => "bank_millennium",
PaymentMethodDetailsP24Bank::BankNowyBfgSa => "bank_nowy_bfg_sa",
PaymentMethodDetailsP24Bank::BankPekaoSa => "bank_pekao_sa",
PaymentMethodDetailsP24Bank::BankiSpbdzielcze => "banki_spbdzielcze",
PaymentMethodDetailsP24Bank::Blik => "blik",
PaymentMethodDetailsP24Bank::BnpParibas => "bnp_paribas",
PaymentMethodDetailsP24Bank::Boz => "boz",
PaymentMethodDetailsP24Bank::CitiHandlowy => "citi_handlowy",
PaymentMethodDetailsP24Bank::CreditAgricole => "credit_agricole",
PaymentMethodDetailsP24Bank::Envelobank => "envelobank",
PaymentMethodDetailsP24Bank::EtransferPocztowy24 => "etransfer_pocztowy24",
PaymentMethodDetailsP24Bank::GetinBank => "getin_bank",
PaymentMethodDetailsP24Bank::Ideabank => "ideabank",
PaymentMethodDetailsP24Bank::Ing => "ing",
PaymentMethodDetailsP24Bank::Inteligo => "inteligo",
PaymentMethodDetailsP24Bank::MbankMtransfer => "mbank_mtransfer",
PaymentMethodDetailsP24Bank::NestPrzelew => "nest_przelew",
PaymentMethodDetailsP24Bank::NoblePay => "noble_pay",
PaymentMethodDetailsP24Bank::PbacZIpko => "pbac_z_ipko",
PaymentMethodDetailsP24Bank::PlusBank => "plus_bank",
PaymentMethodDetailsP24Bank::SantanderPrzelew24 => "santander_przelew24",
PaymentMethodDetailsP24Bank::TmobileUsbugiBankowe => "tmobile_usbugi_bankowe",
PaymentMethodDetailsP24Bank::ToyotaBank => "toyota_bank",
PaymentMethodDetailsP24Bank::VolkswagenBank => "volkswagen_bank",
}
}
}
impl AsRef<str> for PaymentMethodDetailsP24Bank {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsP24Bank {
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 PaymentMethodDetailsSofortPreferredLanguage {
De,
En,
Es,
Fr,
It,
Nl,
Pl,
}
impl PaymentMethodDetailsSofortPreferredLanguage {
pub fn as_str(self) -> &'static str {
match self {
PaymentMethodDetailsSofortPreferredLanguage::De => "de",
PaymentMethodDetailsSofortPreferredLanguage::En => "en",
PaymentMethodDetailsSofortPreferredLanguage::Es => "es",
PaymentMethodDetailsSofortPreferredLanguage::Fr => "fr",
PaymentMethodDetailsSofortPreferredLanguage::It => "it",
PaymentMethodDetailsSofortPreferredLanguage::Nl => "nl",
PaymentMethodDetailsSofortPreferredLanguage::Pl => "pl",
}
}
}
impl AsRef<str> for PaymentMethodDetailsSofortPreferredLanguage {
fn as_ref(&self) -> &str {
self.as_str()
}
}
impl std::fmt::Display for PaymentMethodDetailsSofortPreferredLanguage {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
self.as_str().fmt(f)
}
}