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:
Kashif
2023-07-19 23:32:05 +05:30
committed by GitHub
parent e0f4507b10
commit 763e2df3bd
86 changed files with 9326 additions and 221 deletions

View File

@ -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