zebedee_rust/charges/
types.rs

1use crate::StdResp;
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4
5pub type FetchChargesResponse = StdResp<Option<Vec<ChargesData>>>;
6pub type FetchOneChargeResponse = StdResp<Option<ChargesData>>;
7
8#[derive(Debug, Serialize, Deserialize, Clone, Default)]
9pub struct InvoiceData {
10    pub request: String,
11    pub uri: String,
12}
13
14#[derive(Debug, Serialize, Deserialize, Default)]
15pub struct ChargesData {
16    pub id: String,
17    pub unit: String,
18    pub amount: String,
19    #[serde(rename = "createdAt")]
20    pub created_at: Option<DateTime<Utc>>,
21    #[serde(rename = "internalId")]
22    pub internal_id: String,
23    #[serde(rename = "callbackUrl")]
24    pub callback_url: String,
25    pub description: String,
26    #[serde(rename = "expiresAt")]
27    pub expires_at: Option<DateTime<Utc>>,
28    #[serde(rename = "confirmedAt")]
29    pub confirmed_at: Option<DateTime<Utc>>,
30    pub status: String,
31    pub invoice: Option<InvoiceData>,
32}
33
34/// Use this struct to create a well crafted json body for your charge requests
35#[derive(Debug, Serialize, Deserialize)]
36pub struct Charge {
37    #[serde(rename = "expiresIn")]
38    pub expires_in: u32,
39    pub amount: String,
40    pub description: String,
41    #[serde(rename = "internalId")]
42    pub internal_id: String,
43    #[serde(rename = "callbackUrl")]
44    pub callback_url: String,
45}
46
47impl Default for Charge {
48    fn default() -> Self {
49        Charge {
50            expires_in: 300,
51            amount: String::from("0"),
52            description: String::from("using zebedee rust sdk"),
53            internal_id: String::from(""),
54            callback_url: String::from(""),
55        }
56    }
57}