mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-01 19:42:27 +08:00
feat(pm_list): add required fields for giropay (#3194)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com> Co-authored-by: Prasunna Soppa <70575890+prasunna09@users.noreply.github.com>
This commit is contained in:
@ -390,6 +390,8 @@ bank_debit.sepa = { connector_list = "gocardless" } # Mandate supported payment
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"} # Mandate supported payment method type and connector for bank_redirect
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
wallet.apple_pay = { connector_list = "stripe,adyen,cybersource,noon" }
|
||||
bank_redirect.giropay = {connector_list = "adyen,globalpay"}
|
||||
|
||||
|
||||
[mandates.update_mandate_supported]
|
||||
card.credit ={connector_list ="cybersource"} # Update Mandate supported payment method type and connector for card
|
||||
|
||||
@ -117,8 +117,10 @@ pay_later.klarna.connector_list = "adyen"
|
||||
wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon"
|
||||
wallet.google_pay.connector_list = "stripe,adyen,cybersource"
|
||||
wallet.paypal.connector_list = "adyen"
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.ideal.connector_list = "stripe,adyen,globalpay"
|
||||
bank_redirect.sofort.connector_list = "stripe,adyen,globalpay"
|
||||
bank_redirect.giropay.connector_list = "adyen,globalpay"
|
||||
|
||||
|
||||
[mandates.update_mandate_supported]
|
||||
card.credit ={connector_list ="cybersource"}
|
||||
|
||||
@ -117,8 +117,9 @@ pay_later.klarna.connector_list = "adyen"
|
||||
wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon"
|
||||
wallet.google_pay.connector_list = "stripe,adyen,cybersource"
|
||||
wallet.paypal.connector_list = "adyen"
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.ideal.connector_list = "stripe,adyen,globalpay"
|
||||
bank_redirect.sofort.connector_list = "stripe,adyen,globalpay"
|
||||
bank_redirect.giropay.connector_list = "adyen,globalpay"
|
||||
|
||||
[mandates.update_mandate_supported]
|
||||
card.credit ={connector_list ="cybersource"}
|
||||
|
||||
@ -117,8 +117,10 @@ pay_later.klarna.connector_list = "adyen"
|
||||
wallet.apple_pay.connector_list = "stripe,adyen,cybersource,noon"
|
||||
wallet.google_pay.connector_list = "stripe,adyen,cybersource"
|
||||
wallet.paypal.connector_list = "adyen"
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.ideal.connector_list = "stripe,adyen,globalpay"
|
||||
bank_redirect.sofort.connector_list = "stripe,adyen,globalpay"
|
||||
bank_redirect.giropay.connector_list = "adyen,globalpay"
|
||||
|
||||
|
||||
[mandates.update_mandate_supported]
|
||||
card.credit ={connector_list ="cybersource"}
|
||||
|
||||
@ -486,6 +486,7 @@ bank_debit.becs = { connector_list = "gocardless"}
|
||||
bank_debit.sepa = { connector_list = "gocardless"}
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.giropay = {connector_list = "adyen,globalpay"}
|
||||
|
||||
[mandates.update_mandate_supported]
|
||||
card.credit ={connector_list ="cybersource"}
|
||||
|
||||
@ -351,6 +351,8 @@ bank_debit.becs = { connector_list = "gocardless"}
|
||||
bank_debit.sepa = { connector_list = "gocardless"}
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.giropay = {connector_list = "adyen,globalpay"}
|
||||
|
||||
|
||||
[connector_customer]
|
||||
connector_list = "gocardless,stax,stripe"
|
||||
|
||||
@ -1289,7 +1289,7 @@ pub enum BankRedirectData {
|
||||
},
|
||||
Giropay {
|
||||
/// The billing details for bank redirection
|
||||
billing_details: BankRedirectBilling,
|
||||
billing_details: Option<BankRedirectBilling>,
|
||||
/// Bank account details for Giropay
|
||||
|
||||
#[schema(value_type = Option<String>)]
|
||||
|
||||
@ -4482,13 +4482,225 @@ impl Default for super::settings::RequiredFields {
|
||||
ConnectorFields {
|
||||
fields: HashMap::from([
|
||||
(
|
||||
enums::Connector::Stripe,
|
||||
enums::Connector::Aci,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::from([
|
||||
(
|
||||
"payment_method_data.bank_redirect.giropay.country".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "payment_method_data.bank_redirect.giropay.country".to_string(),
|
||||
display_name: "country".to_string(),
|
||||
field_type: enums::FieldType::UserCountry {
|
||||
options: vec![
|
||||
"DE".to_string(),
|
||||
]},
|
||||
value: None,
|
||||
}
|
||||
)
|
||||
]),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Adyen,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::new(),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Globalpay,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::new(),
|
||||
common: HashMap::from([
|
||||
("billing.address.country".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.country".to_string(),
|
||||
display_name: "country".to_string(),
|
||||
field_type: enums::FieldType::UserAddressCountry {
|
||||
options: vec![
|
||||
"DE".to_string(),
|
||||
]
|
||||
},
|
||||
value: None,
|
||||
}
|
||||
)
|
||||
]),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Mollie,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::new(),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Nuvei,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate:HashMap::from([
|
||||
(
|
||||
"email".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "email".to_string(),
|
||||
display_name: "email".to_string(),
|
||||
field_type: enums::FieldType::UserEmailAddress,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.first_name".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.first_name".to_string(),
|
||||
display_name: "billing_first_name".to_string(),
|
||||
field_type: enums::FieldType::UserBillingName,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.last_name".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.last_name".to_string(),
|
||||
display_name: "billing_last_name".to_string(),
|
||||
field_type: enums::FieldType::UserBillingName,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.country".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.country".to_string(),
|
||||
display_name: "country".to_string(),
|
||||
field_type: enums::FieldType::UserAddressCountry{
|
||||
options: vec![
|
||||
"DE".to_string(),
|
||||
]
|
||||
},
|
||||
value: None,
|
||||
}
|
||||
)]
|
||||
),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Paypal,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::from([
|
||||
("payment_method_data.bank_redirect.giropay.country".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "payment_method_data.bank_redirect.giropay.country".to_string(),
|
||||
display_name: "country".to_string(),
|
||||
field_type: enums::FieldType::UserCountry {
|
||||
options: vec![
|
||||
"DE".to_string(),
|
||||
]
|
||||
},
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"payment_method_data.bank_redirect.giropay.billing_details.billing_name".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "payment_method_data.bank_redirect.giropay.billing_details.billing_name".to_string(),
|
||||
display_name: "billing_name".to_string(),
|
||||
field_type: enums::FieldType::UserBillingName,
|
||||
value: None,
|
||||
}
|
||||
)
|
||||
]),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Stripe,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::from([
|
||||
("payment_method_data.bank_redirect.giropay.billing_details.billing_name".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "payment_method_data.bank_redirect.giropay.billing_details.billing_name".to_string(),
|
||||
display_name: "billing_name".to_string(),
|
||||
field_type: enums::FieldType::UserBillingName,
|
||||
value: None,
|
||||
}
|
||||
)
|
||||
]),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Shift4,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::new(),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
(
|
||||
enums::Connector::Trustpay,
|
||||
RequiredFieldFinal {
|
||||
mandate: HashMap::new(),
|
||||
non_mandate: HashMap::from([
|
||||
(
|
||||
"billing.address.first_name".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.first_name".to_string(),
|
||||
display_name: "billing_first_name".to_string(),
|
||||
field_type: enums::FieldType::UserBillingName,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.line1".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.line1".to_string(),
|
||||
display_name: "line1".to_string(),
|
||||
field_type: enums::FieldType::UserAddressLine1,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.city".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.city".to_string(),
|
||||
display_name: "city".to_string(),
|
||||
field_type: enums::FieldType::UserAddressCity,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.zip".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.zip".to_string(),
|
||||
display_name: "zip".to_string(),
|
||||
field_type: enums::FieldType::UserAddressPincode,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"billing.address.country".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "billing.address.country".to_string(),
|
||||
display_name: "country".to_string(),
|
||||
field_type: enums::FieldType::UserAddressCountry {
|
||||
options: vec![
|
||||
"DE".to_string(),
|
||||
]
|
||||
},
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
]),
|
||||
common: HashMap::new(),
|
||||
}
|
||||
),
|
||||
]),
|
||||
},
|
||||
),
|
||||
|
||||
@ -166,10 +166,15 @@ impl
|
||||
api_models::payments::BankRedirectData::Giropay {
|
||||
bank_account_bic,
|
||||
bank_account_iban,
|
||||
country,
|
||||
..
|
||||
} => Self::BankRedirect(Box::new(BankRedirectionPMData {
|
||||
payment_brand: PaymentBrand::Giropay,
|
||||
bank_account_country: Some(api_models::enums::CountryAlpha2::DE),
|
||||
bank_account_country: Some(country.ok_or(
|
||||
errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "giropay.country",
|
||||
},
|
||||
)?),
|
||||
bank_account_bank_name: None,
|
||||
bank_account_bic: bank_account_bic.clone(),
|
||||
bank_account_iban: bank_account_iban.clone(),
|
||||
|
||||
@ -315,7 +315,12 @@ fn get_payment_source(
|
||||
country,
|
||||
..
|
||||
} => Ok(PaymentSourceItem::Giropay(RedirectRequest {
|
||||
name: billing_details.get_billing_name()?,
|
||||
name: billing_details
|
||||
.clone()
|
||||
.ok_or(errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "giropay.billing_details",
|
||||
})?
|
||||
.get_billing_name()?,
|
||||
country_code: country.ok_or(errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "giropay.country",
|
||||
})?,
|
||||
|
||||
@ -18,7 +18,8 @@ use url::Url;
|
||||
use crate::{
|
||||
collect_missing_value_keys,
|
||||
connector::utils::{
|
||||
self as connector_util, ApplePay, ApplePayDecrypt, PaymentsPreProcessingData, RouterData,
|
||||
self as connector_util, ApplePay, ApplePayDecrypt, BankRedirectBillingData,
|
||||
PaymentsPreProcessingData, RouterData,
|
||||
},
|
||||
consts,
|
||||
core::errors,
|
||||
@ -1111,7 +1112,14 @@ impl TryFrom<(&payments::BankRedirectData, Option<bool>)> for StripeBillingAddre
|
||||
payments::BankRedirectData::Giropay {
|
||||
billing_details, ..
|
||||
} => Ok(Self {
|
||||
name: billing_details.billing_name.clone(),
|
||||
name: Some(
|
||||
billing_details
|
||||
.clone()
|
||||
.ok_or(errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "giropay.billing_details",
|
||||
})?
|
||||
.get_billing_name()?,
|
||||
),
|
||||
..Self::default()
|
||||
}),
|
||||
payments::BankRedirectData::Ideal {
|
||||
|
||||
@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
|
||||
use url::Url;
|
||||
|
||||
use crate::{
|
||||
connector::utils::{self, CardData},
|
||||
connector::utils::{self, BankRedirectBillingData, CardData},
|
||||
core::errors,
|
||||
services,
|
||||
types::{
|
||||
@ -385,11 +385,12 @@ fn make_bank_redirect_request(
|
||||
{
|
||||
PaymentMethodSpecificData::PaymentProduct816SpecificInput(Box::new(Giropay {
|
||||
bank_account_iban: BankAccountIban {
|
||||
account_holder_name: billing_details.billing_name.clone().ok_or(
|
||||
errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "billing_details.billing_name",
|
||||
},
|
||||
)?,
|
||||
account_holder_name: billing_details
|
||||
.clone()
|
||||
.ok_or(errors::ConnectorError::MissingRequiredField {
|
||||
field_name: "giropay.billing_details",
|
||||
})?
|
||||
.get_billing_name()?,
|
||||
iban: bank_account_iban.clone(),
|
||||
},
|
||||
}))
|
||||
|
||||
@ -251,6 +251,8 @@ bank_debit.becs = { connector_list = "gocardless"}
|
||||
bank_debit.sepa = { connector_list = "gocardless"}
|
||||
bank_redirect.ideal = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.sofort = {connector_list = "stripe,adyen,globalpay"}
|
||||
bank_redirect.giropay = {connector_list = "adyen,globalpay"}
|
||||
|
||||
|
||||
[mandates.update_mandate_supported]
|
||||
card.credit ={connector_list ="cybersource"}
|
||||
|
||||
@ -5227,12 +5227,16 @@
|
||||
"giropay": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"billing_details",
|
||||
"country"
|
||||
],
|
||||
"properties": {
|
||||
"billing_details": {
|
||||
"$ref": "#/components/schemas/BankRedirectBilling"
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/BankRedirectBilling"
|
||||
}
|
||||
],
|
||||
"nullable": true
|
||||
},
|
||||
"bank_account_bic": {
|
||||
"type": "string",
|
||||
|
||||
Reference in New Issue
Block a user