mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-27 19:46:48 +08:00
555 lines
12 KiB
Rust
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,
|
|
}
|