mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 09:38:33 +08:00
feat: implement FRM flows (#2968)
Co-authored-by: Kashif <kashif@protonmail.com> Co-authored-by: AkshayaFoiger <131388445+AkshayaFoiger@users.noreply.github.com> Co-authored-by: Kashif <mohammed.kashif@juspay.in>
This commit is contained in:
@ -11,6 +11,8 @@ pub mod setup_mandate_flow;
|
||||
|
||||
use async_trait::async_trait;
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
use crate::types::fraud_check as frm_types;
|
||||
use crate::{
|
||||
connector,
|
||||
core::{
|
||||
@ -170,6 +172,7 @@ default_imp_for_complete_authorize!(
|
||||
connector::Payeezy,
|
||||
connector::Payu,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -247,6 +250,7 @@ default_imp_for_webhook_source_verification!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -326,6 +330,7 @@ default_imp_for_create_customer!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
@ -394,6 +399,7 @@ default_imp_for_connector_redirect_response!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Tsys,
|
||||
@ -453,6 +459,7 @@ default_imp_for_connector_request_id!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -535,6 +542,7 @@ default_imp_for_accept_dispute!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -635,6 +643,7 @@ default_imp_for_file_upload!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Trustpay,
|
||||
@ -713,6 +722,7 @@ default_imp_for_submit_evidence!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Trustpay,
|
||||
@ -791,6 +801,7 @@ default_imp_for_defend_dispute!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -868,6 +879,7 @@ default_imp_for_pre_processing_steps!(
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Tsys,
|
||||
@ -928,6 +940,7 @@ default_imp_for_payouts!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1007,6 +1020,7 @@ default_imp_for_payouts_create!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1089,6 +1103,7 @@ default_imp_for_payouts_eligibility!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1168,6 +1183,7 @@ default_imp_for_payouts_fulfill!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1247,6 +1263,7 @@ default_imp_for_payouts_cancel!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1327,6 +1344,7 @@ default_imp_for_payouts_quote!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1407,6 +1425,7 @@ default_imp_for_payouts_recipient!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1486,6 +1505,7 @@ default_imp_for_approve!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
@ -1527,6 +1547,481 @@ impl<const T: u8>
|
||||
}
|
||||
|
||||
default_imp_for_reject!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bankofamerica,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Boku,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
connector::Gocardless,
|
||||
connector::Helcim,
|
||||
connector::Iatapay,
|
||||
connector::Klarna,
|
||||
connector::Mollie,
|
||||
connector::Multisafepay,
|
||||
connector::Nexinets,
|
||||
connector::Nmi,
|
||||
connector::Noon,
|
||||
connector::Nuvei,
|
||||
connector::Opayo,
|
||||
connector::Opennode,
|
||||
connector::Payeezy,
|
||||
connector::Payme,
|
||||
connector::Paypal,
|
||||
connector::Payu,
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Volt,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_fraud_check {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FraudCheck for $path::$connector {}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::FraudCheck for connector::DummyConnector<T> {}
|
||||
|
||||
default_imp_for_fraud_check!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bankofamerica,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Boku,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
connector::Gocardless,
|
||||
connector::Helcim,
|
||||
connector::Iatapay,
|
||||
connector::Klarna,
|
||||
connector::Mollie,
|
||||
connector::Multisafepay,
|
||||
connector::Nexinets,
|
||||
connector::Nmi,
|
||||
connector::Noon,
|
||||
connector::Nuvei,
|
||||
connector::Opayo,
|
||||
connector::Opennode,
|
||||
connector::Payeezy,
|
||||
connector::Payme,
|
||||
connector::Paypal,
|
||||
connector::Payu,
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Volt,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
macro_rules! default_imp_for_frm_sale {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FraudCheckSale for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::Sale,
|
||||
frm_types::FraudCheckSaleData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8> api::FraudCheckSale for connector::DummyConnector<T> {}
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<
|
||||
api::Sale,
|
||||
frm_types::FraudCheckSaleData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
default_imp_for_frm_sale!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bankofamerica,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Boku,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
connector::Gocardless,
|
||||
connector::Helcim,
|
||||
connector::Iatapay,
|
||||
connector::Klarna,
|
||||
connector::Mollie,
|
||||
connector::Multisafepay,
|
||||
connector::Nexinets,
|
||||
connector::Nmi,
|
||||
connector::Noon,
|
||||
connector::Nuvei,
|
||||
connector::Opayo,
|
||||
connector::Opennode,
|
||||
connector::Payeezy,
|
||||
connector::Payme,
|
||||
connector::Paypal,
|
||||
connector::Payu,
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Volt,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
macro_rules! default_imp_for_frm_checkout {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FraudCheckCheckout for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::Checkout,
|
||||
frm_types::FraudCheckCheckoutData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8> api::FraudCheckCheckout for connector::DummyConnector<T> {}
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<
|
||||
api::Checkout,
|
||||
frm_types::FraudCheckCheckoutData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
default_imp_for_frm_checkout!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bankofamerica,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Boku,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
connector::Gocardless,
|
||||
connector::Helcim,
|
||||
connector::Iatapay,
|
||||
connector::Klarna,
|
||||
connector::Mollie,
|
||||
connector::Multisafepay,
|
||||
connector::Nexinets,
|
||||
connector::Nmi,
|
||||
connector::Noon,
|
||||
connector::Nuvei,
|
||||
connector::Opayo,
|
||||
connector::Opennode,
|
||||
connector::Payeezy,
|
||||
connector::Payme,
|
||||
connector::Paypal,
|
||||
connector::Payu,
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Volt,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
macro_rules! default_imp_for_frm_transaction {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FraudCheckTransaction for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::Transaction,
|
||||
frm_types::FraudCheckTransactionData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8> api::FraudCheckTransaction for connector::DummyConnector<T> {}
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<
|
||||
api::Transaction,
|
||||
frm_types::FraudCheckTransactionData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
default_imp_for_frm_transaction!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bankofamerica,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Boku,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
connector::Gocardless,
|
||||
connector::Helcim,
|
||||
connector::Iatapay,
|
||||
connector::Klarna,
|
||||
connector::Mollie,
|
||||
connector::Multisafepay,
|
||||
connector::Nexinets,
|
||||
connector::Nmi,
|
||||
connector::Noon,
|
||||
connector::Nuvei,
|
||||
connector::Opayo,
|
||||
connector::Opennode,
|
||||
connector::Payeezy,
|
||||
connector::Payme,
|
||||
connector::Paypal,
|
||||
connector::Payu,
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Volt,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
macro_rules! default_imp_for_frm_fulfillment {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FraudCheckFulfillment for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::Fulfillment,
|
||||
frm_types::FraudCheckFulfillmentData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8> api::FraudCheckFulfillment for connector::DummyConnector<T> {}
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<
|
||||
api::Fulfillment,
|
||||
frm_types::FraudCheckFulfillmentData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
default_imp_for_frm_fulfillment!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bankofamerica,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Boku,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
connector::Gocardless,
|
||||
connector::Helcim,
|
||||
connector::Iatapay,
|
||||
connector::Klarna,
|
||||
connector::Mollie,
|
||||
connector::Multisafepay,
|
||||
connector::Nexinets,
|
||||
connector::Nmi,
|
||||
connector::Noon,
|
||||
connector::Nuvei,
|
||||
connector::Opayo,
|
||||
connector::Opennode,
|
||||
connector::Payeezy,
|
||||
connector::Payme,
|
||||
connector::Paypal,
|
||||
connector::Payu,
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Volt,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
macro_rules! default_imp_for_frm_record_return {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FraudCheckRecordReturn for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::RecordReturn,
|
||||
frm_types::FraudCheckRecordReturnData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8> api::FraudCheckRecordReturn for connector::DummyConnector<T> {}
|
||||
#[cfg(all(feature = "frm", feature = "dummy_connector"))]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<
|
||||
api::RecordReturn,
|
||||
frm_types::FraudCheckRecordReturnData,
|
||||
frm_types::FraudCheckResponseData,
|
||||
> for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "frm")]
|
||||
default_imp_for_frm_record_return!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
@ -1645,6 +2140,7 @@ default_imp_for_incremental_authorization!(
|
||||
connector::Powertranz,
|
||||
connector::Prophetpay,
|
||||
connector::Rapyd,
|
||||
connector::Signifyd,
|
||||
connector::Square,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
|
||||
Reference in New Issue
Block a user