mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-11-04 05:59:48 +08:00 
			
		
		
		
	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:
		@ -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))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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",
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user