mercadopago_sdk_rust/card_tokens/
requests.rs1use serde::{Deserialize, Serialize};
2
3use crate::common_types::{Cardholder, PersonalIdentification};
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct CardTokenOptions<'a> {
8 pub(crate) card_number: &'a str,
9 pub(crate) expiration_month: &'a str,
10 pub(crate) expiration_year: &'a str,
11 pub(crate) security_code: &'a str,
12 pub(crate) cardholder: Cardholder,
13
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub(crate) public_key: Option<String>,
16}
17
18impl<'a> CardTokenOptions<'a> {
19 pub fn new(
20 card_number: &'a str,
21 card_expiration_month: &'a str,
22 card_expiration_year: &'a str,
23 security_code: &'a str,
24 cardholder_name: String,
25 cardholder_personal_id: PersonalIdentification,
26 ) -> CardTokenOptions<'a> {
27 Self {
28 card_number,
29 expiration_month: card_expiration_month,
30 expiration_year: card_expiration_year,
31 security_code,
32 cardholder: Cardholder {
33 name: cardholder_name,
34 identification: cardholder_personal_id,
35 },
36
37 public_key: None,
38 }
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn t_token_serialization() {
48 #[test]
49 fn t_token_response() {
50 let payload = serde_json::from_slice::<CardTokenOptions>(include_bytes!(
51 "../../tests/assets/card_tokens_create_request.json"
52 ))
53 .unwrap();
54 println!("{:?}", payload);
55 }
56 }
57}