mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-02 04:04:43 +08:00
feat(connector): [CRYPTOPAY] Pass network details in payment request (#4779)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -2122,6 +2122,7 @@ pub struct SepaAndBacsBillingDetails {
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct CryptoData {
|
||||
pub pay_currency: Option<String>,
|
||||
pub network: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
|
||||
@ -285,6 +285,7 @@ pub enum BankRedirectData {
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct CryptoData {
|
||||
pub pay_currency: Option<String>,
|
||||
pub network: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
|
||||
@ -693,8 +694,14 @@ impl From<api_models::payments::BankRedirectData> for BankRedirectData {
|
||||
|
||||
impl From<api_models::payments::CryptoData> for CryptoData {
|
||||
fn from(value: api_models::payments::CryptoData) -> Self {
|
||||
let api_models::payments::CryptoData { pay_currency } = value;
|
||||
Self { pay_currency }
|
||||
let api_models::payments::CryptoData {
|
||||
pay_currency,
|
||||
network,
|
||||
} = value;
|
||||
Self {
|
||||
pay_currency,
|
||||
network,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8195,7 +8195,6 @@ impl Default for super::settings::RequiredFields {
|
||||
"TRX".to_string(),
|
||||
"DOGE".to_string(),
|
||||
"BNB".to_string(),
|
||||
"BUSD".to_string(),
|
||||
"USDT".to_string(),
|
||||
"USDC".to_string(),
|
||||
"DAI".to_string(),
|
||||
@ -8204,6 +8203,15 @@ impl Default for super::settings::RequiredFields {
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
(
|
||||
"payment_method_data.crypto.network".to_string(),
|
||||
RequiredFieldInfo {
|
||||
required_field: "payment_method_data.crypto.network".to_string(),
|
||||
display_name: "network".to_string(),
|
||||
field_type: enums::FieldType::Text,
|
||||
value: None,
|
||||
}
|
||||
),
|
||||
]),
|
||||
common : HashMap::new(),
|
||||
}
|
||||
|
||||
@ -42,6 +42,8 @@ pub struct CryptopayPaymentsRequest {
|
||||
price_amount: String,
|
||||
price_currency: enums::Currency,
|
||||
pay_currency: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
network: Option<String>,
|
||||
success_redirect_url: Option<String>,
|
||||
unsuccess_redirect_url: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
@ -63,6 +65,7 @@ impl TryFrom<&CryptopayRouterData<&types::PaymentsAuthorizeRouterData>>
|
||||
price_amount: item.amount.to_owned(),
|
||||
price_currency: item.router_data.request.currency,
|
||||
pay_currency,
|
||||
network: cryptodata.network.to_owned(),
|
||||
success_redirect_url: item.router_data.request.router_return_url.clone(),
|
||||
unsuccess_redirect_url: item.router_data.request.router_return_url.clone(),
|
||||
//Cryptopay only accepts metadata as Object. If any other type, payment will fail with error.
|
||||
|
||||
@ -70,6 +70,7 @@ fn payment_method_details() -> Option<types::PaymentsAuthorizeData> {
|
||||
currency: enums::Currency::USD,
|
||||
payment_method_data: domain::PaymentMethodData::Crypto(domain::CryptoData {
|
||||
pay_currency: None,
|
||||
network: None,
|
||||
}),
|
||||
confirm: true,
|
||||
statement_descriptor_suffix: None,
|
||||
|
||||
@ -72,6 +72,7 @@ fn payment_method_details() -> Option<types::PaymentsAuthorizeData> {
|
||||
currency: enums::Currency::USD,
|
||||
payment_method_data: domain::PaymentMethodData::Crypto(domain::CryptoData {
|
||||
pay_currency: None,
|
||||
network: None,
|
||||
}),
|
||||
confirm: true,
|
||||
statement_descriptor_suffix: None,
|
||||
|
||||
@ -71,6 +71,7 @@ fn payment_method_details() -> Option<types::PaymentsAuthorizeData> {
|
||||
currency: enums::Currency::USD,
|
||||
payment_method_data: domain::PaymentMethodData::Crypto(domain::CryptoData {
|
||||
pay_currency: Some("XRP".to_string()),
|
||||
network: None,
|
||||
}),
|
||||
confirm: true,
|
||||
statement_descriptor_suffix: None,
|
||||
|
||||
@ -71,6 +71,7 @@ fn payment_method_details() -> Option<types::PaymentsAuthorizeData> {
|
||||
currency: enums::Currency::USD,
|
||||
payment_method_data: domain::PaymentMethodData::Crypto(domain::CryptoData {
|
||||
pay_currency: None,
|
||||
network: None,
|
||||
}),
|
||||
confirm: true,
|
||||
statement_descriptor_suffix: None,
|
||||
|
||||
@ -7907,6 +7907,10 @@
|
||||
"pay_currency": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"network": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user