Skip to main content

emv_3ds/message/
preq.rs

1use crate::types::MessageVersion;
2use serde::{Deserialize, Serialize};
3
4/// EMV 3DS Preparation Request (PReq).
5///
6/// Sent by the 3DS Server to the Directory Server before the first AReq to
7/// negotiate protocol versions and retrieve card range data.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct PreparationRequest {
11    pub message_type: MessageType,
12    pub message_version: MessageVersion,
13    #[serde(rename = "threeDSServerTransID")]
14    pub three_ds_server_trans_id: String,
15    #[serde(rename = "dsTransID", skip_serializing_if = "Option::is_none")]
16    pub ds_trans_id: Option<String>,
17    /// Serial number of the last card range data received; omit on first request.
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub serial_num: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub three_ds_server_ref_number: Option<String>,
22}
23
24#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
25pub enum MessageType {
26    PReq,
27}