Guía de Integración AHORA DeCA

Creado por Enrique Meseguer, Modificado el Jue, 10 Sep a 6:09 P. M. por Enrique Meseguer


TABLA DE CONTENIDOS




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


  1. Adquisición del servicio: Realizar la compra del paquete deseado (por volumen) a través de la plataforma ABH.
  2. 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.
  3. 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:


CampoTipoDescripción / Requisitos
idTransporteNuméricoIdentificador del transporte en el ERP origen.
idEmpresaNuméricoIdentificador de la empresa en el ERP origen.
applicationIdStringClient ID proporcionado en ABH.
Origen
origen_NIFStringDebe coincidir con el NIF del certificado digital subido al portal web.
origen_TipoComunicacionStringValores permitidos: "sms" | "email". Obliga a informar el móvil o el email según corresponda.
origen_PaisStringUsar formato código ISO (ej. "ES").
Transportista y Destino
*_TipoComunicacionStringValores permitidos: "sms" | "email". Define la vía del envío de notificaciones.
destino_PaisStringUsar formato código ISO (ej. "ES").
Detalles del Transporte
transporte_FechaString (ISO 8601)Fecha y hora del transporte.
transporte_PesoNuméricoPeso total de la carga (en kg).
transporte_PeligrosoBooleanotrue si es mercancía peligrosa (ADR), false si no.
ficheroBase64StringDocumento 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

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo