1#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, Default)]
2#[serde(rename_all = "camelCase")]
3#[allow(clippy::struct_excessive_bools)]
4pub struct FormaPago {
5 pub permitir_tarjeta_credito_debido: bool,
6 pub permitir_pago_con_punto_agricola: bool,
7 pub permitir_pago_en_cuotas_agricola: bool,
8 pub permitir_pago_en_bitcoin: bool,
9 pub permite_pago_quick_pay: bool,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, Default)]
13#[serde(rename_all = "camelCase")]
14pub struct InfoProducto {
15 pub descripcion_producto: String,
16 pub url_imagen_producto: String,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, Default)]
20#[serde(rename_all = "camelCase")]
21pub struct Configuracion {
22 pub url_redirect: String,
23 pub es_monto_editable: bool,
24 pub es_cantidad_editable: bool,
25 pub cantidad_por_defecto: u64,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub duracion_interfaz_intento_minutos: Option<u64>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub url_retorno: Option<String>,
30 pub emails_notificacion: String,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub url_webhook: Option<String>,
33 pub telefonos_notificacion: String,
34 pub notificar_transaccion_cliente: bool,
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, Default)]
38#[serde(rename_all = "camelCase")]
39pub struct Vigencia {
40 pub fecha_inicio: chrono::DateTime<chrono::Utc>,
41 pub fecha_fin: chrono::DateTime<chrono::Utc>,
42}
43
44#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize, Default)]
45#[serde(rename_all = "camelCase")]
46pub struct LimitesDeUso {
47 pub cantidad_maxima_pagos_exitosos: u64,
48 pub cantidad_maxima_pagos_fallidos: u64,
49}
50
51#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
52#[serde(rename_all = "camelCase")]
53pub struct PeticionEnlaceDePago<T> {
54 pub identificador_enlace_comercio: String,
55 pub monto: f64,
56 pub nombre_producto: String,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub forma_pago: Option<FormaPago>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub cantidad_maxima_cuotas: Option<String>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub info_producto: Option<InfoProducto>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub configuracion: Option<Configuracion>,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub vigencia: Option<Vigencia>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub limites_de_uso: Option<LimitesDeUso>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub id_grupo_tarjetas: Option<String>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub datos_adicionales: Option<T>,
73}
74
75#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct RespuestaEnlaceDePago {
78 pub id_enlace: u64,
79 pub url_qr_code_enlace: String,
80 pub url_enlace: String,
81 pub esta_productivo: bool,
82}