feat(stripe): eps, giropay and ideal using stripe (#529)

Co-authored-by: Sangamesh <sangamesh.kulkarni@juspay.in>
This commit is contained in:
Narayan Bhat
2023-02-26 21:59:37 +05:30
committed by GitHub
parent 301736fc25
commit 028e140144
92 changed files with 1532 additions and 1050 deletions

View File

@ -456,6 +456,7 @@ impl From<errors::ApiErrorResponse> for StripeErrorCode {
errors::ApiErrorResponse::DuplicatePayment { payment_id } => {
Self::DuplicatePayment { payment_id }
}
errors::ApiErrorResponse::NotSupported { .. } => Self::InternalServerError,
}
}
}

View File

@ -48,7 +48,7 @@ pub enum StripePaymentMethodType {
Card,
}
impl From<StripePaymentMethodType> for api_enums::PaymentMethodType {
impl From<StripePaymentMethodType> for api_enums::PaymentMethod {
fn from(item: StripePaymentMethodType) -> Self {
match item {
StripePaymentMethodType::Card => Self::Card,
@ -65,12 +65,10 @@ pub struct StripePaymentMethodData {
pub metadata: Option<Value>,
}
#[derive(Default, PartialEq, Eq, Deserialize, Clone)]
#[derive(PartialEq, Eq, Deserialize, Clone)]
#[serde(rename_all = "snake_case")]
pub enum StripePaymentMethodDetails {
Card(StripeCard),
#[default]
BankTransfer,
}
impl From<StripeCard> for payments::Card {
@ -81,14 +79,15 @@ impl From<StripeCard> for payments::Card {
card_exp_year: card.exp_year,
card_holder_name: masking::Secret::new("stripe_cust".to_owned()),
card_cvc: card.cvc,
card_issuer: None,
card_network: None,
}
}
}
impl From<StripePaymentMethodDetails> for payments::PaymentMethod {
impl From<StripePaymentMethodDetails> for payments::PaymentMethodData {
fn from(item: StripePaymentMethodDetails) -> Self {
match item {
StripePaymentMethodDetails::Card(card) => Self::Card(payments::Card::from(card)),
StripePaymentMethodDetails::BankTransfer => Self::BankTransfer,
}
}
}
@ -166,12 +165,12 @@ impl TryFrom<StripePaymentIntentRequest> for payments::PaymentsRequest {
payment_method_data: item.payment_method_data.as_ref().and_then(|pmd| {
pmd.payment_method_details
.as_ref()
.map(|spmd| payments::PaymentMethod::from(spmd.to_owned()))
.map(|spmd| payments::PaymentMethodData::from(spmd.to_owned()))
}),
payment_method: item
.payment_method_data
.as_ref()
.map(|pmd| api_enums::PaymentMethodType::from(pmd.stype.to_owned())),
.map(|pmd| api_enums::PaymentMethod::from(pmd.stype.to_owned())),
shipping: item
.shipping
.as_ref()
@ -287,7 +286,7 @@ pub struct StripePaymentIntentResponse {
pub authentication_type: Option<api_models::enums::AuthenticationType>,
pub next_action: Option<payments::NextAction>,
pub cancellation_reason: Option<String>,
pub payment_method: Option<api_models::enums::PaymentMethodType>,
pub payment_method: Option<api_models::enums::PaymentMethod>,
pub payment_method_data: Option<payments::PaymentMethodDataResponse>,
pub shipping: Option<payments::Address>,
pub billing: Option<payments::Address>,

View File

@ -44,7 +44,7 @@ pub enum StripePaymentMethodType {
Card,
}
impl From<StripePaymentMethodType> for api_enums::PaymentMethodType {
impl From<StripePaymentMethodType> for api_enums::PaymentMethod {
fn from(item: StripePaymentMethodType) -> Self {
match item {
StripePaymentMethodType::Card => Self::Card,
@ -61,12 +61,10 @@ pub struct StripePaymentMethodData {
pub metadata: Option<Value>,
}
#[derive(Default, PartialEq, Eq, Deserialize, Clone)]
#[derive(PartialEq, Eq, Deserialize, Clone)]
#[serde(rename_all = "snake_case")]
pub enum StripePaymentMethodDetails {
Card(StripeCard),
#[default]
BankTransfer,
}
impl From<StripeCard> for payments::Card {
@ -77,14 +75,15 @@ impl From<StripeCard> for payments::Card {
card_exp_year: card.exp_year,
card_holder_name: masking::Secret::new("stripe_cust".to_owned()),
card_cvc: card.cvc,
card_issuer: None,
card_network: None,
}
}
}
impl From<StripePaymentMethodDetails> for payments::PaymentMethod {
impl From<StripePaymentMethodDetails> for payments::PaymentMethodData {
fn from(item: StripePaymentMethodDetails) -> Self {
match item {
StripePaymentMethodDetails::Card(card) => Self::Card(payments::Card::from(card)),
StripePaymentMethodDetails::BankTransfer => Self::BankTransfer,
}
}
}
@ -146,12 +145,12 @@ impl From<StripeSetupIntentRequest> for payments::PaymentsRequest {
payment_method_data: item.payment_method_data.as_ref().and_then(|pmd| {
pmd.payment_method_details
.as_ref()
.map(|spmd| payments::PaymentMethod::from(spmd.to_owned()))
.map(|spmd| payments::PaymentMethodData::from(spmd.to_owned()))
}),
payment_method: item
.payment_method_data
.as_ref()
.map(|pmd| api_enums::PaymentMethodType::from(pmd.stype.to_owned())),
.map(|pmd| api_enums::PaymentMethod::from(pmd.stype.to_owned())),
shipping: item
.shipping
.as_ref()