Files

555 lines
12 KiB
Rust

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<PayoutConnectors> 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<String> }, //for country inside payment method data ex- bank redirect
UserCurrency { options: Vec<String> },
UserBillingName,
UserAddressline1,
UserAddressline2,
UserAddressCity,
UserAddressPincode,
UserAddressState,
UserAddressCountry { options: Vec<String> },
UserBlikCode,
UserBank,
Text,
DropDown { options: Vec<String> },
}
#[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,
}