mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-03 13:30:39 +08:00
feat(router): add support for Samsung Pay payment method (#5955)
This commit is contained in:
@ -135,10 +135,30 @@ pub struct MifinityData {
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct SamsungPayWalletData {
|
||||
/// The encrypted payment token from Samsung
|
||||
pub token: Secret<String>,
|
||||
pub payment_credential: SamsungPayWalletCredentials,
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct SamsungPayWalletCredentials {
|
||||
pub method: Option<String>,
|
||||
pub recurring_payment: Option<bool>,
|
||||
pub card_brand: String,
|
||||
#[serde(rename = "card_last4digits")]
|
||||
pub card_last_four_digits: String,
|
||||
#[serde(rename = "3_d_s")]
|
||||
pub token_data: SamsungPayTokenData,
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct SamsungPayTokenData {
|
||||
#[serde(rename = "type")]
|
||||
pub three_ds_type: Option<String>,
|
||||
pub version: String,
|
||||
pub data: Secret<String>,
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||
@ -670,9 +690,7 @@ impl From<api_models::payments::WalletData> for WalletData {
|
||||
})
|
||||
}
|
||||
api_models::payments::WalletData::SamsungPay(samsung_pay_data) => {
|
||||
Self::SamsungPay(Box::new(SamsungPayWalletData {
|
||||
token: samsung_pay_data.token,
|
||||
}))
|
||||
Self::SamsungPay(Box::new(SamsungPayWalletData::from(samsung_pay_data)))
|
||||
}
|
||||
api_models::payments::WalletData::TwintRedirect {} => Self::TwintRedirect {},
|
||||
api_models::payments::WalletData::VippsRedirect {} => Self::VippsRedirect {},
|
||||
@ -736,6 +754,24 @@ impl From<api_models::payments::ApplePayWalletData> for ApplePayWalletData {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Box<api_models::payments::SamsungPayWalletData>> for SamsungPayWalletData {
|
||||
fn from(value: Box<api_models::payments::SamsungPayWalletData>) -> Self {
|
||||
Self {
|
||||
payment_credential: SamsungPayWalletCredentials {
|
||||
method: value.payment_credential.method,
|
||||
recurring_payment: value.payment_credential.recurring_payment,
|
||||
card_brand: value.payment_credential.card_brand,
|
||||
card_last_four_digits: value.payment_credential.card_last_four_digits,
|
||||
token_data: SamsungPayTokenData {
|
||||
three_ds_type: value.payment_credential.token_data.three_ds_type,
|
||||
version: value.payment_credential.token_data.version,
|
||||
data: value.payment_credential.token_data.data,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<api_models::payments::PayLaterData> for PayLaterData {
|
||||
fn from(value: api_models::payments::PayLaterData) -> Self {
|
||||
match value {
|
||||
|
||||
Reference in New Issue
Block a user