mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-03 21:37:41 +08:00
fix(router): connecconnector name not saved in payment_attempt & connector_response tables (#143)
This commit is contained in:
@ -174,10 +174,13 @@ async fn payment_response_update_tracker<F: Clone, T>(
|
|||||||
let (payment_attempt_update, connector_response_update) = match router_data.response.clone() {
|
let (payment_attempt_update, connector_response_update) = match router_data.response.clone() {
|
||||||
Err(err) => (
|
Err(err) => (
|
||||||
Some(storage::PaymentAttemptUpdate::ErrorUpdate {
|
Some(storage::PaymentAttemptUpdate::ErrorUpdate {
|
||||||
|
connector: Some(router_data.connector.clone()),
|
||||||
status: storage::enums::AttemptStatus::Failure,
|
status: storage::enums::AttemptStatus::Failure,
|
||||||
error_message: Some(err.message),
|
error_message: Some(err.message),
|
||||||
}),
|
}),
|
||||||
None,
|
Some(storage::ConnectorResponseUpdate::ErrorUpdate {
|
||||||
|
connector_name: Some(router_data.connector.clone()),
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
Ok(payments_response) => match payments_response {
|
Ok(payments_response) => match payments_response {
|
||||||
types::PaymentsResponseData::TransactionResponse {
|
types::PaymentsResponseData::TransactionResponse {
|
||||||
@ -203,6 +206,7 @@ async fn payment_response_update_tracker<F: Clone, T>(
|
|||||||
|
|
||||||
let payment_attempt_update = storage::PaymentAttemptUpdate::ResponseUpdate {
|
let payment_attempt_update = storage::PaymentAttemptUpdate::ResponseUpdate {
|
||||||
status: router_data.status,
|
status: router_data.status,
|
||||||
|
connector: Some(router_data.connector),
|
||||||
connector_transaction_id: connector_transaction_id.clone(),
|
connector_transaction_id: connector_transaction_id.clone(),
|
||||||
authentication_type: None,
|
authentication_type: None,
|
||||||
payment_method_id: Some(router_data.payment_method_id),
|
payment_method_id: Some(router_data.payment_method_id),
|
||||||
|
|||||||
@ -35,12 +35,12 @@ pub struct ConnectorResponse {
|
|||||||
pub encoded_data: Option<String>,
|
pub encoded_data: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Deserialize, AsChangeset, Serialize)]
|
#[derive(Clone, Default, Debug, Deserialize, AsChangeset, Serialize)]
|
||||||
#[diesel(table_name = connector_response)]
|
#[diesel(table_name = connector_response)]
|
||||||
pub struct ConnectorResponseUpdateInternal {
|
pub struct ConnectorResponseUpdateInternal {
|
||||||
pub connector_transaction_id: Option<String>,
|
pub connector_transaction_id: Option<String>,
|
||||||
pub authentication_data: Option<serde_json::Value>,
|
pub authentication_data: Option<serde_json::Value>,
|
||||||
pub modified_at: PrimitiveDateTime,
|
pub modified_at: Option<PrimitiveDateTime>,
|
||||||
pub encoded_data: Option<String>,
|
pub encoded_data: Option<String>,
|
||||||
pub connector_name: Option<String>,
|
pub connector_name: Option<String>,
|
||||||
}
|
}
|
||||||
@ -53,16 +53,30 @@ pub enum ConnectorResponseUpdate {
|
|||||||
encoded_data: Option<String>,
|
encoded_data: Option<String>,
|
||||||
connector_name: Option<String>,
|
connector_name: Option<String>,
|
||||||
},
|
},
|
||||||
|
ErrorUpdate {
|
||||||
|
connector_name: Option<String>,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ConnectorResponseUpdate {
|
impl ConnectorResponseUpdate {
|
||||||
pub fn apply_changeset(self, source: ConnectorResponse) -> ConnectorResponse {
|
pub fn apply_changeset(self, source: ConnectorResponse) -> ConnectorResponse {
|
||||||
let connector_response_update: ConnectorResponseUpdateInternal = self.into();
|
let connector_response_update: ConnectorResponseUpdateInternal = self.into();
|
||||||
ConnectorResponse {
|
ConnectorResponse {
|
||||||
modified_at: connector_response_update.modified_at,
|
modified_at: connector_response_update
|
||||||
connector_transaction_id: connector_response_update.connector_transaction_id,
|
.modified_at
|
||||||
authentication_data: connector_response_update.authentication_data,
|
.unwrap_or_else(common_utils::date_time::now),
|
||||||
encoded_data: connector_response_update.encoded_data,
|
connector_name: connector_response_update
|
||||||
|
.connector_name
|
||||||
|
.or(source.connector_name),
|
||||||
|
connector_transaction_id: source
|
||||||
|
.connector_transaction_id
|
||||||
|
.or(connector_response_update.connector_transaction_id),
|
||||||
|
authentication_data: connector_response_update
|
||||||
|
.authentication_data
|
||||||
|
.or(source.authentication_data),
|
||||||
|
encoded_data: connector_response_update
|
||||||
|
.encoded_data
|
||||||
|
.or(source.encoded_data),
|
||||||
..source
|
..source
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,9 +94,14 @@ impl From<ConnectorResponseUpdate> for ConnectorResponseUpdateInternal {
|
|||||||
connector_transaction_id,
|
connector_transaction_id,
|
||||||
authentication_data,
|
authentication_data,
|
||||||
encoded_data,
|
encoded_data,
|
||||||
modified_at: common_utils::date_time::now(),
|
modified_at: Some(common_utils::date_time::now()),
|
||||||
connector_name,
|
connector_name,
|
||||||
},
|
},
|
||||||
|
ConnectorResponseUpdate::ErrorUpdate { connector_name } => Self {
|
||||||
|
connector_name,
|
||||||
|
modified_at: Some(common_utils::date_time::now()),
|
||||||
|
..Self::default()
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,6 +96,7 @@ pub enum PaymentAttemptUpdate {
|
|||||||
},
|
},
|
||||||
ResponseUpdate {
|
ResponseUpdate {
|
||||||
status: storage_enums::AttemptStatus,
|
status: storage_enums::AttemptStatus,
|
||||||
|
connector: Option<String>,
|
||||||
connector_transaction_id: Option<String>,
|
connector_transaction_id: Option<String>,
|
||||||
authentication_type: Option<storage_enums::AuthenticationType>,
|
authentication_type: Option<storage_enums::AuthenticationType>,
|
||||||
payment_method_id: Option<Option<String>>,
|
payment_method_id: Option<Option<String>>,
|
||||||
@ -106,6 +107,7 @@ pub enum PaymentAttemptUpdate {
|
|||||||
status: storage_enums::AttemptStatus,
|
status: storage_enums::AttemptStatus,
|
||||||
},
|
},
|
||||||
ErrorUpdate {
|
ErrorUpdate {
|
||||||
|
connector: Option<String>,
|
||||||
status: storage_enums::AttemptStatus,
|
status: storage_enums::AttemptStatus,
|
||||||
error_message: Option<String>,
|
error_message: Option<String>,
|
||||||
},
|
},
|
||||||
@ -137,9 +139,10 @@ impl PaymentAttemptUpdate {
|
|||||||
amount: pa_update.amount.unwrap_or(source.amount),
|
amount: pa_update.amount.unwrap_or(source.amount),
|
||||||
currency: pa_update.currency.or(source.currency),
|
currency: pa_update.currency.or(source.currency),
|
||||||
status: pa_update.status.unwrap_or(source.status),
|
status: pa_update.status.unwrap_or(source.status),
|
||||||
connector_transaction_id: pa_update
|
connector: pa_update.connector.or(source.connector),
|
||||||
|
connector_transaction_id: source
|
||||||
.connector_transaction_id
|
.connector_transaction_id
|
||||||
.or(source.connector_transaction_id),
|
.or(pa_update.connector_transaction_id),
|
||||||
authentication_type: pa_update.authentication_type.or(source.authentication_type),
|
authentication_type: pa_update.authentication_type.or(source.authentication_type),
|
||||||
payment_method: pa_update.payment_method.or(source.payment_method),
|
payment_method: pa_update.payment_method.or(source.payment_method),
|
||||||
error_message: pa_update.error_message.or(source.error_message),
|
error_message: pa_update.error_message.or(source.error_message),
|
||||||
@ -203,6 +206,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
|
|||||||
},
|
},
|
||||||
PaymentAttemptUpdate::ResponseUpdate {
|
PaymentAttemptUpdate::ResponseUpdate {
|
||||||
status,
|
status,
|
||||||
|
connector,
|
||||||
connector_transaction_id,
|
connector_transaction_id,
|
||||||
authentication_type,
|
authentication_type,
|
||||||
payment_method_id,
|
payment_method_id,
|
||||||
@ -210,6 +214,7 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
|
|||||||
mandate_id,
|
mandate_id,
|
||||||
} => Self {
|
} => Self {
|
||||||
status: Some(status),
|
status: Some(status),
|
||||||
|
connector,
|
||||||
connector_transaction_id,
|
connector_transaction_id,
|
||||||
authentication_type,
|
authentication_type,
|
||||||
payment_method_id,
|
payment_method_id,
|
||||||
@ -219,9 +224,11 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
PaymentAttemptUpdate::ErrorUpdate {
|
PaymentAttemptUpdate::ErrorUpdate {
|
||||||
|
connector,
|
||||||
status,
|
status,
|
||||||
error_message,
|
error_message,
|
||||||
} => Self {
|
} => Self {
|
||||||
|
connector,
|
||||||
status: Some(status),
|
status: Some(status),
|
||||||
error_message,
|
error_message,
|
||||||
modified_at: Some(common_utils::date_time::now()),
|
modified_at: Some(common_utils::date_time::now()),
|
||||||
|
|||||||
Reference in New Issue
Block a user