Skip to content

Commit

Permalink
refactor card token data
Browse files Browse the repository at this point in the history
  • Loading branch information
Chethan-rao committed Nov 30, 2023
1 parent be58ba1 commit 714ab73
Showing 1 changed file with 15 additions and 24 deletions.
39 changes: 15 additions & 24 deletions crates/router/src/core/payments/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1389,6 +1389,7 @@ pub async fn retrieve_payment_method_with_temporary_token(
} else {
Some(card.card_holder_name.clone())
};

if let Some(name_on_card) = name_on_card {
updated_card.card_holder_name = name_on_card;
}
Expand Down Expand Up @@ -1504,32 +1505,22 @@ pub async fn make_pm_data<'a, F: Clone, R, Ctx: PaymentMethodRetrieve>(
BoxedOperation<'a, F, R, Ctx>,
Option<api::PaymentMethodData>,
)> {
let pmd = payment_data.payment_method_data.clone();
if payment_data.payment_method_data.is_none() {
payment_data.payment_method_data = Some(api_models::payments::PaymentMethodData::CardToken(
CardToken::default(),
))
}
let request = &payment_data.payment_method_data.clone();

let request = payment_data.payment_method_data.as_mut();
let mut card_token_data = payment_data
.payment_method_data
.clone()
.and_then(|pmd| match pmd {
api_models::payments::PaymentMethodData::CardToken(token_data) => Some(token_data),
_ => None,
})
.or(Some(CardToken::default()));

let card_token_data = {
if let Some(cvc) = payment_data.card_cvc.clone() {
request.and_then(|pmd| match pmd {
api_models::payments::PaymentMethodData::CardToken(token_data) => {
token_data.card_cvc = Some(cvc);
Some(token_data)
}
_ => None,
})
} else {
request.and_then(|pmd| match pmd {
api_models::payments::PaymentMethodData::CardToken(token_data) => Some(token_data),
_ => None,
})
if let Some(cvc) = payment_data.card_cvc.clone() {
if let Some(token_data) = card_token_data.as_mut() {
token_data.card_cvc = Some(cvc);
}
}
.cloned();

let token = payment_data.token.clone();

Expand Down Expand Up @@ -1591,7 +1582,7 @@ pub async fn make_pm_data<'a, F: Clone, R, Ctx: PaymentMethodRetrieve>(
};

// TODO: Handle case where payment method and token both are present in request properly.
let payment_method = match (pmd, hyperswitch_token) {
let payment_method = match (request, hyperswitch_token) {
(_, Some(hyperswitch_token)) => {
let payment_method_details = Ctx::retrieve_payment_method_with_token(
state,
Expand All @@ -1615,7 +1606,7 @@ pub async fn make_pm_data<'a, F: Clone, R, Ctx: PaymentMethodRetrieve>(

(Some(_), _) => {
let payment_method_data = Ctx::retrieve_payment_method(
&payment_data.payment_method_data,
request,
state,
&payment_data.payment_intent,
&payment_data.payment_attempt,
Expand Down

0 comments on commit 714ab73

Please sign in to comment.