mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-30 09:38:33 +08:00
fix: use card bin to get additional card details (#3036)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -709,6 +709,33 @@ pub struct Card {
|
||||
pub nick_name: Option<Secret<String>>,
|
||||
}
|
||||
|
||||
impl Card {
|
||||
fn apply_additional_card_info(&self, additional_card_info: AdditionalCardInfo) -> Self {
|
||||
Self {
|
||||
card_number: self.card_number.clone(),
|
||||
card_exp_month: self.card_exp_month.clone(),
|
||||
card_exp_year: self.card_exp_year.clone(),
|
||||
card_holder_name: self.card_holder_name.clone(),
|
||||
card_cvc: self.card_cvc.clone(),
|
||||
card_issuer: self
|
||||
.card_issuer
|
||||
.clone()
|
||||
.or(additional_card_info.card_issuer),
|
||||
card_network: self
|
||||
.card_network
|
||||
.clone()
|
||||
.or(additional_card_info.card_network),
|
||||
card_type: self.card_type.clone().or(additional_card_info.card_type),
|
||||
card_issuing_country: self
|
||||
.card_issuing_country
|
||||
.clone()
|
||||
.or(additional_card_info.card_issuing_country),
|
||||
bank_code: self.bank_code.clone().or(additional_card_info.bank_code),
|
||||
nick_name: self.nick_name.clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Debug, serde::Deserialize, serde::Serialize, Clone, ToSchema, Default)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct CardToken {
|
||||
@ -882,6 +909,21 @@ impl PaymentMethodData {
|
||||
| Self::CardToken(_) => None,
|
||||
}
|
||||
}
|
||||
pub fn apply_additional_payment_data(
|
||||
&self,
|
||||
additional_payment_data: AdditionalPaymentData,
|
||||
) -> Self {
|
||||
if let AdditionalPaymentData::Card(additional_card_info) = additional_payment_data {
|
||||
match self {
|
||||
Self::Card(card) => {
|
||||
Self::Card(card.apply_additional_card_info(*additional_card_info))
|
||||
}
|
||||
_ => self.to_owned(),
|
||||
}
|
||||
} else {
|
||||
self.to_owned()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait GetPaymentMethodType {
|
||||
|
||||
Reference in New Issue
Block a user