mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 10:06:32 +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
	 Arjun Karthik
					Arjun Karthik