feat(router): [Bluesnap] add kount frms session_id support for bluesnap connector (#1403)

This commit is contained in:
Arjun Karthik
2023-06-09 17:50:35 +05:30
committed by GitHub
parent 8497c55283
commit fbaecdc352

View File

@ -17,7 +17,7 @@ use crate::{
utils::{Encode, OptionExt}, utils::{Encode, OptionExt},
}; };
#[derive(Debug, Serialize, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapPaymentsRequest { pub struct BluesnapPaymentsRequest {
amount: String, amount: String,
@ -26,9 +26,16 @@ pub struct BluesnapPaymentsRequest {
currency: enums::Currency, currency: enums::Currency,
card_transaction_type: BluesnapTxnType, card_transaction_type: BluesnapTxnType,
three_d_secure: Option<BluesnapThreeDSecureInfo>, 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")] #[serde(rename_all = "camelCase")]
pub struct BluesnapCreateWalletToken { pub struct BluesnapCreateWalletToken {
wallet_type: String, wallet_type: String,
@ -37,20 +44,20 @@ pub struct BluesnapCreateWalletToken {
display_name: Option<String>, display_name: Option<String>,
} }
#[derive(Debug, Serialize, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapThreeDSecureInfo { pub struct BluesnapThreeDSecureInfo {
three_d_secure_reference_id: String, three_d_secure_reference_id: String,
} }
#[derive(Debug, Serialize, Eq, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub enum PaymentMethodDetails { pub enum PaymentMethodDetails {
CreditCard(Card), CreditCard(Card),
Wallet(BluesnapWallet), Wallet(BluesnapWallet),
} }
#[derive(Default, Debug, Serialize, Eq, PartialEq)] #[derive(Default, Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct Card { pub struct Card {
card_number: cards::CardNumber, card_number: cards::CardNumber,
@ -59,7 +66,7 @@ pub struct Card {
security_code: Secret<String>, security_code: Secret<String>,
} }
#[derive(Debug, Serialize, Eq, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapWallet { pub struct BluesnapWallet {
wallet_type: BluesnapWalletTypes, wallet_type: BluesnapWalletTypes,
@ -72,27 +79,27 @@ pub struct BluesnapGooglePayObject {
payment_method_data: utils::GooglePayWalletData, payment_method_data: utils::GooglePayWalletData,
} }
#[derive(Debug, Serialize, Eq, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapApplePayObject { pub struct BluesnapApplePayObject {
token: api_models::payments::ApplePayWalletData, token: api_models::payments::ApplePayWalletData,
} }
#[derive(Debug, Serialize, Eq, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum BluesnapWalletTypes { pub enum BluesnapWalletTypes {
GooglePay, GooglePay,
ApplePay, ApplePay,
} }
#[derive(Debug, Serialize, Eq, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct EncodedPaymentToken { pub struct EncodedPaymentToken {
billing_contact: BillingDetails, billing_contact: BillingDetails,
token: ApplepayPaymentData, token: ApplepayPaymentData,
} }
#[derive(Debug, Serialize, Eq, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BillingDetails { pub struct BillingDetails {
country_code: Option<api_enums::CountryAlpha2>, country_code: Option<api_enums::CountryAlpha2>,
@ -102,7 +109,7 @@ pub struct BillingDetails {
postal_code: Option<Secret<String>>, postal_code: Option<Secret<String>>,
} }
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)] #[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct ApplepayPaymentData { pub struct ApplepayPaymentData {
payment_data: ApplePayEncodedPaymentData, payment_data: ApplePayEncodedPaymentData,
@ -110,7 +117,7 @@ pub struct ApplepayPaymentData {
transaction_identifier: String, transaction_identifier: String,
} }
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)] #[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct ApplepayPaymentMethod { pub struct ApplepayPaymentMethod {
display_name: String, display_name: String,
@ -119,7 +126,7 @@ pub struct ApplepayPaymentMethod {
pm_type: String, pm_type: String,
} }
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)] #[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ApplePayEncodedPaymentData { pub struct ApplePayEncodedPaymentData {
data: String, data: String,
header: Option<ApplepayHeader>, header: Option<ApplepayHeader>,
@ -127,7 +134,7 @@ pub struct ApplePayEncodedPaymentData {
version: String, version: String,
} }
#[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone)] #[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct ApplepayHeader { pub struct ApplepayHeader {
ephemeral_public_key: Secret<String>, ephemeral_public_key: Secret<String>,
@ -242,6 +249,9 @@ impl TryFrom<&types::PaymentsAuthorizeRouterData> for BluesnapPaymentsRequest {
currency: item.request.currency, currency: item.request.currency,
card_transaction_type: auth_mode, card_transaction_type: auth_mode,
three_d_secure: None, 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, .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 struct BluesnapRedirectionResponse {
pub authentication_response: String, pub authentication_response: String,
} }
#[derive(Debug, Deserialize, PartialEq)] #[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapThreeDsResult { pub struct BluesnapThreeDsResult {
three_d_secure: Option<BluesnapThreeDsReference>, three_d_secure: Option<BluesnapThreeDsReference>,
pub status: String, pub status: String,
} }
#[derive(Debug, Deserialize, PartialEq)] #[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapThreeDsReference { pub struct BluesnapThreeDsReference {
three_d_secure_reference_id: String, three_d_secure_reference_id: String,
} }
#[derive(Debug, Serialize, PartialEq)] #[derive(Debug, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapVoidRequest { pub struct BluesnapVoidRequest {
card_transaction_type: BluesnapTxnType, 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")] #[serde(rename_all = "camelCase")]
pub struct BluesnapCaptureRequest { pub struct BluesnapCaptureRequest {
card_transaction_type: BluesnapTxnType, 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")] #[serde(rename_all = "camelCase")]
pub struct BluesnapCustomerRequest { pub struct BluesnapCustomerRequest {
email: Option<Email>, email: Option<Email>,
@ -483,7 +496,7 @@ impl TryFrom<&types::ConnectorCustomerRouterData> for BluesnapCustomerRequest {
} }
} }
#[derive(Debug, Deserialize, PartialEq)] #[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapCustomerResponse { pub struct BluesnapCustomerResponse {
vaulted_shopper_id: u64, vaulted_shopper_id: u64,
@ -511,7 +524,7 @@ impl<F, T>
} }
// PaymentsResponse // PaymentsResponse
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")] #[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum BluesnapTxnType { pub enum BluesnapTxnType {
AuthOnly, AuthOnly,
@ -521,7 +534,7 @@ pub enum BluesnapTxnType {
Refund, Refund,
} }
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)] #[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")] #[serde(rename_all = "UPPERCASE")]
pub enum BluesnapProcessingStatus { pub enum BluesnapProcessingStatus {
#[serde(alias = "success")] #[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")] #[serde(rename_all = "camelCase")]
pub struct BluesnapPaymentsResponse { pub struct BluesnapPaymentsResponse {
processing_info: ProcessingInfoResponse, processing_info: ProcessingInfoResponse,
@ -575,21 +588,21 @@ pub struct BluesnapPaymentsResponse {
card_transaction_type: BluesnapTxnType, card_transaction_type: BluesnapTxnType,
} }
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapWalletTokenResponse { pub struct BluesnapWalletTokenResponse {
wallet_type: String, wallet_type: String,
wallet_token: Secret<String>, wallet_token: Secret<String>,
} }
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct Refund { pub struct Refund {
refund_transaction_id: String, refund_transaction_id: String,
amount: String, amount: String,
} }
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct ProcessingInfoResponse { pub struct ProcessingInfoResponse {
processing_status: BluesnapProcessingStatus, processing_status: BluesnapProcessingStatus,
@ -629,7 +642,7 @@ impl<F, T>
} }
} }
#[derive(Default, Debug, Eq, PartialEq, Serialize)] #[derive(Default, Debug, Serialize)]
pub struct BluesnapRefundRequest { pub struct BluesnapRefundRequest {
amount: Option<String>, amount: Option<String>,
reason: 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")] #[serde(rename_all = "camelCase")]
pub struct BluesnapWebhookBody { pub struct BluesnapWebhookBody {
pub auth_key: String, pub auth_key: String,
@ -712,7 +725,7 @@ pub enum BluesnapWebhookEvents {
#[serde(other)] #[serde(other)]
Unknown, Unknown,
} }
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapWebhookObjectResource { pub struct BluesnapWebhookObjectResource {
pub auth_key: String, pub auth_key: String,
@ -720,27 +733,27 @@ pub struct BluesnapWebhookObjectResource {
pub reference_number: String, pub reference_number: String,
} }
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)] #[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct ErrorDetails { pub struct ErrorDetails {
pub code: String, pub code: String,
pub description: String, pub description: String,
} }
#[derive(Default, Debug, Clone, Deserialize, PartialEq)] #[derive(Default, Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapErrorResponse { pub struct BluesnapErrorResponse {
pub message: Vec<ErrorDetails>, pub message: Vec<ErrorDetails>,
} }
#[derive(Default, Debug, Clone, Deserialize, PartialEq)] #[derive(Default, Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct BluesnapAuthErrorResponse { pub struct BluesnapAuthErrorResponse {
pub error_code: String, pub error_code: String,
pub error_description: String, pub error_description: String,
} }
#[derive(Debug, Clone, Deserialize, PartialEq)] #[derive(Debug, Clone, Deserialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum BluesnapErrors { pub enum BluesnapErrors {
PaymentError(BluesnapErrorResponse), PaymentError(BluesnapErrorResponse),