pix_brcode/
json_payload.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize)]
4struct MerchantAccountInformation {
5    #[serde(rename = "00")]
6    merchant_gui: String,
7    #[serde(rename = "01")]
8    /// URL hosted by PSP
9    location: String,
10}
11
12#[derive(Serialize, Deserialize)]
13pub struct DynamicCalendar {}
14
15#[derive(Serialize, Deserialize)]
16/// Deve conter CPF ou CNPJ
17pub struct DynamicDebtor {
18    cpf: Option<String>,
19    cnpj: Option<String>,
20    nome: String,
21}
22
23#[derive(Serialize, Deserialize)]
24struct Valor {
25    original: Option<i32>,
26    abatimento: Option<i32>,
27    desconto: Option<i32>,
28    juros: Option<i32>,
29    multa: Option<i32>,
30    #[serde(rename = "final")]
31    /// Valor final da cobrança, considerados abatimentos, desconto, juros e multa.
32    /// Ressalvado o campo original, se todos os demais campos estiverem zerados, o App do PSP do pagador deve exibir
33    /// apenas o campo final.
34    valor_final: i32,
35}
36
37#[derive(Serialize, Deserialize)]
38/// Utilizado
39struct PixDynamicPayload {
40    #[serde(rename = "revisao")]
41    revisao_cobranca: i64,
42    #[serde(flatten)]
43    calendario: DynamicCalendar,
44
45    #[serde(flatten)]
46    devedor: DynamicDebtor,
47    #[serde(rename = "txid")]
48    identificador_transacao: String,
49}