mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
feat(router): [Bluesnap] add kount frms session_id support for bluesnap connector (#1403)
This commit is contained in:
@ -17,7 +17,7 @@ use crate::{
|
||||
utils::{Encode, OptionExt},
|
||||
};
|
||||
|
||||
#[derive(Debug, Serialize, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapPaymentsRequest {
|
||||
amount: String,
|
||||
@ -26,9 +26,16 @@ pub struct BluesnapPaymentsRequest {
|
||||
currency: enums::Currency,
|
||||
card_transaction_type: BluesnapTxnType,
|
||||
three_d_secure: Option<BluesnapThreeDSecureInfo>,
|
||||
transaction_fraud_info: Option<TransactionFraudInfo>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct TransactionFraudInfo {
|
||||
fraud_session_id: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapCreateWalletToken {
|
||||
wallet_type: String,
|
||||
@ -37,20 +44,20 @@ pub struct BluesnapCreateWalletToken {
|
||||
display_name: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapThreeDSecureInfo {
|
||||
three_d_secure_reference_id: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum PaymentMethodDetails {
|
||||
CreditCard(Card),
|
||||
Wallet(BluesnapWallet),
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Default, Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Card {
|
||||
card_number: cards::CardNumber,
|
||||
@ -59,7 +66,7 @@ pub struct Card {
|
||||
security_code: Secret<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapWallet {
|
||||
wallet_type: BluesnapWalletTypes,
|
||||
@ -72,27 +79,27 @@ pub struct BluesnapGooglePayObject {
|
||||
payment_method_data: utils::GooglePayWalletData,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapApplePayObject {
|
||||
token: api_models::payments::ApplePayWalletData,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub enum BluesnapWalletTypes {
|
||||
GooglePay,
|
||||
ApplePay,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct EncodedPaymentToken {
|
||||
billing_contact: BillingDetails,
|
||||
token: ApplepayPaymentData,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BillingDetails {
|
||||
country_code: Option<api_enums::CountryAlpha2>,
|
||||
@ -102,7 +109,7 @@ pub struct BillingDetails {
|
||||
postal_code: Option<Secret<String>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ApplepayPaymentData {
|
||||
payment_data: ApplePayEncodedPaymentData,
|
||||
@ -110,7 +117,7 @@ pub struct ApplepayPaymentData {
|
||||
transaction_identifier: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ApplepayPaymentMethod {
|
||||
display_name: String,
|
||||
@ -119,7 +126,7 @@ pub struct ApplepayPaymentMethod {
|
||||
pm_type: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct ApplePayEncodedPaymentData {
|
||||
data: String,
|
||||
header: Option<ApplepayHeader>,
|
||||
@ -127,7 +134,7 @@ pub struct ApplePayEncodedPaymentData {
|
||||
version: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ApplepayHeader {
|
||||
ephemeral_public_key: Secret<String>,
|
||||
@ -242,6 +249,9 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for BluesnapPaymentsRequest {
|
||||
currency: item.request.currency,
|
||||
card_transaction_type: auth_mode,
|
||||
three_d_secure: None,
|
||||
transaction_fraud_info: Some(TransactionFraudInfo {
|
||||
fraud_session_id: item.payment_id.clone(),
|
||||
}),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -384,29 +394,32 @@ impl TryFrom<&types::PaymentsCompleteAuthorizeRouterData> for BluesnapPaymentsRe
|
||||
})?
|
||||
.three_d_secure_reference_id,
|
||||
}),
|
||||
transaction_fraud_info: Some(TransactionFraudInfo {
|
||||
fraud_session_id: item.payment_id.clone(),
|
||||
}),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct BluesnapRedirectionResponse {
|
||||
pub authentication_response: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapThreeDsResult {
|
||||
three_d_secure: Option<BluesnapThreeDsReference>,
|
||||
pub status: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapThreeDsReference {
|
||||
three_d_secure_reference_id: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapVoidRequest {
|
||||
card_transaction_type: BluesnapTxnType,
|
||||
@ -425,7 +438,7 @@ impl TryFrom<&types::PaymentsCancelRouterData> for BluesnapVoidRequest {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapCaptureRequest {
|
||||
card_transaction_type: BluesnapTxnType,
|
||||
@ -468,7 +481,7 @@ impl TryFrom<&types::ConnectorAuthType> for BluesnapAuthType {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, PartialEq)]
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapCustomerRequest {
|
||||
email: Option<Email>,
|
||||
@ -483,7 +496,7 @@ impl TryFrom<&types::ConnectorCustomerRouterData> for BluesnapCustomerRequest {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapCustomerResponse {
|
||||
vaulted_shopper_id: u64,
|
||||
@ -511,7 +524,7 @@ impl<F, T>
|
||||
}
|
||||
|
||||
// PaymentsResponse
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
pub enum BluesnapTxnType {
|
||||
AuthOnly,
|
||||
@ -521,7 +534,7 @@ pub enum BluesnapTxnType {
|
||||
Refund,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "UPPERCASE")]
|
||||
pub enum BluesnapProcessingStatus {
|
||||
#[serde(alias = "success")]
|
||||
@ -567,7 +580,7 @@ impl From<BluesnapProcessingStatus> for enums::RefundStatus {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapPaymentsResponse {
|
||||
processing_info: ProcessingInfoResponse,
|
||||
@ -575,21 +588,21 @@ pub struct BluesnapPaymentsResponse {
|
||||
card_transaction_type: BluesnapTxnType,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapWalletTokenResponse {
|
||||
wallet_type: String,
|
||||
wallet_token: Secret<String>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Refund {
|
||||
refund_transaction_id: String,
|
||||
amount: String,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ProcessingInfoResponse {
|
||||
processing_status: BluesnapProcessingStatus,
|
||||
@ -629,7 +642,7 @@ impl<F, T>
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Eq, PartialEq, Serialize)]
|
||||
#[derive(Default, Debug, Serialize)]
|
||||
pub struct BluesnapRefundRequest {
|
||||
amount: Option<String>,
|
||||
reason: Option<String>,
|
||||
@ -689,7 +702,7 @@ impl TryFrom<types::RefundsResponseRouterData<api::Execute, RefundResponse>>
|
||||
})
|
||||
}
|
||||
}
|
||||
#[derive(Debug, Clone, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapWebhookBody {
|
||||
pub auth_key: String,
|
||||
@ -712,7 +725,7 @@ pub enum BluesnapWebhookEvents {
|
||||
#[serde(other)]
|
||||
Unknown,
|
||||
}
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapWebhookObjectResource {
|
||||
pub auth_key: String,
|
||||
@ -720,27 +733,27 @@ pub struct BluesnapWebhookObjectResource {
|
||||
pub reference_number: String,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ErrorDetails {
|
||||
pub code: String,
|
||||
pub description: String,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Clone, Deserialize, PartialEq)]
|
||||
#[derive(Default, Debug, Clone, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapErrorResponse {
|
||||
pub message: Vec<ErrorDetails>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, Clone, Deserialize, PartialEq)]
|
||||
#[derive(Default, Debug, Clone, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BluesnapAuthErrorResponse {
|
||||
pub error_code: String,
|
||||
pub error_description: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize, PartialEq)]
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
#[serde(untagged)]
|
||||
pub enum BluesnapErrors {
|
||||
PaymentError(BluesnapErrorResponse),
|
||||
|
||||
Reference in New Issue
Block a user