mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-11-01 02:57:02 +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}, |     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), | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Arjun Karthik
					Arjun Karthik