emv_3ds/message/
error_msg.rs1use crate::types::MessageVersion;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct ErrorMessage {
11 pub message_type: MessageType,
12 pub message_version: MessageVersion,
13 pub error_code: String,
15 pub error_description: String,
17 pub error_detail: String,
19 pub error_message_type: String,
21 #[serde(
23 rename = "threeDSServerTransID",
24 skip_serializing_if = "Option::is_none"
25 )]
26 pub three_ds_server_trans_id: Option<String>,
27 #[serde(rename = "acsTransID", skip_serializing_if = "Option::is_none")]
28 pub acs_trans_id: Option<String>,
29 #[serde(rename = "dsTransID", skip_serializing_if = "Option::is_none")]
30 pub ds_trans_id: Option<String>,
31 #[serde(rename = "sdkTransID", skip_serializing_if = "Option::is_none")]
32 pub sdk_trans_id: Option<String>,
33}
34
35pub mod error_codes {
37 pub const INVALID_FORMAT: &str = "101";
38 pub const INVALID_FORMAT_CRITICAL: &str = "102";
39 pub const REQUIRED_ELEMENT_MISSING: &str = "201";
40 pub const CRITICAL_ELEMENT_MISSING: &str = "202";
41 pub const FORMAT_VIOLATION: &str = "203";
42 pub const DUPLICATE_ELEMENT: &str = "301";
43 pub const TRANSACTION_TIMED_OUT: &str = "402";
44 pub const TRANSACTION_TIMED_OUT_DECOUPLED: &str = "403";
45 pub const ACCESS_DENIED: &str = "404";
46 pub const UNKNOWN_PROTOCOL_ELEMENT: &str = "405";
47 pub const SYSTEM_ERROR: &str = "500";
48}
49
50#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
51pub enum MessageType {
52 Erro,
53}