mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-27 19:46:48 +08:00
Refactor(Router): [Noon] revert adding new field max_amount to mandate request (#3435)
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
use common_utils::pii;
|
||||
use error_stack::{IntoReport, ResultExt};
|
||||
use error_stack::ResultExt;
|
||||
use masking::Secret;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
@ -7,7 +7,7 @@ use crate::{
|
||||
connector::utils::{
|
||||
self as conn_utils, CardData, PaymentsAuthorizeRequestData, RouterData, WalletData,
|
||||
},
|
||||
core::{errors, mandate::MandateBehaviour},
|
||||
core::errors,
|
||||
services,
|
||||
types::{self, api, storage::enums, transformers::ForeignFrom, ErrorResponse},
|
||||
utils,
|
||||
@ -30,13 +30,11 @@ pub enum NoonSubscriptionType {
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct NoonSubscriptionData {
|
||||
#[serde(rename = "type")]
|
||||
subscription_type: NoonSubscriptionType,
|
||||
//Short description about the subscription.
|
||||
name: String,
|
||||
max_amount: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
@ -93,7 +91,7 @@ pub struct NoonSubscription {
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct NoonCard {
|
||||
name_on_card: Option<Secret<String>>,
|
||||
name_on_card: Secret<String>,
|
||||
number_plain: cards::CardNumber,
|
||||
expiry_month: Secret<String>,
|
||||
expiry_year: Secret<String>,
|
||||
@ -160,7 +158,7 @@ pub struct NoonPayPal {
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(tag = "type", content = "data", rename_all = "UPPERCASE")]
|
||||
#[serde(tag = "type", content = "data")]
|
||||
pub enum NoonPaymentData {
|
||||
Card(NoonCard),
|
||||
Subscription(NoonSubscription),
|
||||
@ -202,7 +200,10 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for NoonPaymentsRequest {
|
||||
_ => (
|
||||
match item.request.payment_method_data.clone() {
|
||||
api::PaymentMethodData::Card(req_card) => Ok(NoonPaymentData::Card(NoonCard {
|
||||
name_on_card: req_card.card_holder_name.clone(),
|
||||
name_on_card: req_card
|
||||
.card_holder_name
|
||||
.clone()
|
||||
.unwrap_or(Secret::new("".to_string())),
|
||||
number_plain: req_card.card_number.clone(),
|
||||
expiry_month: req_card.card_exp_month.clone(),
|
||||
expiry_year: req_card.get_expiry_year_4_digit(),
|
||||
@ -295,11 +296,7 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for NoonPaymentsRequest {
|
||||
}
|
||||
}?,
|
||||
Some(item.request.currency),
|
||||
Some(item.request.order_category.clone().ok_or(
|
||||
errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "order_category",
|
||||
},
|
||||
)?),
|
||||
item.request.order_category.clone(),
|
||||
),
|
||||
};
|
||||
|
||||
@ -333,33 +330,17 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for NoonPaymentsRequest {
|
||||
},
|
||||
});
|
||||
|
||||
let subscription = item
|
||||
.request
|
||||
.get_setup_mandate_details()
|
||||
.map(|mandate_data| {
|
||||
let max_amount = match &mandate_data.mandate_type {
|
||||
Some(data_models::mandates::MandateDataType::SingleUse(mandate))
|
||||
| Some(data_models::mandates::MandateDataType::MultiUse(Some(mandate))) => {
|
||||
conn_utils::to_currency_base_unit(mandate.amount, mandate.currency)
|
||||
}
|
||||
_ => Err(errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "setup_future_usage.mandate_data.mandate_type",
|
||||
})
|
||||
.into_report(),
|
||||
}?;
|
||||
|
||||
Ok::<NoonSubscriptionData, error_stack::Report<errors::ConnectorError>>(
|
||||
NoonSubscriptionData {
|
||||
subscription_type: NoonSubscriptionType::Unscheduled,
|
||||
name: name.clone(),
|
||||
max_amount,
|
||||
},
|
||||
)
|
||||
})
|
||||
.transpose()?;
|
||||
|
||||
let tokenize_c_c = subscription.is_some().then_some(true);
|
||||
|
||||
let (subscription, tokenize_c_c) =
|
||||
match item.request.setup_future_usage.is_some().then_some((
|
||||
NoonSubscriptionData {
|
||||
subscription_type: NoonSubscriptionType::Unscheduled,
|
||||
name: name.clone(),
|
||||
},
|
||||
true,
|
||||
)) {
|
||||
Some((a, b)) => (Some(a), Some(b)),
|
||||
None => (None, None),
|
||||
};
|
||||
let order = NoonOrder {
|
||||
amount: conn_utils::to_currency_base_unit(item.request.amount, item.request.currency)?,
|
||||
currency,
|
||||
|
||||
Reference in New Issue
Block a user