feat: implement FRM flows (#2968)

Co-authored-by: Kashif <kashif@protonmail.com>
Co-authored-by: AkshayaFoiger <131388445+AkshayaFoiger@users.noreply.github.com>
Co-authored-by: Kashif <mohammed.kashif@juspay.in>
This commit is contained in:
Kashif
2023-12-05 18:21:32 +05:30
committed by GitHub
parent 792e642ad5
commit 055d838367
45 changed files with 5199 additions and 161 deletions

View File

@ -17,6 +17,8 @@ use once_cell::sync::Lazy;
use regex::Regex;
use serde::Serializer;
#[cfg(feature = "frm")]
use crate::types::{fraud_check, storage::enums as storage_enums};
use crate::{
consts,
core::{
@ -1575,3 +1577,51 @@ pub fn validate_currency(
}
Ok(())
}
#[cfg(feature = "frm")]
pub trait FraudCheckSaleRequest {
fn get_order_details(&self) -> Result<Vec<OrderDetailsWithAmount>, Error>;
}
#[cfg(feature = "frm")]
impl FraudCheckSaleRequest for fraud_check::FraudCheckSaleData {
fn get_order_details(&self) -> Result<Vec<OrderDetailsWithAmount>, Error> {
self.order_details
.clone()
.ok_or_else(missing_field_err("order_details"))
}
}
#[cfg(feature = "frm")]
pub trait FraudCheckCheckoutRequest {
fn get_order_details(&self) -> Result<Vec<OrderDetailsWithAmount>, Error>;
}
#[cfg(feature = "frm")]
impl FraudCheckCheckoutRequest for fraud_check::FraudCheckCheckoutData {
fn get_order_details(&self) -> Result<Vec<OrderDetailsWithAmount>, Error> {
self.order_details
.clone()
.ok_or_else(missing_field_err("order_details"))
}
}
#[cfg(feature = "frm")]
pub trait FraudCheckTransactionRequest {
fn get_currency(&self) -> Result<storage_enums::Currency, Error>;
}
#[cfg(feature = "frm")]
impl FraudCheckTransactionRequest for fraud_check::FraudCheckTransactionData {
fn get_currency(&self) -> Result<storage_enums::Currency, Error> {
self.currency.ok_or_else(missing_field_err("currency"))
}
}
#[cfg(feature = "frm")]
pub trait FraudCheckRecordReturnRequest {
fn get_currency(&self) -> Result<storage_enums::Currency, Error>;
}
#[cfg(feature = "frm")]
impl FraudCheckRecordReturnRequest for fraud_check::FraudCheckRecordReturnData {
fn get_currency(&self) -> Result<storage_enums::Currency, Error> {
self.currency.ok_or_else(missing_field_err("currency"))
}
}