feat(payment_methods): Store necessary payment method data in payment_methods table (#2073)

Co-authored-by: Sarthak Soni <sarthak.soni@juspay.in>
This commit is contained in:
Sarthak Soni
2023-09-06 19:25:25 +05:30
committed by GitHub
parent 9cae5de5ff
commit 3c93552101
23 changed files with 204 additions and 16 deletions

View File

@ -144,6 +144,20 @@ pub struct PaymentMethodResponse {
pub created: Option<time::PrimitiveDateTime>,
}
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub enum PaymentMethodsData {
Card(CardDetailsPaymentMethod),
}
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CardDetailsPaymentMethod {
pub last4_digits: Option<String>,
pub issuer_country: Option<String>,
pub expiry_month: Option<masking::Secret<String>>,
pub expiry_year: Option<masking::Secret<String>>,
pub nick_name: Option<masking::Secret<String>>,
pub card_holder_name: Option<masking::Secret<String>>,
}
#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, ToSchema)]
pub struct CardDetailFromLocker {
pub scheme: Option<String>,
@ -172,6 +186,36 @@ pub struct CardDetailFromLocker {
pub nick_name: Option<masking::Secret<String>>,
}
impl From<CardDetailsPaymentMethod> for CardDetailFromLocker {
fn from(item: CardDetailsPaymentMethod) -> Self {
Self {
scheme: None,
issuer_country: item.issuer_country,
last4_digits: item.last4_digits,
card_number: None,
expiry_month: item.expiry_month,
expiry_year: item.expiry_year,
card_token: None,
card_holder_name: item.card_holder_name,
card_fingerprint: None,
nick_name: item.nick_name,
}
}
}
impl From<CardDetailFromLocker> for CardDetailsPaymentMethod {
fn from(item: CardDetailFromLocker) -> Self {
Self {
issuer_country: item.issuer_country,
last4_digits: item.last4_digits,
expiry_month: item.expiry_month,
expiry_year: item.expiry_year,
nick_name: item.nick_name,
card_holder_name: item.card_holder_name,
}
}
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, ToSchema, PartialEq, Eq)]
pub struct PaymentExperienceTypes {
/// The payment experience enabled