mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +08:00 
			
		
		
		
	feat(router): add mandate connector to payment data (#1392)
This commit is contained in:
		| @ -998,6 +998,7 @@ where | ||||
|     pub connector_response: storage::ConnectorResponse, | ||||
|     pub amount: api::Amount, | ||||
|     pub mandate_id: Option<api_models::payments::MandateIds>, | ||||
|     pub mandate_connector: Option<String>, | ||||
|     pub currency: storage_enums::Currency, | ||||
|     pub setup_mandate: Option<api::MandateData>, | ||||
|     pub address: PaymentAddress, | ||||
|  | ||||
| @ -245,6 +245,7 @@ pub async fn get_token_pm_type_mandate_details( | ||||
|     Option<String>, | ||||
|     Option<storage_enums::PaymentMethod>, | ||||
|     Option<api::MandateData>, | ||||
|     Option<String>, | ||||
| )> { | ||||
|     match mandate_type { | ||||
|         Some(api::MandateTxnType::NewMandateTxn) => { | ||||
| @ -256,17 +257,19 @@ pub async fn get_token_pm_type_mandate_details( | ||||
|                 request.payment_token.to_owned(), | ||||
|                 request.payment_method.map(ForeignInto::foreign_into), | ||||
|                 Some(setup_mandate), | ||||
|                 None, | ||||
|             )) | ||||
|         } | ||||
|         Some(api::MandateTxnType::RecurringMandateTxn) => { | ||||
|             let (token_, payment_method_type_) = | ||||
|             let (token_, payment_method_type_, mandate_connector) = | ||||
|                 get_token_for_recurring_mandate(state, request, merchant_account).await?; | ||||
|             Ok((token_, payment_method_type_, None)) | ||||
|             Ok((token_, payment_method_type_, None, mandate_connector)) | ||||
|         } | ||||
|         None => Ok(( | ||||
|             request.payment_token.to_owned(), | ||||
|             request.payment_method.map(ForeignInto::foreign_into), | ||||
|             request.mandate_data.clone(), | ||||
|             None, | ||||
|         )), | ||||
|     } | ||||
| } | ||||
| @ -275,7 +278,11 @@ pub async fn get_token_for_recurring_mandate( | ||||
|     state: &AppState, | ||||
|     req: &api::PaymentsRequest, | ||||
|     merchant_account: &domain::MerchantAccount, | ||||
| ) -> RouterResult<(Option<String>, Option<storage_enums::PaymentMethod>)> { | ||||
| ) -> RouterResult<( | ||||
|     Option<String>, | ||||
|     Option<storage_enums::PaymentMethod>, | ||||
|     Option<String>, | ||||
| )> { | ||||
|     let db = &*state.store; | ||||
|     let mandate_id = req.mandate_id.clone().get_required_value("mandate_id")?; | ||||
|  | ||||
| @ -330,9 +337,17 @@ pub async fn get_token_for_recurring_mandate( | ||||
|             } | ||||
|         }; | ||||
|  | ||||
|         Ok((Some(token), Some(payment_method.payment_method))) | ||||
|         Ok(( | ||||
|             Some(token), | ||||
|             Some(payment_method.payment_method), | ||||
|             Some(mandate.connector), | ||||
|         )) | ||||
|     } else { | ||||
|         Ok((None, Some(payment_method.payment_method))) | ||||
|         Ok(( | ||||
|             None, | ||||
|             Some(payment_method.payment_method), | ||||
|             Some(mandate.connector), | ||||
|         )) | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -134,6 +134,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsCancelRequest> | ||||
|                 amount, | ||||
|                 email: None, | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector: None, | ||||
|                 setup_mandate: None, | ||||
|                 token: None, | ||||
|                 address: PaymentAddress { | ||||
|  | ||||
| @ -141,6 +141,7 @@ impl<F: Send + Clone> GetTracker<F, payments::PaymentData<F>, api::PaymentsCaptu | ||||
|                 amount, | ||||
|                 email: None, | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector: None, | ||||
|                 setup_mandate: None, | ||||
|                 token: None, | ||||
|                 address: payments::PaymentAddress { | ||||
|  | ||||
| @ -70,13 +70,14 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Co | ||||
|             "confirm", | ||||
|         )?; | ||||
|  | ||||
|         let (token, payment_method, setup_mandate) = helpers::get_token_pm_type_mandate_details( | ||||
|             state, | ||||
|             request, | ||||
|             mandate_type.clone(), | ||||
|             merchant_account, | ||||
|         ) | ||||
|         .await?; | ||||
|         let (token, payment_method, setup_mandate, mandate_connector) = | ||||
|             helpers::get_token_pm_type_mandate_details( | ||||
|                 state, | ||||
|                 request, | ||||
|                 mandate_type.clone(), | ||||
|                 merchant_account, | ||||
|             ) | ||||
|             .await?; | ||||
|  | ||||
|         let browser_info = request | ||||
|             .browser_info | ||||
| @ -186,6 +187,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Co | ||||
|                 amount, | ||||
|                 email: request.email.clone(), | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector, | ||||
|                 setup_mandate, | ||||
|                 token, | ||||
|                 address: PaymentAddress { | ||||
|  | ||||
| @ -98,13 +98,14 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa | ||||
|             .map(ForeignInto::foreign_into) | ||||
|             .or(payment_intent.setup_future_usage); | ||||
|  | ||||
|         let (token, payment_method, setup_mandate) = helpers::get_token_pm_type_mandate_details( | ||||
|             state, | ||||
|             request, | ||||
|             mandate_type.clone(), | ||||
|             merchant_account, | ||||
|         ) | ||||
|         .await?; | ||||
|         let (token, payment_method, setup_mandate, mandate_connector) = | ||||
|             helpers::get_token_pm_type_mandate_details( | ||||
|                 state, | ||||
|                 request, | ||||
|                 mandate_type.clone(), | ||||
|                 merchant_account, | ||||
|             ) | ||||
|             .await?; | ||||
|  | ||||
|         let browser_info = request | ||||
|             .browser_info | ||||
| @ -229,6 +230,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa | ||||
|                 amount, | ||||
|                 email: request.email.clone(), | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector, | ||||
|                 setup_mandate, | ||||
|                 token, | ||||
|                 address: PaymentAddress { | ||||
|  | ||||
| @ -63,7 +63,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa | ||||
|             .get_payment_intent_id() | ||||
|             .change_context(errors::ApiErrorResponse::PaymentNotFound)?; | ||||
|  | ||||
|         let (token, payment_method_type, setup_mandate) = | ||||
|         let (token, payment_method_type, setup_mandate, mandate_connector) = | ||||
|             helpers::get_token_pm_type_mandate_details( | ||||
|                 state, | ||||
|                 request, | ||||
| @ -233,6 +233,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa | ||||
|                 amount, | ||||
|                 email: request.email.clone(), | ||||
|                 mandate_id, | ||||
|                 mandate_connector, | ||||
|                 setup_mandate, | ||||
|                 token, | ||||
|                 address: PaymentAddress { | ||||
|  | ||||
| @ -166,6 +166,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::VerifyRequest> for Paym | ||||
|                 amount: api::Amount::Zero, | ||||
|                 email: None, | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector: None, | ||||
|                 setup_mandate: request.mandate_data.clone(), | ||||
|                 token: request.payment_token.clone(), | ||||
|                 connector_response, | ||||
|  | ||||
| @ -153,6 +153,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsSessionRequest> | ||||
|                 amount, | ||||
|                 email: None, | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector: None, | ||||
|                 token: None, | ||||
|                 setup_mandate: None, | ||||
|                 address: payments::PaymentAddress { | ||||
|  | ||||
| @ -124,6 +124,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsStartRequest> f | ||||
|                 amount, | ||||
|                 email: None, | ||||
|                 mandate_id: None, | ||||
|                 mandate_connector: None, | ||||
|                 connector_response, | ||||
|                 setup_mandate: None, | ||||
|                 token: payment_attempt.payment_token.clone(), | ||||
|  | ||||
| @ -266,6 +266,7 @@ async fn get_tracker_for_sync< | ||||
|                     mandate_reference_id: None, | ||||
|                 } | ||||
|             }), | ||||
|             mandate_connector: None, | ||||
|             setup_mandate: None, | ||||
|             token: None, | ||||
|             address: PaymentAddress { | ||||
|  | ||||
| @ -72,7 +72,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa | ||||
|             "update", | ||||
|         )?; | ||||
|  | ||||
|         let (token, payment_method_type, setup_mandate) = | ||||
|         let (token, payment_method_type, setup_mandate, mandate_connector) = | ||||
|             helpers::get_token_pm_type_mandate_details( | ||||
|                 state, | ||||
|                 request, | ||||
| @ -287,6 +287,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa | ||||
|                 amount, | ||||
|                 email: request.email.clone(), | ||||
|                 mandate_id, | ||||
|                 mandate_connector, | ||||
|                 token, | ||||
|                 setup_mandate, | ||||
|                 address: PaymentAddress { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 ItsMeShashank
					ItsMeShashank