refactor(connector): [Zen] refactor connector_meta_data for zen connector applepay session data (#1390)

This commit is contained in:
Arjun Karthik
2023-06-08 17:59:15 +05:30
committed by GitHub
parent d0d32544c2
commit 0575b26b4f

View File

@ -140,6 +140,11 @@ pub struct ZenItemObject {
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
pub struct SessionObject { pub struct SessionObject {
pub apple_pay: Option<ApplePaySessionData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ApplePaySessionData {
pub terminal_uuid: Option<String>, pub terminal_uuid: Option<String>,
pub pay_wall_secret: Option<String>, pub pay_wall_secret: Option<String>,
} }
@ -227,7 +232,10 @@ impl
let session: SessionObject = connector_meta let session: SessionObject = connector_meta
.parse_value("SessionObject") .parse_value("SessionObject")
.change_context(errors::ConnectorError::RequestEncodingFailed)?; .change_context(errors::ConnectorError::RequestEncodingFailed)?;
let terminal_uuid = session let applepay_session_data = session
.apple_pay
.ok_or(errors::ConnectorError::RequestEncodingFailed)?;
let terminal_uuid = applepay_session_data
.terminal_uuid .terminal_uuid
.clone() .clone()
.ok_or(errors::ConnectorError::RequestEncodingFailed)?; .ok_or(errors::ConnectorError::RequestEncodingFailed)?;
@ -242,14 +250,17 @@ impl
signature: None, signature: None,
url_redirect: item.request.get_return_url()?, url_redirect: item.request.get_return_url()?,
}; };
checkout_request.signature = Some(get_checkout_signature(&checkout_request, &session)?); checkout_request.signature = Some(get_checkout_signature(
&checkout_request,
&applepay_session_data,
)?);
Ok(Self::CheckoutRequest(Box::new(checkout_request))) Ok(Self::CheckoutRequest(Box::new(checkout_request)))
} }
} }
fn get_checkout_signature( fn get_checkout_signature(
checkout_request: &CheckoutRequest, checkout_request: &CheckoutRequest,
session: &SessionObject, session: &ApplePaySessionData,
) -> Result<Secret<String>, error_stack::Report<errors::ConnectorError>> { ) -> Result<Secret<String>, error_stack::Report<errors::ConnectorError>> {
let pay_wall_secret = session let pay_wall_secret = session
.pay_wall_secret .pay_wall_secret