mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 01:27:31 +08:00
feat: add payout service (#1665)
Co-authored-by: Kashif <mohammed.kashif@juspay.in> Co-authored-by: Manoj Ghorela <manoj.ghorela@juspay.in> Co-authored-by: Manoj Ghorela <118727120+manoj-juspay@users.noreply.github.com>
This commit is contained in:
@ -109,8 +109,8 @@ pub trait Feature<F, T> {
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! default_imp_for_complete_authorize{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_complete_authorize {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PaymentsCompleteAuthorize for $path::$connector {}
|
||||
impl
|
||||
@ -166,13 +166,14 @@ default_imp_for_complete_authorize!(
|
||||
connector::Stripe,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_create_customer{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_create_customer {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::ConnectorCustomer for $path::$connector {}
|
||||
impl
|
||||
@ -236,13 +237,14 @@ default_imp_for_create_customer!(
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_connector_redirect_response{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_connector_redirect_response {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl services::ConnectorRedirectResponse for $path::$connector {
|
||||
fn get_flow_type(
|
||||
@ -298,12 +300,13 @@ default_imp_for_connector_redirect_response!(
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Tsys,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_connector_request_id{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_connector_request_id {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::ConnectorTransactionId for $path::$connector {}
|
||||
)*
|
||||
@ -351,13 +354,14 @@ default_imp_for_connector_request_id!(
|
||||
connector::Stripe,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_accept_dispute{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_accept_dispute {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::Dispute for $path::$connector {}
|
||||
impl api::AcceptDispute for $path::$connector {}
|
||||
@ -425,13 +429,14 @@ default_imp_for_accept_dispute!(
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Opennode,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_file_upload{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_file_upload {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::FileUpload for $path::$connector {}
|
||||
impl api::UploadFile for $path::$connector {}
|
||||
@ -517,13 +522,14 @@ default_imp_for_file_upload!(
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Opennode,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_submit_evidence{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_submit_evidence {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::SubmitEvidence for $path::$connector {}
|
||||
impl
|
||||
@ -587,13 +593,14 @@ default_imp_for_submit_evidence!(
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Opennode,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_defend_dispute{
|
||||
($($path:ident::$connector:ident),*)=> {
|
||||
macro_rules! default_imp_for_defend_dispute {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::DefendDispute for $path::$connector {}
|
||||
impl
|
||||
@ -603,7 +610,7 @@ macro_rules! default_imp_for_defend_dispute{
|
||||
types::DefendDisputeResponse,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
@ -658,6 +665,7 @@ default_imp_for_defend_dispute!(
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Opennode,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
@ -728,6 +736,499 @@ default_imp_for_pre_processing_steps!(
|
||||
connector::Rapyd,
|
||||
connector::Shift4,
|
||||
connector::Tsys,
|
||||
connector::Wise,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
macro_rules! default_imp_for_payouts {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::Payouts for $path::$connector {}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::Payouts for connector::DummyConnector<T> {}
|
||||
|
||||
default_imp_for_payouts!(
|
||||
connector::Aci,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
macro_rules! default_imp_for_payouts_create {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PayoutCreate for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::PoCreate,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::PayoutCreate for connector::DummyConnector<T> {}
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<api::PoCreate, types::PayoutsData, types::PayoutsResponseData>
|
||||
for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
default_imp_for_payouts_create!(
|
||||
connector::Aci,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
macro_rules! default_imp_for_payouts_eligibility {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PayoutEligibility for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::PoEligibility,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::PayoutEligibility for connector::DummyConnector<T> {}
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<
|
||||
api::PoEligibility,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
default_imp_for_payouts_eligibility!(
|
||||
connector::Aci,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
macro_rules! default_imp_for_payouts_fulfill {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PayoutFulfill for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::PoFulfill,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::PayoutFulfill for connector::DummyConnector<T> {}
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<api::PoFulfill, types::PayoutsData, types::PayoutsResponseData>
|
||||
for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
default_imp_for_payouts_fulfill!(
|
||||
connector::Aci,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
macro_rules! default_imp_for_payouts_cancel {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PayoutCancel for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::PoCancel,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::PayoutCancel for connector::DummyConnector<T> {}
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<api::PoCancel, types::PayoutsData, types::PayoutsResponseData>
|
||||
for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
default_imp_for_payouts_cancel!(
|
||||
connector::Aci,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
macro_rules! default_imp_for_payouts_quote {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PayoutQuote for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::PoQuote,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::PayoutQuote for connector::DummyConnector<T> {}
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<api::PoQuote, types::PayoutsData, types::PayoutsResponseData>
|
||||
for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
default_imp_for_payouts_quote!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
);
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
macro_rules! default_imp_for_payouts_recipient {
|
||||
($($path:ident::$connector:ident),*) => {
|
||||
$(
|
||||
impl api::PayoutRecipient for $path::$connector {}
|
||||
impl
|
||||
services::ConnectorIntegration<
|
||||
api::PoRecipient,
|
||||
types::PayoutsData,
|
||||
types::PayoutsResponseData,
|
||||
> for $path::$connector
|
||||
{}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8> api::PayoutRecipient for connector::DummyConnector<T> {}
|
||||
#[cfg(feature = "payouts")]
|
||||
#[cfg(feature = "dummy_connector")]
|
||||
impl<const T: u8>
|
||||
services::ConnectorIntegration<api::PoRecipient, types::PayoutsData, types::PayoutsResponseData>
|
||||
for connector::DummyConnector<T>
|
||||
{
|
||||
}
|
||||
|
||||
#[cfg(feature = "payouts")]
|
||||
default_imp_for_payouts_recipient!(
|
||||
connector::Aci,
|
||||
connector::Adyen,
|
||||
connector::Airwallex,
|
||||
connector::Authorizedotnet,
|
||||
connector::Bambora,
|
||||
connector::Bitpay,
|
||||
connector::Bluesnap,
|
||||
connector::Braintree,
|
||||
connector::Cashtocode,
|
||||
connector::Checkout,
|
||||
connector::Cryptopay,
|
||||
connector::Cybersource,
|
||||
connector::Coinbase,
|
||||
connector::Dlocal,
|
||||
connector::Fiserv,
|
||||
connector::Forte,
|
||||
connector::Globalpay,
|
||||
connector::Globepay,
|
||||
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::Rapyd,
|
||||
connector::Stax,
|
||||
connector::Stripe,
|
||||
connector::Shift4,
|
||||
connector::Trustpay,
|
||||
connector::Tsys,
|
||||
connector::Worldline,
|
||||
connector::Worldpay,
|
||||
connector::Zen
|
||||
|
||||
Reference in New Issue
Block a user