mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-30 09:38:33 +08:00 
			
		
		
		
	feat(pm_auth): Added pm_auth_config to merchant_connector_account (#2183)
Co-authored-by: Sarthak Soni <sarthak.soni@juspay.in>
This commit is contained in:
		| @ -633,6 +633,8 @@ pub struct MerchantConnectorCreate { | |||||||
|     pub connector_webhook_details: Option<MerchantConnectorWebhookDetails>, |     pub connector_webhook_details: Option<MerchantConnectorWebhookDetails>, | ||||||
|     /// Identifier for the business profile, if not provided default will be chosen from merchant account |     /// Identifier for the business profile, if not provided default will be chosen from merchant account | ||||||
|     pub profile_id: Option<String>, |     pub profile_id: Option<String>, | ||||||
|  |  | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Clone, Serialize, Deserialize, ToSchema)] | #[derive(Debug, Clone, Serialize, Deserialize, ToSchema)] | ||||||
| @ -736,6 +738,8 @@ pub struct MerchantConnectorResponse { | |||||||
|     pub profile_id: Option<String>, |     pub profile_id: Option<String>, | ||||||
|     /// identifier for the verified domains of a particular connector account |     /// identifier for the verified domains of a particular connector account | ||||||
|     pub applepay_verified_domains: Option<Vec<String>>, |     pub applepay_verified_domains: Option<Vec<String>>, | ||||||
|  |  | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Create a new Merchant Connector for the merchant account. The connector could be a payment processor / facilitator / acquirer or specialized services like Fraud / Accounting etc." | /// Create a new Merchant Connector for the merchant account. The connector could be a payment processor / facilitator / acquirer or specialized services like Fraud / Accounting etc." | ||||||
| @ -805,6 +809,8 @@ pub struct MerchantConnectorUpdate { | |||||||
|         } |         } | ||||||
|     }))] |     }))] | ||||||
|     pub connector_webhook_details: Option<MerchantConnectorWebhookDetails>, |     pub connector_webhook_details: Option<MerchantConnectorWebhookDetails>, | ||||||
|  |  | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| ///Details of FrmConfigs are mentioned here... it should be passed in payment connector create api call, and stored in merchant_connector_table | ///Details of FrmConfigs are mentioned here... it should be passed in payment connector create api call, and stored in merchant_connector_table | ||||||
|  | |||||||
| @ -208,6 +208,8 @@ pub enum ConnectorType { | |||||||
|     NonBankingFinance, |     NonBankingFinance, | ||||||
|     /// Acquirers, Gateways etc |     /// Acquirers, Gateways etc | ||||||
|     PayoutProcessor, |     PayoutProcessor, | ||||||
|  |     /// PaymentMethods Auth Services | ||||||
|  |     PaymentMethodAuth, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[allow(clippy::upper_case_acronyms)] | #[allow(clippy::upper_case_acronyms)] | ||||||
|  | |||||||
| @ -41,6 +41,7 @@ pub struct MerchantConnectorAccount { | |||||||
|     pub profile_id: Option<String>, |     pub profile_id: Option<String>, | ||||||
|     #[diesel(deserialize_as = super::OptionalDieselArray<String>)] |     #[diesel(deserialize_as = super::OptionalDieselArray<String>)] | ||||||
|     pub applepay_verified_domains: Option<Vec<String>>, |     pub applepay_verified_domains: Option<Vec<String>>, | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Clone, Debug, Insertable, router_derive::DebugAsDisplay)] | #[derive(Clone, Debug, Insertable, router_derive::DebugAsDisplay)] | ||||||
| @ -68,6 +69,7 @@ pub struct MerchantConnectorAccountNew { | |||||||
|     pub profile_id: Option<String>, |     pub profile_id: Option<String>, | ||||||
|     #[diesel(deserialize_as = super::OptionalDieselArray<String>)] |     #[diesel(deserialize_as = super::OptionalDieselArray<String>)] | ||||||
|     pub applepay_verified_domains: Option<Vec<String>>, |     pub applepay_verified_domains: Option<Vec<String>>, | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Clone, Debug, AsChangeset, router_derive::DebugAsDisplay)] | #[derive(Clone, Debug, AsChangeset, router_derive::DebugAsDisplay)] | ||||||
| @ -89,6 +91,7 @@ pub struct MerchantConnectorAccountUpdateInternal { | |||||||
|     pub frm_config: Option<Vec<Secret<serde_json::Value>>>, |     pub frm_config: Option<Vec<Secret<serde_json::Value>>>, | ||||||
|     #[diesel(deserialize_as = super::OptionalDieselArray<String>)] |     #[diesel(deserialize_as = super::OptionalDieselArray<String>)] | ||||||
|     pub applepay_verified_domains: Option<Vec<String>>, |     pub applepay_verified_domains: Option<Vec<String>>, | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| impl MerchantConnectorAccountUpdateInternal { | impl MerchantConnectorAccountUpdateInternal { | ||||||
| @ -110,6 +113,7 @@ impl MerchantConnectorAccountUpdateInternal { | |||||||
|             payment_methods_enabled: self.payment_methods_enabled, |             payment_methods_enabled: self.payment_methods_enabled, | ||||||
|             frm_config: self.frm_config, |             frm_config: self.frm_config, | ||||||
|             modified_at: self.modified_at.unwrap_or(source.modified_at), |             modified_at: self.modified_at.unwrap_or(source.modified_at), | ||||||
|  |             pm_auth_config: self.pm_auth_config, | ||||||
|  |  | ||||||
|             ..source |             ..source | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -476,6 +476,7 @@ diesel::table! { | |||||||
|         #[max_length = 64] |         #[max_length = 64] | ||||||
|         profile_id -> Nullable<Varchar>, |         profile_id -> Nullable<Varchar>, | ||||||
|         applepay_verified_domains -> Nullable<Array<Nullable<Text>>>, |         applepay_verified_domains -> Nullable<Array<Nullable<Text>>>, | ||||||
|  |         pm_auth_config -> Nullable<Jsonb>, | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -682,6 +682,7 @@ pub async fn create_payment_connector( | |||||||
|         }, |         }, | ||||||
|         profile_id: Some(profile_id.clone()), |         profile_id: Some(profile_id.clone()), | ||||||
|         applepay_verified_domains: None, |         applepay_verified_domains: None, | ||||||
|  |         pm_auth_config: req.pm_auth_config.clone(), | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     let mca = state |     let mca = state | ||||||
| @ -847,6 +848,7 @@ pub async fn update_payment_connector( | |||||||
|             None => None, |             None => None, | ||||||
|         }, |         }, | ||||||
|         applepay_verified_domains: None, |         applepay_verified_domains: None, | ||||||
|  |         pm_auth_config: req.pm_auth_config, | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     let updated_mca = db |     let updated_mca = db | ||||||
|  | |||||||
| @ -58,6 +58,7 @@ pub async fn check_existence_and_add_domain_to_db( | |||||||
|         frm_configs: None, |         frm_configs: None, | ||||||
|         connector_webhook_details: None, |         connector_webhook_details: None, | ||||||
|         applepay_verified_domains: Some(already_verified_domains.clone()), |         applepay_verified_domains: Some(already_verified_domains.clone()), | ||||||
|  |         pm_auth_config: None, | ||||||
|     }; |     }; | ||||||
|     state |     state | ||||||
|         .store |         .store | ||||||
|  | |||||||
| @ -650,6 +650,7 @@ impl MerchantConnectorAccountInterface for MockDb { | |||||||
|             connector_webhook_details: t.connector_webhook_details, |             connector_webhook_details: t.connector_webhook_details, | ||||||
|             profile_id: t.profile_id, |             profile_id: t.profile_id, | ||||||
|             applepay_verified_domains: t.applepay_verified_domains, |             applepay_verified_domains: t.applepay_verified_domains, | ||||||
|  |             pm_auth_config: t.pm_auth_config, | ||||||
|         }; |         }; | ||||||
|         accounts.push(account.clone()); |         accounts.push(account.clone()); | ||||||
|         account |         account | ||||||
| @ -845,6 +846,7 @@ mod merchant_connector_account_cache_tests { | |||||||
|             connector_webhook_details: None, |             connector_webhook_details: None, | ||||||
|             profile_id: Some(profile_id.to_string()), |             profile_id: Some(profile_id.to_string()), | ||||||
|             applepay_verified_domains: None, |             applepay_verified_domains: None, | ||||||
|  |             pm_auth_config: None, | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         db.insert_merchant_connector_account(mca.clone(), &merchant_key) |         db.insert_merchant_connector_account(mca.clone(), &merchant_key) | ||||||
|  | |||||||
| @ -34,6 +34,7 @@ pub struct MerchantConnectorAccount { | |||||||
|     pub connector_webhook_details: Option<pii::SecretSerdeValue>, |     pub connector_webhook_details: Option<pii::SecretSerdeValue>, | ||||||
|     pub profile_id: Option<String>, |     pub profile_id: Option<String>, | ||||||
|     pub applepay_verified_domains: Option<Vec<String>>, |     pub applepay_verified_domains: Option<Vec<String>>, | ||||||
|  |     pub pm_auth_config: Option<serde_json::Value>, | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug)] | #[derive(Debug)] | ||||||
| @ -51,6 +52,7 @@ pub enum MerchantConnectorAccountUpdate { | |||||||
|         frm_configs: Option<Vec<Secret<serde_json::Value>>>, |         frm_configs: Option<Vec<Secret<serde_json::Value>>>, | ||||||
|         connector_webhook_details: Option<pii::SecretSerdeValue>, |         connector_webhook_details: Option<pii::SecretSerdeValue>, | ||||||
|         applepay_verified_domains: Option<Vec<String>>, |         applepay_verified_domains: Option<Vec<String>>, | ||||||
|  |         pm_auth_config: Option<serde_json::Value>, | ||||||
|     }, |     }, | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -85,6 +87,7 @@ impl behaviour::Conversion for MerchantConnectorAccount { | |||||||
|                 connector_webhook_details: self.connector_webhook_details, |                 connector_webhook_details: self.connector_webhook_details, | ||||||
|                 profile_id: self.profile_id, |                 profile_id: self.profile_id, | ||||||
|                 applepay_verified_domains: self.applepay_verified_domains, |                 applepay_verified_domains: self.applepay_verified_domains, | ||||||
|  |                 pm_auth_config: self.pm_auth_config, | ||||||
|             }, |             }, | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| @ -123,6 +126,7 @@ impl behaviour::Conversion for MerchantConnectorAccount { | |||||||
|             connector_webhook_details: other.connector_webhook_details, |             connector_webhook_details: other.connector_webhook_details, | ||||||
|             profile_id: other.profile_id, |             profile_id: other.profile_id, | ||||||
|             applepay_verified_domains: other.applepay_verified_domains, |             applepay_verified_domains: other.applepay_verified_domains, | ||||||
|  |             pm_auth_config: other.pm_auth_config, | ||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -149,6 +153,7 @@ impl behaviour::Conversion for MerchantConnectorAccount { | |||||||
|             connector_webhook_details: self.connector_webhook_details, |             connector_webhook_details: self.connector_webhook_details, | ||||||
|             profile_id: self.profile_id, |             profile_id: self.profile_id, | ||||||
|             applepay_verified_domains: self.applepay_verified_domains, |             applepay_verified_domains: self.applepay_verified_domains, | ||||||
|  |             pm_auth_config: self.pm_auth_config, | ||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -169,6 +174,7 @@ impl From<MerchantConnectorAccountUpdate> for MerchantConnectorAccountUpdateInte | |||||||
|                 frm_configs, |                 frm_configs, | ||||||
|                 connector_webhook_details, |                 connector_webhook_details, | ||||||
|                 applepay_verified_domains, |                 applepay_verified_domains, | ||||||
|  |                 pm_auth_config, | ||||||
|             } => Self { |             } => Self { | ||||||
|                 merchant_id, |                 merchant_id, | ||||||
|                 connector_type, |                 connector_type, | ||||||
| @ -184,6 +190,7 @@ impl From<MerchantConnectorAccountUpdate> for MerchantConnectorAccountUpdateInte | |||||||
|                 modified_at: Some(common_utils::date_time::now()), |                 modified_at: Some(common_utils::date_time::now()), | ||||||
|                 connector_webhook_details, |                 connector_webhook_details, | ||||||
|                 applepay_verified_domains, |                 applepay_verified_domains, | ||||||
|  |                 pm_auth_config, | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -668,6 +668,7 @@ impl TryFrom<domain::MerchantConnectorAccount> for api_models::admin::MerchantCo | |||||||
|                 .transpose()?, |                 .transpose()?, | ||||||
|             profile_id: item.profile_id, |             profile_id: item.profile_id, | ||||||
|             applepay_verified_domains: item.applepay_verified_domains, |             applepay_verified_domains: item.applepay_verified_domains, | ||||||
|  |             pm_auth_config: item.pm_auth_config, | ||||||
|         }) |         }) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,2 @@ | |||||||
|  | -- This file should undo anything in `up.sql` | ||||||
|  | ALTER TABLE merchant_connector_account DROP COLUMN IF EXISTS pm_auth_config; | ||||||
| @ -0,0 +1,3 @@ | |||||||
|  | -- Your SQL goes here | ||||||
|  | ALTER TABLE merchant_connector_account ADD COLUMN IF NOT EXISTS pm_auth_config JSONB DEFAULT NULL; | ||||||
|  | ALTER TYPE "ConnectorType" ADD VALUE 'payment_method_auth'; | ||||||
| @ -3922,7 +3922,8 @@ | |||||||
|           "networks", |           "networks", | ||||||
|           "banking_entities", |           "banking_entities", | ||||||
|           "non_banking_finance", |           "non_banking_finance", | ||||||
|           "payout_processor" |           "payout_processor", | ||||||
|  |           "payment_method_auth" | ||||||
|         ] |         ] | ||||||
|       }, |       }, | ||||||
|       "CountryAlpha2": { |       "CountryAlpha2": { | ||||||
| @ -6522,6 +6523,9 @@ | |||||||
|             "type": "string", |             "type": "string", | ||||||
|             "description": "Identifier for the business profile, if not provided default will be chosen from merchant account", |             "description": "Identifier for the business profile, if not provided default will be chosen from merchant account", | ||||||
|             "nullable": true |             "nullable": true | ||||||
|  |           }, | ||||||
|  |           "pm_auth_config": { | ||||||
|  |             "nullable": true | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
| @ -6746,6 +6750,9 @@ | |||||||
|             }, |             }, | ||||||
|             "description": "identifier for the verified domains of a particular connector account", |             "description": "identifier for the verified domains of a particular connector account", | ||||||
|             "nullable": true |             "nullable": true | ||||||
|  |           }, | ||||||
|  |           "pm_auth_config": { | ||||||
|  |             "nullable": true | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
| @ -6843,6 +6850,9 @@ | |||||||
|               } |               } | ||||||
|             ], |             ], | ||||||
|             "nullable": true |             "nullable": true | ||||||
|  |           }, | ||||||
|  |           "pm_auth_config": { | ||||||
|  |             "nullable": true | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Sarthak Soni
					Sarthak Soni