Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(connector): [Authorizedotnet] Add Wallet support #1223

Merged
merged 29 commits into from
Jul 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0100fae
add redirect_response to complete authorize flow
srujanchikke May 21, 2023
5a47724
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 21, 2023
225d27f
add wallets to authorizedotnet
srujanchikke May 21, 2023
b0e36ce
spell check fix
srujanchikke May 21, 2023
0d3e3de
address pr comments
srujanchikke May 21, 2023
45b15ef
address pr comments
srujanchikke May 22, 2023
f9cb03c
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 22, 2023
f92f3be
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 23, 2023
658a662
Merge branch 'add_redirect_response_to_completeauthorize' into add_wa…
srujanchikke May 24, 2023
cd53515
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 24, 2023
b913263
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 25, 2023
e2a429b
Merge branch 'add_redirect_response_to_completeauthorize' into add_wa…
srujanchikke May 26, 2023
d3d123f
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 26, 2023
21f648b
Merge branch 'add_redirect_response_to_completeauthorize' into add_wa…
srujanchikke May 26, 2023
01bdb74
address pr comments
srujanchikke May 29, 2023
8236ff3
Merge branch 'main' into add_redirect_response_to_completeauthorize
srujanchikke May 29, 2023
5b355c7
Merge branch 'add_redirect_response_to_completeauthorize' into add_wa…
srujanchikke May 29, 2023
a543bdb
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke May 30, 2023
3803bfe
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jun 6, 2023
9620675
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jun 9, 2023
74d2a61
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jun 12, 2023
76fa217
resolve conflicts
srujanchikke Jun 12, 2023
c9cc5c6
Merge branch 'add_wallets_support_for_authorizedotnet' of github.com:…
srujanchikke Jun 12, 2023
dc3ba88
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jun 28, 2023
2f632e3
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jul 3, 2023
918c046
Merge branch 'main' into add_wallets_support_for_authorizedotnet
ArjunKarthik Jul 5, 2023
c184a2e
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jul 7, 2023
e4568ab
Merge branch 'main' of github.com:juspay/hyperswitch into add_wallets…
srujanchikke Jul 14, 2023
ed70213
Merge branch 'main' into add_wallets_support_for_authorizedotnet
srujanchikke Jul 14, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 33 additions & 10 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

116 changes: 112 additions & 4 deletions crates/router/src/connector/authorizedotnet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@ use transformers as authorizedotnet;
use crate::{
configs::settings,
consts,
core::errors::{self, CustomResult},
core::{
errors::{self, CustomResult},
payments,
},
headers,
services::{self, request, ConnectorIntegration},
types::{
self,
api::{self, ConnectorCommon, ConnectorCommonExt},
api::{self, ConnectorCommon, ConnectorCommonExt, PaymentsCompleteAuthorize},
},
utils::{self, BytesExt},
};
Expand Down Expand Up @@ -192,7 +195,7 @@ impl ConnectorIntegration<api::PSync, types::PaymentsSyncData, types::PaymentsRe
}

fn get_content_type(&self) -> &'static str {
"application/json"
self.common_get_content_type()
}

fn get_url(
Expand Down Expand Up @@ -545,7 +548,7 @@ impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponse
}

fn get_content_type(&self) -> &'static str {
"application/json"
self.common_get_content_type()
}

fn get_url(
Expand Down Expand Up @@ -600,6 +603,100 @@ impl ConnectorIntegration<api::RSync, types::RefundsData, types::RefundsResponse
let response: authorizedotnet::AuthorizedotnetSyncResponse = intermediate_response
.parse_struct("AuthorizedotnetSyncResponse")
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;
types::RouterData::try_from(types::ResponseRouterData {
response,
data: data.clone(),
http_code: res.status_code,
})
}

fn get_error_response(
&self,
res: types::Response,
) -> CustomResult<types::ErrorResponse, errors::ConnectorError> {
get_error_response(res)
}
}

impl PaymentsCompleteAuthorize for Authorizedotnet {}

impl
ConnectorIntegration<
api::CompleteAuthorize,
types::CompleteAuthorizeData,
types::PaymentsResponseData,
> for Authorizedotnet
{
fn get_headers(
&self,
req: &types::PaymentsCompleteAuthorizeRouterData,
connectors: &settings::Connectors,
) -> CustomResult<Vec<(String, request::Maskable<String>)>, errors::ConnectorError> {
self.build_headers(req, connectors)
}

fn get_content_type(&self) -> &'static str {
self.common_get_content_type()
}

fn get_url(
&self,
_req: &types::PaymentsCompleteAuthorizeRouterData,
connectors: &settings::Connectors,
) -> CustomResult<String, errors::ConnectorError> {
Ok(self.base_url(connectors).to_string())
}
fn get_request_body(
&self,
req: &types::PaymentsCompleteAuthorizeRouterData,
) -> CustomResult<Option<types::RequestBody>, errors::ConnectorError> {
let connector_req = authorizedotnet::PaypalConfirmRequest::try_from(req)?;
let authorizedotnet_req = types::RequestBody::log_and_get_request_body(
&connector_req,
utils::Encode::<authorizedotnet::PaypalConfirmRequest>::encode_to_string_of_json,
)
.change_context(errors::ConnectorError::RequestEncodingFailed)?;
Ok(Some(authorizedotnet_req))
}

fn build_request(
&self,
req: &types::PaymentsCompleteAuthorizeRouterData,
connectors: &settings::Connectors,
) -> CustomResult<Option<services::Request>, errors::ConnectorError> {
Ok(Some(
services::RequestBuilder::new()
.method(services::Method::Post)
.url(&types::PaymentsCompleteAuthorizeType::get_url(
self, req, connectors,
)?)
.attach_default_headers()
.headers(types::PaymentsCompleteAuthorizeType::get_headers(
self, req, connectors,
)?)
.body(types::PaymentsCompleteAuthorizeType::get_request_body(
self, req,
)?)
.build(),
))
}

fn handle_response(
&self,
data: &types::PaymentsCompleteAuthorizeRouterData,
res: types::Response,
) -> CustomResult<types::PaymentsCompleteAuthorizeRouterData, errors::ConnectorError> {
use bytes::Buf;

// Handle the case where response bytes contains U+FEFF (BOM) character sent by connector
let encoding = encoding_rs::UTF_8;
let intermediate_response = encoding.decode_with_bom_removal(res.response.chunk());
let intermediate_response =
bytes::Bytes::copy_from_slice(intermediate_response.0.as_bytes());

let response: authorizedotnet::AuthorizedotnetPaymentsResponse = intermediate_response
.parse_struct("AuthorizedotnetPaymentsResponse")
.change_context(errors::ConnectorError::ResponseDeserializationFailed)?;

types::RouterData::try_from(types::ResponseRouterData {
response,
Expand Down Expand Up @@ -754,3 +851,14 @@ fn get_error_response(
}
}
}

impl services::ConnectorRedirectResponse for Authorizedotnet {
fn get_flow_type(
&self,
_query_params: &str,
_json_payload: Option<serde_json::Value>,
_action: services::PaymentAction,
) -> CustomResult<payments::CallConnectorAction, errors::ConnectorError> {
Ok(payments::CallConnectorAction::Trigger)
}
}
Loading