Skip to content

Commit b070d80

Browse files
committed
fix(core): Resolved comments
1 parent a3f7308 commit b070d80

20 files changed

+204
-45
lines changed

crates/hyperswitch_domain_models/src/router_request_types.rs

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ pub struct PaymentsAuthorizeData {
5454
pub payment_experience: Option<storage_enums::PaymentExperience>,
5555
pub payment_method_type: Option<storage_enums::PaymentMethodType>,
5656
pub surcharge_details: Option<SurchargeDetails>,
57-
pub customer_id: Option<String>,
57+
pub customer_id: Option<id_type::CustomerId>,
5858
pub request_incremental_authorization: bool,
5959
pub metadata: Option<serde_json::Value>,
6060
pub authentication_data: Option<AuthenticationData>,
@@ -340,18 +340,7 @@ impl TryFrom<CompleteAuthorizeData> for PaymentsPreProcessingData {
340340
#[derive(Debug, Clone)]
341341
pub struct PaymentsPostProcessingData {
342342
pub payment_method_data: PaymentMethodData,
343-
pub amount: i64,
344-
pub email: Option<pii::Email>,
345-
pub customer_id: Option<String>,
346-
pub currency: storage_enums::Currency,
347-
pub payment_method_type: Option<storage_enums::PaymentMethodType>,
348-
pub setup_mandate_details: Option<mandates::MandateData>,
349-
pub capture_method: Option<storage_enums::CaptureMethod>,
350-
pub order_details: Option<Vec<api_models::payments::OrderDetailsWithAmount>>,
351-
pub router_return_url: Option<String>,
352-
pub webhook_url: Option<String>,
353-
pub complete_authorize_url: Option<String>,
354-
pub browser_info: Option<BrowserInformation>,
343+
pub customer_id: Option<id_type::CustomerId>,
355344
pub connector_transaction_id: Option<String>,
356345
}
357346

@@ -365,17 +354,6 @@ impl<F> TryFrom<RouterData<F, PaymentsAuthorizeData, response_types::PaymentsRes
365354
) -> Result<Self, Self::Error> {
366355
Ok(Self {
367356
payment_method_data: data.request.payment_method_data,
368-
amount: data.request.amount,
369-
email: data.request.email,
370-
currency: data.request.currency,
371-
payment_method_type: data.request.payment_method_type,
372-
setup_mandate_details: data.request.setup_mandate_details,
373-
capture_method: data.request.capture_method,
374-
order_details: data.request.order_details,
375-
router_return_url: data.request.router_return_url,
376-
webhook_url: data.request.webhook_url,
377-
complete_authorize_url: data.request.complete_authorize_url,
378-
browser_info: data.request.browser_info,
379357
connector_transaction_id: match data.response {
380358
Ok(response_types::PaymentsResponseData::TransactionResponse {
381359
resource_id: ResponseId::ConnectorTransactionId(id),

crates/router/src/connector/datatrans/transformers.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ impl TryFrom<&DatatransRouterData<&types::PaymentsAuthorizeRouterData>>
193193
| domain::PaymentMethodData::CardRedirect(_)
194194
| domain::PaymentMethodData::Voucher(_)
195195
| domain::PaymentMethodData::GiftCard(_)
196+
| domain::PaymentMethodData::OpenBanking(_)
196197
| domain::PaymentMethodData::CardToken(_) => {
197198
Err(errors::ConnectorError::NotImplemented(
198199
connector_utils::get_unimplemented_payment_method_error_message("Datatrans"),

crates/router/src/core/fraud_check/flows/checkout_flow.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ use crate::{
1313
},
1414
errors, services,
1515
types::{
16-
api::fraud_check::{self as frm_api, FraudCheckConnectorData},
16+
api::{
17+
self,
18+
fraud_check::{self as frm_api, FraudCheckConnectorData},
19+
},
1720
domain,
1821
fraud_check::{FraudCheckCheckoutData, FraudCheckResponseData, FrmCheckoutRouterData},
1922
storage::enums as storage_enums,
@@ -136,6 +139,17 @@ impl ConstructFlowSpecificData<frm_api::Checkout, FraudCheckCheckoutData, FraudC
136139

137140
Ok(router_data)
138141
}
142+
143+
async fn get_merchant_recipient_data<'a>(
144+
&self,
145+
_state: &SessionState,
146+
_merchant_account: &domain::MerchantAccount,
147+
_key_store: &domain::MerchantKeyStore,
148+
_merchant_connector_account: &helpers::MerchantConnectorAccountType,
149+
_connector: &api::ConnectorData,
150+
) -> RouterResult<Option<MerchantRecipientData>> {
151+
Ok(None)
152+
}
139153
}
140154

141155
#[async_trait]

crates/router/src/core/fraud_check/flows/record_return.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::{
1111
},
1212
errors, services,
1313
types::{
14-
api::RecordReturn,
14+
api::{self, RecordReturn},
1515
domain,
1616
fraud_check::{
1717
FraudCheckRecordReturnData, FraudCheckResponseData, FrmRecordReturnRouterData,
@@ -108,6 +108,17 @@ impl ConstructFlowSpecificData<RecordReturn, FraudCheckRecordReturnData, FraudCh
108108

109109
Ok(router_data)
110110
}
111+
112+
async fn get_merchant_recipient_data<'a>(
113+
&self,
114+
_state: &SessionState,
115+
_merchant_account: &domain::MerchantAccount,
116+
_key_store: &domain::MerchantKeyStore,
117+
_merchant_connector_account: &helpers::MerchantConnectorAccountType,
118+
_connector: &api::ConnectorData,
119+
) -> RouterResult<Option<MerchantRecipientData>> {
120+
Ok(None)
121+
}
111122
}
112123

113124
#[async_trait]

crates/router/src/core/fraud_check/flows/sale_flow.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::{
1111
},
1212
errors, services,
1313
types::{
14-
api::fraud_check as frm_api,
14+
api::{self, fraud_check as frm_api},
1515
domain,
1616
fraud_check::{FraudCheckResponseData, FraudCheckSaleData, FrmSaleRouterData},
1717
storage::enums as storage_enums,
@@ -117,6 +117,17 @@ impl ConstructFlowSpecificData<frm_api::Sale, FraudCheckSaleData, FraudCheckResp
117117

118118
Ok(router_data)
119119
}
120+
121+
async fn get_merchant_recipient_data<'a>(
122+
&self,
123+
_state: &SessionState,
124+
_merchant_account: &domain::MerchantAccount,
125+
_key_store: &domain::MerchantKeyStore,
126+
_merchant_connector_account: &helpers::MerchantConnectorAccountType,
127+
_connector: &api::ConnectorData,
128+
) -> RouterResult<Option<MerchantRecipientData>> {
129+
Ok(None)
130+
}
120131
}
121132

122133
#[async_trait]

crates/router/src/core/fraud_check/flows/transaction_flow.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::{
1010
},
1111
errors, services,
1212
types::{
13-
api::fraud_check as frm_api,
13+
api::{self, fraud_check as frm_api},
1414
domain,
1515
fraud_check::{
1616
FraudCheckResponseData, FraudCheckTransactionData, FrmTransactionRouterData,
@@ -121,6 +121,17 @@ impl
121121

122122
Ok(router_data)
123123
}
124+
125+
async fn get_merchant_recipient_data<'a>(
126+
&self,
127+
_state: &SessionState,
128+
_merchant_account: &domain::MerchantAccount,
129+
_key_store: &domain::MerchantKeyStore,
130+
_merchant_connector_account: &helpers::MerchantConnectorAccountType,
131+
_connector: &api::ConnectorData,
132+
) -> RouterResult<Option<MerchantRecipientData>> {
133+
Ok(None)
134+
}
124135
}
125136

126137
#[async_trait]

crates/router/src/core/payments.rs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ use crate::{
9090
BrowserInformation,
9191
},
9292
utils::{
93-
add_apple_pay_flow_metrics, add_connector_http_status_code_metrics, Encode, OptionExt,
94-
ValueExt,
93+
add_apple_pay_flow_metrics, add_connector_http_status_code_metrics, user::parse_value,
94+
Encode, OptionExt, ValueExt,
9595
},
9696
workflows::payment_sync,
9797
};
@@ -1507,14 +1507,15 @@ where
15071507
.get_required_value("PaymentMethod")?;
15081508

15091509
let merchant_recipient_data = if payment_method == enums::PaymentMethod::OpenBanking {
1510-
get_merchant_bank_data_for_open_banking_connectors(
1511-
&merchant_connector_account,
1512-
key_store,
1513-
&connector,
1514-
state,
1515-
merchant_account,
1516-
)
1517-
.await?
1510+
payment_data
1511+
.get_merchant_recipient_data(
1512+
state,
1513+
merchant_account,
1514+
key_store,
1515+
&merchant_connector_account,
1516+
&connector,
1517+
)
1518+
.await?
15181519
} else {
15191520
None
15201521
};
@@ -1697,7 +1698,7 @@ where
16971698
Ok((router_data, merchant_connector_account))
16981699
}
16991700

1700-
async fn get_merchant_bank_data_for_open_banking_connectors(
1701+
pub async fn get_merchant_bank_data_for_open_banking_connectors(
17011702
merchant_connector_account: &helpers::MerchantConnectorAccountType,
17021703
key_store: &domain::MerchantKeyStore,
17031704
connector: &api::ConnectorData,
@@ -1711,10 +1712,12 @@ async fn get_merchant_bank_data_for_open_banking_connectors(
17111712
.peek()
17121713
.clone();
17131714

1714-
let merchant_recipient_data =
1715-
serde_json::from_value::<router_types::AdditionalMerchantData>(merchant_data)
1716-
.change_context(errors::ApiErrorResponse::InternalServerError)
1717-
.attach_printable("failed to decode MerchantRecipientData")?;
1715+
let merchant_recipient_data = parse_value::<router_types::AdditionalMerchantData>(
1716+
merchant_data,
1717+
"AdditionalMerchantData",
1718+
)
1719+
.change_context(errors::ApiErrorResponse::InternalServerError)
1720+
.attach_printable("failed to decode MerchantRecipientData")?;
17181721

17191722
let connector_name = enums::Connector::to_string(&connector.connector_name);
17201723
let locker_based_connector_list = state.conf.locker_based_open_banking_connectors.clone();
@@ -1725,6 +1728,7 @@ async fn get_merchant_bank_data_for_open_banking_connectors(
17251728
let recipient_id = helpers::get_recipient_id_for_open_banking(&merchant_recipient_data)?;
17261729
let final_recipient_data = if let Some(id) = recipient_id {
17271730
if contains {
1731+
// Customer Id for OpenBanking connectors will be merchant_id as the account data stored at locker belongs to the merchant
17281732
let cust_id = id_type::CustomerId::from(merchant_account.merchant_id.clone().into())
17291733
.change_context(errors::ApiErrorResponse::InternalServerError)
17301734
.attach_printable("Failed to convert to CustomerId")?;

crates/router/src/core/payments/flows.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ pub trait ConstructFlowSpecificData<F, Req, Res> {
3737
merchant_connector_account: &helpers::MerchantConnectorAccountType,
3838
merchant_recipient_data: Option<types::MerchantRecipientData>,
3939
) -> RouterResult<types::RouterData<F, Req, Res>>;
40+
41+
async fn get_merchant_recipient_data<'a>(
42+
&self,
43+
state: &SessionState,
44+
merchant_account: &domain::MerchantAccount,
45+
key_store: &domain::MerchantKeyStore,
46+
merchant_connector_account: &helpers::MerchantConnectorAccountType,
47+
connector: &api::ConnectorData,
48+
) -> RouterResult<Option<types::MerchantRecipientData>>;
4049
}
4150

4251
#[allow(clippy::too_many_arguments)]

crates/router/src/core/payments/flows/approve_flow.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ impl
4141
))
4242
.await
4343
}
44+
45+
async fn get_merchant_recipient_data<'a>(
46+
&self,
47+
_state: &SessionState,
48+
_merchant_account: &domain::MerchantAccount,
49+
_key_store: &domain::MerchantKeyStore,
50+
_merchant_connector_account: &helpers::MerchantConnectorAccountType,
51+
_connector: &api::ConnectorData,
52+
) -> RouterResult<Option<types::MerchantRecipientData>> {
53+
Ok(None)
54+
}
4455
}
4556

4657
#[async_trait]

crates/router/src/core/payments/flows/authorize_flow.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,24 @@ impl
5757
))
5858
.await
5959
}
60+
61+
async fn get_merchant_recipient_data<'a>(
62+
&self,
63+
state: &SessionState,
64+
merchant_account: &domain::MerchantAccount,
65+
key_store: &domain::MerchantKeyStore,
66+
merchant_connector_account: &helpers::MerchantConnectorAccountType,
67+
connector: &api::ConnectorData,
68+
) -> RouterResult<Option<types::MerchantRecipientData>> {
69+
payments::get_merchant_bank_data_for_open_banking_connectors(
70+
merchant_connector_account,
71+
key_store,
72+
connector,
73+
state,
74+
merchant_account,
75+
)
76+
.await
77+
}
6078
}
6179
#[async_trait]
6280
impl Feature<api::Authorize, types::PaymentsAuthorizeData> for types::PaymentsAuthorizeRouterData {

0 commit comments

Comments
 (0)