TABLA DE CONTENIDOS
- 1. INTRODUCCIÓN
- 2. FLUJO DE ALTA Y CONFIGURACIÓN INICIAL
- 3. AUTENTICACIÓN (OAUTH2)
- 4. SERVICIO DE CRECION DE DOCUMENTOS (DeCA)
1. INTRODUCCIÓN
El módulo AHORA DeCA integrado en Ahora Business Hub (ABH) permite dar cumplimiento a la legislación vigente sobre transporte nacional de mercancia por carretera mediante la digitalización, firma electrónica y generación de Documento Electrónico de Control Administrativo (DeCA).
La integración con este servicio se realiza mediante una API REST web, lo que permite a cualquier sistema ERP, software de gestión o aplicación de terceros interactuar con la plataforma de forma programática. A través de endpoints HTTP estándar, autenticación basada en protocolo OAuth 2.0 y el intercambio de estructuras JSON, los sistemas externos pueden automatizar de principio a fin el proceso de emisión, firma y almacenamiento de los DeCA.
2. FLUJO DE ALTA Y CONFIGURACIÓN INICIAL
- Adquisición del servicio: Realizar la compra del paquete deseado (por volumen) a través de la plataforma ABH.
- Acceso al portal web: Tras la compra, se recibirá un correo electrónico con el enlace de acceso e instrucciones para:
- Subir e indicar el certificado digital del firmante.
- Almacenar y consultar los documentos generados.
- Visualizar el estado de procesamiento de cada documento.
- Credenciales de API: En la información proporcionada se incluirán las siguientes claves para la integración:
- baseUrl: [https://login.ahorabh.com](https://login.ahorabh.com)
- TenantId
- ClientId
- ClientSecret
- Scope: use_ley_movilidad_sostenible
3. AUTENTICACIÓN (OAUTH2)
Antes de enviar solicitudes a la API de DeCA, la aplicación cliente debe obtener un Bearer Token realizando una petición de autenticación mediante Client Credentials.
- Endpoint de Autenticación: POST {baseUrl}/{TenantId}/oauth2/token
- Tipo de Autorización: Basic Auth (usando ClientId y ClientSecret codificados en Base64).
- Parámetros del Body (Form Data):
- grant_type: client_credentials
- scope: use_ley_movilidad_sostenible
Ejemplo de implementación en C#
C#
using System.Net.Http;
using System.Net.Http.Headers;
using System.Collections.Generic;
using (var handler = new HttpClientHandler())
{
// Configuración SSL/TLS
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, chain, policyErrors) => true;
handler.SslProtocols = System.Security.Authentication.SslProtocols.Tls |
System.Security.Authentication.SslProtocols.Tls11 |
System.Security.Authentication.SslProtocols.Tls12;
using (var httpClient = new HttpClient(handler))
{
// Headers
string credentials = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes($"{clientId}:{clientSecret}"));
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
// Body
var parameters = new Dictionary<string, string>
{
{ "grant_type", "client_credentials" },
{ "scope", scope }
};
// Petición Token
string url = $"{baseUrl}/{tenant}/oauth2/token";
var response = httpClient.PostAsync(url, new FormUrlEncodedContent(parameters)).GetAwaiter().GetResult();
string jsonResponse = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
}
}4. SERVICIO DE CREACIÓN DE DOCUMENTOS (DeCA)
Una vez obtenido el Bearer Token, se utiliza para autorizar la creación de cartas de porte enviando un objeto JSON en el cuerpo de la petición.
- Endpoint: POST [https://leymovilidad.ahorabh.com/](https://leymovilidad.ahorabh.com/){TenantId}/api/v1/CartasPorte/crear
- Headers requeridos:
- Authorization: Bearer {token_obtenido}
- Content-Type: application/json
4.1. ESTRUCTURA DE LA PETICIÓN
JSON
{
"idTransporte": 12345,
"idEmpresa": 1,
"applicationId": "string_client_id",
"origen_NIF": "B12345678",
"origen_RazonSocial": "Empresa Carga S.L.",
"origen_Email": "origen@empresa.com",
"origen_Movil": "+34600000000",
"origen_TipoComunicacion": "email",
"origen_Direccion": "Calle Carga 1",
"origen_CodigoPostal": "28001",
"origen_Ciudad": "Madrid",
"origen_Pais": "ES",
"transportista_NIF": "12345678Z",
"transportista_RazonSocial": "Juan Pérez Transportes",
"transportista_Email": "chofer@transporte.com",
"transportista_Movil": "+34611111111",
"transportista_TipoComunicacion": "sms",
"destino_NIF": "A87654321",
"destino_RazonSocial": "Empresa Destino S.A.",
"destino_Email": "destino@empresa.com",
"destino_Movil": "+34622222222",
"destino_TipoComunicacion": "email",
"destino_Direccion": "Avenida Descarga 10",
"destino_CodigoPostal": "08001",
"destino_Ciudad": "Barcelona",
"destino_Pais": "ES",
"transporte_Fecha": "2026-09-09T09:36:59.724Z",
"transporte_Naturaleza": "Mercancías generales",
"transporte_Peso": 1500.50,
"transporte_MatriculaTractor": "1234ABC",
"transporte_MatriculaRemolque": "R5678DEF",
"transporte_DescripcionMercancia": "Cajas de material informático",
"transporte_Peligroso": false,
"ficheroBase64": "JVBERi0xLjRf..."
}Descripción de Campos Obligatorios y Restricciones:
| Campo | Tipo | Descripción / Requisitos |
idTransporte | Numérico | Identificador del transporte en el ERP origen. |
idEmpresa | Numérico | Identificador de la empresa en el ERP origen. |
applicationId | String | Client ID proporcionado en ABH. |
| Origen | ||
origen_NIF | String | Debe coincidir con el NIF del certificado digital subido al portal web. |
origen_TipoComunicacion | String | Valores permitidos: "sms" | "email". Obliga a informar el móvil o el email según corresponda. |
origen_Pais | String | Usar formato código ISO (ej. "ES"). |
| Transportista y Destino | ||
*_TipoComunicacion | String | Valores permitidos: "sms" | "email". Define la vía del envío de notificaciones. |
destino_Pais | String | Usar formato código ISO (ej. "ES"). |
| Detalles del Transporte | ||
transporte_Fecha | String (ISO 8601) | Fecha y hora del transporte. |
transporte_Peso | Numérico | Peso total de la carga (en kg). |
transporte_Peligroso | Booleano | true si es mercancía peligrosa (ADR), false si no. |
ficheroBase64 | String | Documento PDF codificado en Base64 con el diseño visual para autoridades/transportistas. |
4.2. RESPUESTA DE LA API
Si la petición es procesada correctamente, el servicio devolverá un código de estado 200 OK con el siguiente cuerpo:
JSON
{
"Success": true,
"Message": "Carta de porte guardada correctamente",
"decaurl": "https://leymovilidad.ahorabh.com/docs/abc123xyz",
"identificadorqr": "QR-987654321"
}decaurl: Enlace directo para consultar el documento digital generado.identificadorqr: Código identificador único asociado al QR del documento generado.
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo