feat(events): Add audit events payment confirm (#4763)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
Co-authored-by: Sampras Lopes <Sampras.lopes@juspay.in>
This commit is contained in:
Abhishek Kanojia
2024-06-10 18:18:27 +05:30
committed by GitHub
parent a2b17cbc96
commit eb0101fa7d
3 changed files with 29 additions and 5 deletions

View File

@ -29,6 +29,7 @@ use crate::{
utils as core_utils, utils as core_utils,
}, },
db::StorageInterface, db::StorageInterface,
events::audit_events::{AuditEvent, AuditEventType},
routes::{app::ReqState, SessionState}, routes::{app::ReqState, SessionState},
services, services,
types::{ types::{
@ -935,7 +936,7 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
async fn update_trackers<'b>( async fn update_trackers<'b>(
&'b self, &'b self,
state: &'b SessionState, state: &'b SessionState,
_req_state: ReqState, req_state: ReqState,
mut payment_data: PaymentData<F>, mut payment_data: PaymentData<F>,
customer: Option<domain::Customer>, customer: Option<domain::Customer>,
storage_scheme: storage_enums::MerchantStorageScheme, storage_scheme: storage_enums::MerchantStorageScheme,
@ -1294,6 +1295,19 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
payment_data.payment_intent = payment_intent; payment_data.payment_intent = payment_intent;
payment_data.payment_attempt = payment_attempt; payment_data.payment_attempt = payment_attempt;
let client_src = payment_data.payment_attempt.client_source.clone();
let client_ver = payment_data.payment_attempt.client_version.clone();
let frm_message = payment_data.frm_message.clone();
req_state
.event_context
.event(AuditEvent::new(AuditEventType::PaymentConfirm {
client_src,
client_ver,
frm_message,
}))
.with(payment_data.to_event())
.emit();
Ok((Box::new(self), payment_data)) Ok((Box::new(self), payment_data))
} }
} }

View File

@ -1,18 +1,27 @@
use diesel_models::fraud_check::FraudCheck;
use events::{Event, EventInfo}; use events::{Event, EventInfo};
use serde::Serialize; use serde::Serialize;
use time::PrimitiveDateTime; use time::PrimitiveDateTime;
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
#[serde(tag = "event_type")] #[serde(tag = "event_type")]
pub enum AuditEventType { pub enum AuditEventType {
Error { error_message: String }, Error {
error_message: String,
},
PaymentCreated, PaymentCreated,
ConnectorDecided, ConnectorDecided,
ConnectorCalled, ConnectorCalled,
RefundCreated, RefundCreated,
RefundSuccess, RefundSuccess,
RefundFail, RefundFail,
PaymentCancelled { cancellation_reason: Option<String> }, PaymentConfirm {
client_src: Option<String>,
client_ver: Option<String>,
frm_message: Option<FraudCheck>,
},
PaymentCancelled {
cancellation_reason: Option<String>,
},
} }
#[derive(Debug, Clone, Serialize)] #[derive(Debug, Clone, Serialize)]
@ -43,6 +52,7 @@ impl Event for AuditEvent {
let event_type = match &self.event_type { let event_type = match &self.event_type {
AuditEventType::Error { .. } => "error", AuditEventType::Error { .. } => "error",
AuditEventType::PaymentCreated => "payment_created", AuditEventType::PaymentCreated => "payment_created",
AuditEventType::PaymentConfirm { .. } => "payment_confirm",
AuditEventType::ConnectorDecided => "connector_decided", AuditEventType::ConnectorDecided => "connector_decided",
AuditEventType::ConnectorCalled => "connector_called", AuditEventType::ConnectorCalled => "connector_called",
AuditEventType::RefundCreated => "refund_created", AuditEventType::RefundCreated => "refund_created",