pub use common_enums::*; use utoipa::ToSchema; #[derive( Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, )] /// The routing algorithm to be used to process the incoming request from merchant to outgoing payment processor or payment method. The default is 'Custom' #[schema(example = "custom")] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum RoutingAlgorithm { RoundRobin, MaxConversion, MinCost, Custom, } #[derive( Clone, Copy, Debug, Eq, PartialEq, ToSchema, serde::Deserialize, serde::Serialize, strum::EnumVariantNames, strum::EnumIter, strum::Display, strum::EnumString, Hash, )] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum Connector { #[cfg(feature = "dummy_connector")] #[serde(rename = "phonypay")] #[strum(serialize = "phonypay")] DummyConnector1, #[cfg(feature = "dummy_connector")] #[serde(rename = "fauxpay")] #[strum(serialize = "fauxpay")] DummyConnector2, #[cfg(feature = "dummy_connector")] #[serde(rename = "pretendpay")] #[strum(serialize = "pretendpay")] DummyConnector3, #[cfg(feature = "dummy_connector")] #[serde(rename = "stripe_test")] #[strum(serialize = "stripe_test")] DummyConnector4, #[cfg(feature = "dummy_connector")] #[serde(rename = "adyen_test")] #[strum(serialize = "adyen_test")] DummyConnector5, #[cfg(feature = "dummy_connector")] #[serde(rename = "checkout_test")] #[strum(serialize = "checkout_test")] DummyConnector6, #[cfg(feature = "dummy_connector")] #[serde(rename = "paypal_test")] #[strum(serialize = "paypal_test")] DummyConnector7, Aci, Adyen, Airwallex, Authorizedotnet, Bitpay, Bambora, Bluesnap, Boku, Braintree, Cashtocode, Checkout, Coinbase, Cryptopay, Cybersource, Dlocal, Fiserv, Forte, Globalpay, Globepay, //Helcim, added as template code for future usage, Iatapay, Klarna, Mollie, Multisafepay, Nexinets, Nmi, Noon, Nuvei, // Opayo, added as template code for future usage Opennode, // Payeezy, As psync and rsync are not supported by this connector, it is added as template code for future usage Payme, Paypal, Payu, Powertranz, Rapyd, Shift4, Square, Stax, Stripe, Trustpay, // Tsys, Tsys, Wise, Worldline, Worldpay, Zen, Signifyd, } impl Connector { pub fn supports_access_token(&self, payment_method: PaymentMethod) -> bool { matches!( (self, payment_method), (Self::Airwallex, _) | (Self::Globalpay, _) | (Self::Paypal, _) | (Self::Payu, _) | (Self::Trustpay, PaymentMethod::BankRedirect) | (Self::Iatapay, _) ) } pub fn supports_file_storage_module(&self) -> bool { matches!(self, Self::Stripe | Self::Checkout) } pub fn requires_defend_dispute(&self) -> bool { matches!(self, Self::Checkout) } } #[derive( Clone, Copy, Debug, Eq, Hash, PartialEq, serde::Serialize, serde::Deserialize, strum::Display, strum::EnumString, strum::EnumIter, strum::EnumVariantNames, )] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum RoutableConnectors { #[cfg(feature = "dummy_connector")] #[serde(rename = "phonypay")] #[strum(serialize = "phonypay")] DummyConnector1, #[cfg(feature = "dummy_connector")] #[serde(rename = "fauxpay")] #[strum(serialize = "fauxpay")] DummyConnector2, #[cfg(feature = "dummy_connector")] #[serde(rename = "pretendpay")] #[strum(serialize = "pretendpay")] DummyConnector3, #[cfg(feature = "dummy_connector")] #[serde(rename = "stripe_test")] #[strum(serialize = "stripe_test")] DummyConnector4, #[cfg(feature = "dummy_connector")] #[serde(rename = "adyen_test")] #[strum(serialize = "adyen_test")] DummyConnector5, #[cfg(feature = "dummy_connector")] #[serde(rename = "checkout_test")] #[strum(serialize = "checkout_test")] DummyConnector6, #[cfg(feature = "dummy_connector")] #[serde(rename = "paypal_test")] #[strum(serialize = "paypal_test")] DummyConnector7, Aci, Adyen, Airwallex, Authorizedotnet, Bitpay, Bambora, Bluesnap, Boku, Braintree, Cashtocode, Checkout, Coinbase, Cryptopay, Cybersource, Dlocal, Fiserv, Forte, Globalpay, Globepay, //Helcim, added as template code for future usage, Iatapay, Klarna, Mollie, Multisafepay, Nexinets, Nmi, Noon, Nuvei, // Opayo, added as template code for future usage Opennode, // Payeezy, As psync and rsync are not supported by this connector, it is added as template code for future usage Payme, Paypal, Payu, Powertranz, Rapyd, Shift4, Square, Stax, Stripe, Trustpay, // Tsys, Tsys, Wise, Worldline, Worldpay, Zen, } #[cfg(feature = "payouts")] #[derive( Clone, Copy, Debug, Eq, Hash, PartialEq, serde::Serialize, serde::Deserialize, strum::Display, strum::EnumString, ToSchema, )] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum PayoutConnectors { Adyen, Wise, } #[cfg(feature = "payouts")] impl From for RoutableConnectors { fn from(value: PayoutConnectors) -> Self { match value { PayoutConnectors::Adyen => Self::Adyen, PayoutConnectors::Wise => Self::Wise, } } } #[derive( Clone, Copy, Debug, Eq, Hash, PartialEq, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, )] #[strum(serialize_all = "snake_case")] #[serde(rename_all = "snake_case")] pub enum BankType { Checking, Savings, } #[derive( Clone, Copy, Debug, Eq, Hash, PartialEq, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, )] #[strum(serialize_all = "snake_case")] #[serde(rename_all = "snake_case")] pub enum BankHolderType { Personal, Business, } /// Name of banks supported by Hyperswitch #[derive( Clone, Copy, Debug, Eq, Hash, PartialEq, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, )] #[strum(serialize_all = "snake_case")] #[serde(rename_all = "snake_case")] pub enum BankNames { AmericanExpress, AffinBank, AgroBank, AllianceBank, AmBank, BankOfAmerica, BankIslam, BankMuamalat, BankRakyat, BankSimpananNasional, Barclays, BlikPSP, CapitalOne, Chase, Citi, CimbBank, Discover, NavyFederalCreditUnion, PentagonFederalCreditUnion, SynchronyBank, WellsFargo, AbnAmro, AsnBank, Bunq, Handelsbanken, HongLeongBank, HsbcBank, Ing, Knab, KuwaitFinanceHouse, Moneyou, Rabobank, Regiobank, Revolut, SnsBank, TriodosBank, VanLanschot, ArzteUndApothekerBank, AustrianAnadiBankAg, BankAustria, Bank99Ag, BankhausCarlSpangler, BankhausSchelhammerUndSchatteraAg, BankMillennium, BankPEKAOSA, BawagPskAg, BksBankAg, BrullKallmusBankAg, BtvVierLanderBank, CapitalBankGraweGruppeAg, CeskaSporitelna, Dolomitenbank, EasybankAg, EPlatbyVUB, ErsteBankUndSparkassen, FrieslandBank, HypoAlpeadriabankInternationalAg, HypoNoeLbFurNiederosterreichUWien, HypoOberosterreichSalzburgSteiermark, HypoTirolBankAg, HypoVorarlbergBankAg, HypoBankBurgenlandAktiengesellschaft, KomercniBanka, MBank, MarchfelderBank, Maybank, OberbankAg, OsterreichischeArzteUndApothekerbank, OcbcBank, PayWithING, PlaceZIPKO, PlatnoscOnlineKartaPlatnicza, PosojilnicaBankEGen, PostovaBanka, PublicBank, RaiffeisenBankengruppeOsterreich, RhbBank, SchelhammerCapitalBankAg, StandardCharteredBank, SchoellerbankAg, SpardaBankWien, SporoPay, SantanderPrzelew24, TatraPay, Viamo, VolksbankGruppe, VolkskreditbankAg, VrBankBraunau, UobBank, PayWithAliorBank, BankiSpoldzielcze, PayWithInteligo, BNPParibasPoland, BankNowySA, CreditAgricole, PayWithBOS, PayWithCitiHandlowy, PayWithPlusBank, ToyotaBank, VeloBank, ETransferPocztowy24, PlusBank, EtransferPocztowy24, BankiSpbdzielcze, BankNowyBfgSa, GetinBank, Blik, NoblePay, IdeaBank, EnveloBank, NestPrzelew, MbankMtransfer, Inteligo, PbacZIpko, BnpParibas, BankPekaoSa, VolkswagenBank, AliorBank, Boz, BangkokBank, KrungsriBank, KrungThaiBank, TheSiamCommercialBank, KasikornBank, OpenBankSuccess, OpenBankFailure, OpenBankCancelled, Aib, BankOfScotland, DanskeBank, FirstDirect, FirstTrust, Halifax, Lloyds, Monzo, NatWest, NationwideBank, RoyalBankOfScotland, Starling, TsbBank, TescoBank, UlsterBank, } #[derive( Clone, Debug, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, )] #[strum(serialize_all = "snake_case")] #[serde(rename_all = "snake_case")] pub enum FrmAction { CancelTxn, AutoRefund, ManualReview, } #[derive( Clone, Debug, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, )] #[strum(serialize_all = "snake_case")] #[serde(rename_all = "snake_case")] pub enum FrmPreferredFlowTypes { Pre, Post, } #[derive(Debug, Eq, PartialEq, Clone, serde::Serialize, serde::Deserialize)] pub struct UnresolvedResponseReason { pub code: String, /// A message to merchant to give hint on next action he/she should do to resolve pub message: String, } /// Possible field type of required fields in payment_method_data #[derive( Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, ToSchema, Hash, )] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum FieldType { CardNumber, CardExpiryMonth, CardExpiryYear, CardCVC, UserFullName, UserEmailAddress, UserPhoneNumber, UserCountryCode, //phone number's country code UserCountry { options: Vec }, //for country inside payment method data ex- bank redirect UserCurrency { options: Vec }, UserBillingName, UserAddressline1, UserAddressline2, UserAddressCity, UserAddressPincode, UserAddressState, UserAddressCountry { options: Vec }, UserBlikCode, UserBank, Text, DropDown { options: Vec }, } #[derive( Debug, serde::Deserialize, serde::Serialize, strum::Display, strum::EnumString, Clone, PartialEq, Eq, ToSchema, )] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum RetryAction { /// Payment can be retried from the client side until the payment is successful or payment expires or the attempts(configured by the merchant) for payment are exhausted ManualRetry, /// Denotes that the payment is requeued Requeue, }