mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
feat(compatibility): Wallet support compatibility layer (#1214)
Co-authored-by: Sarthak Soni <sarthak.soni@juspay.in> Co-authored-by: Abhishek Marrivagu <68317979+Abhicodes-crypto@users.noreply.github.com>
This commit is contained in:
@ -48,17 +48,25 @@ pub struct StripeCard {
|
|||||||
pub holder_name: Option<pii::Secret<String>>,
|
pub holder_name: Option<pii::Secret<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, PartialEq, Eq, Deserialize, Clone)]
|
||||||
|
#[serde(rename_all = "snake_case")]
|
||||||
|
pub enum StripeWallet {
|
||||||
|
ApplePay(payments::ApplePayWalletData),
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Default, Serialize, PartialEq, Eq, Deserialize, Clone)]
|
#[derive(Default, Serialize, PartialEq, Eq, Deserialize, Clone)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum StripePaymentMethodType {
|
pub enum StripePaymentMethodType {
|
||||||
#[default]
|
#[default]
|
||||||
Card,
|
Card,
|
||||||
|
Wallet,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<StripePaymentMethodType> for api_enums::PaymentMethod {
|
impl From<StripePaymentMethodType> for api_enums::PaymentMethod {
|
||||||
fn from(item: StripePaymentMethodType) -> Self {
|
fn from(item: StripePaymentMethodType) -> Self {
|
||||||
match item {
|
match item {
|
||||||
StripePaymentMethodType::Card => Self::Card,
|
StripePaymentMethodType::Card => Self::Card,
|
||||||
|
StripePaymentMethodType::Wallet => Self::Wallet,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,6 +85,7 @@ pub struct StripePaymentMethodData {
|
|||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum StripePaymentMethodDetails {
|
pub enum StripePaymentMethodDetails {
|
||||||
Card(StripeCard),
|
Card(StripeCard),
|
||||||
|
Wallet(StripeWallet),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<StripeCard> for payments::Card {
|
impl From<StripeCard> for payments::Card {
|
||||||
@ -93,10 +102,21 @@ impl From<StripeCard> for payments::Card {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<StripeWallet> for payments::WalletData {
|
||||||
|
fn from(wallet: StripeWallet) -> Self {
|
||||||
|
match wallet {
|
||||||
|
StripeWallet::ApplePay(data) => Self::ApplePay(data),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<StripePaymentMethodDetails> for payments::PaymentMethodData {
|
impl From<StripePaymentMethodDetails> for payments::PaymentMethodData {
|
||||||
fn from(item: StripePaymentMethodDetails) -> Self {
|
fn from(item: StripePaymentMethodDetails) -> Self {
|
||||||
match item {
|
match item {
|
||||||
StripePaymentMethodDetails::Card(card) => Self::Card(payments::Card::from(card)),
|
StripePaymentMethodDetails::Card(card) => Self::Card(payments::Card::from(card)),
|
||||||
|
StripePaymentMethodDetails::Wallet(wallet) => {
|
||||||
|
Self::Wallet(payments::WalletData::from(wallet))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,12 +163,13 @@ pub struct StripePaymentIntentRequest {
|
|||||||
pub shipping: Option<Shipping>,
|
pub shipping: Option<Shipping>,
|
||||||
pub statement_descriptor: Option<String>,
|
pub statement_descriptor: Option<String>,
|
||||||
pub statement_descriptor_suffix: Option<String>,
|
pub statement_descriptor_suffix: Option<String>,
|
||||||
pub metadata: Option<api_models::payments::Metadata>,
|
pub metadata: Option<secret::SecretSerdeValue>,
|
||||||
pub client_secret: Option<pii::Secret<String>>,
|
pub client_secret: Option<pii::Secret<String>>,
|
||||||
pub payment_method_options: Option<StripePaymentMethodOptions>,
|
pub payment_method_options: Option<StripePaymentMethodOptions>,
|
||||||
pub merchant_connector_details: Option<admin::MerchantConnectorDetailsWrap>,
|
pub merchant_connector_details: Option<admin::MerchantConnectorDetailsWrap>,
|
||||||
pub mandate_id: Option<String>,
|
pub mandate_id: Option<String>,
|
||||||
pub off_session: Option<bool>,
|
pub off_session: Option<bool>,
|
||||||
|
pub payment_method_type: Option<api_enums::PaymentMethodType>,
|
||||||
pub receipt_ipaddress: Option<String>,
|
pub receipt_ipaddress: Option<String>,
|
||||||
pub user_agent: Option<String>,
|
pub user_agent: Option<String>,
|
||||||
}
|
}
|
||||||
@ -234,7 +255,7 @@ impl TryFrom<StripePaymentIntentRequest> for payments::PaymentsRequest {
|
|||||||
.and_then(|pmd| pmd.billing_details.map(payments::Address::from)),
|
.and_then(|pmd| pmd.billing_details.map(payments::Address::from)),
|
||||||
statement_descriptor_name: item.statement_descriptor,
|
statement_descriptor_name: item.statement_descriptor,
|
||||||
statement_descriptor_suffix: item.statement_descriptor_suffix,
|
statement_descriptor_suffix: item.statement_descriptor_suffix,
|
||||||
metadata: item.metadata,
|
udf: item.metadata,
|
||||||
client_secret: item.client_secret.map(|s| s.peek().clone()),
|
client_secret: item.client_secret.map(|s| s.peek().clone()),
|
||||||
authentication_type,
|
authentication_type,
|
||||||
mandate_data: mandate_options,
|
mandate_data: mandate_options,
|
||||||
@ -242,6 +263,7 @@ impl TryFrom<StripePaymentIntentRequest> for payments::PaymentsRequest {
|
|||||||
setup_future_usage: item.setup_future_usage,
|
setup_future_usage: item.setup_future_usage,
|
||||||
mandate_id: item.mandate_id,
|
mandate_id: item.mandate_id,
|
||||||
off_session: item.off_session,
|
off_session: item.off_session,
|
||||||
|
payment_method_type: item.payment_method_type,
|
||||||
routing,
|
routing,
|
||||||
browser_info: Some(
|
browser_info: Some(
|
||||||
serde_json::to_value(crate::types::BrowserInformation {
|
serde_json::to_value(crate::types::BrowserInformation {
|
||||||
@ -415,7 +437,7 @@ impl From<payments::PaymentsResponse> for StripePaymentIntentResponse {
|
|||||||
statement_descriptor_suffix: resp.statement_descriptor_suffix,
|
statement_descriptor_suffix: resp.statement_descriptor_suffix,
|
||||||
next_action: into_stripe_next_action(resp.next_action, resp.return_url),
|
next_action: into_stripe_next_action(resp.next_action, resp.return_url),
|
||||||
cancellation_reason: resp.cancellation_reason,
|
cancellation_reason: resp.cancellation_reason,
|
||||||
metadata: resp.metadata,
|
metadata: resp.udf,
|
||||||
charges: Charges::new(),
|
charges: Charges::new(),
|
||||||
last_payment_error: resp.error_code.map(|code| LastPaymentError {
|
last_payment_error: resp.error_code.map(|code| LastPaymentError {
|
||||||
charge: None,
|
charge: None,
|
||||||
|
|||||||
Reference in New Issue
Block a user