ConteoDocs

Autenticación

Tres capas de autenticación requeridas para todas las solicitudes a la API del Gateway G-Force.

Autenticación

Cada solicitud al Gateway de G-Force requiere tres capas de autenticación.

1. Header JWT

Todas las solicitudes deben incluir un token JWT en el header Authorization:

Authorization: <JWT_TOKEN>

Este token lo proporciona G-Force. Consulta con G-Force la política de rotación por entorno.

2. Credenciales de G-Force (nivel plataforma)

Estas identifican tu aplicación como plataforma. Un solo juego para toda la app, se guardan como variables de entorno.

CampoTipoDescripción
GF_CompanyStringTu usuario de plataforma con G-Force
GF_TokenStringTu contraseña de plataforma con G-Force
EnterpriseStringCódigo de empresa asignado por G-Force

3. Credenciales del PAC (nivel contribuyente)

Estas identifican al negocio/contribuyente específico. Un juego por usuario, obtenidas durante la afiliación al PAC.

CampoTipoDescripción
CompanyStringUsuario del contribuyente, emitido por el PAC
TokenStringContraseña del contribuyente, emitida por el PAC
Id_PacStringA qué PAC enrutar la solicitud

PACs soportados

Id_PacNombre del PAC
EBIElectronic Business Intelligence
EFPTYeFacturapty
FFFactura Fácil
TFHKAThe Factory HKA Corp

Ejemplo de estructura de solicitud

Cada solicitud POST incluye los campos de autenticación en la raíz del body, más los campos específicos del método:

curl -X POST \
  https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB/{METODO} \
  -H "Authorization: TU_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "GF_Company": "tu_usuario_gforce",
    "GF_Token": "tu_contraseña_gforce",
    "Id_Pac": "EBI",
    "Enterprise": "tu_codigo_empresa",
    "Company": "tu_usuario_pac",
    "Token": "tu_contraseña_pac"
  }'
const BASE_URL = 'https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB';

const auth = {
  GF_Company: process.env.GF_COMPANY,
  GF_Token: process.env.GF_TOKEN,
  Enterprise: process.env.GF_ENTERPRISE,
  Id_Pac: 'EBI',
  Company: user.pacUsername,   // credenciales PAC por usuario
  Token: user.pacPassword,
};

const response = await fetch(`${BASE_URL}/SendDocument`, {
  method: 'POST',
  headers: {
    'Authorization': process.env.JWT_TOKEN,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    ...auth,
    // ... campos especificos del metodo
  }),
});
import os
import requests

BASE_URL = "https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB"

auth = {
    "GF_Company": os.environ["GF_COMPANY"],
    "GF_Token": os.environ["GF_TOKEN"],
    "Enterprise": os.environ["GF_ENTERPRISE"],
    "Id_Pac": "EBI",
    "Company": user.pac_username,   # credenciales PAC por usuario
    "Token": user.pac_password,
}

response = requests.post(
    f"{BASE_URL}/SendDocument",
    json={**auth, ...},  # merge auth + campos del metodo
    headers={
        "Authorization": os.environ["JWT_TOKEN"],
        "Content-Type": "application/json",
    },
)
$baseUrl = 'https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB';

$auth = [
    'GF_Company' => getenv('GF_COMPANY'),
    'GF_Token' => getenv('GF_TOKEN'),
    'Enterprise' => getenv('GF_ENTERPRISE'),
    'Id_Pac' => 'EBI',
    'Company' => $user->pac_username,   // credenciales PAC por usuario
    'Token' => $user->pac_password,
];

$ch = curl_init("$baseUrl/SendDocument");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: ' . getenv('JWT_TOKEN'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(array_merge($auth, [
        // ... campos especificos del metodo
    ])),
]);

Recomendaciones de seguridad

  • Guarda las credenciales de G-Force (GF_Company, GF_Token, Enterprise) en variables de entorno
  • Guarda las credenciales del PAC (Company, Token, Id_Pac) encriptadas por usuario (AES o equivalente)
  • Nunca expongas credenciales en código del lado del cliente ni en logs
  • Rota las credenciales inmediatamente si se comprometen

Credenciales de desarrollo

Para pruebas en el entorno de desarrollo:

{
  "GF_Company": "tu_usuario_gforce",
  "GF_Token": "tu_contraseña_gforce",
  "Enterprise": "tu_codigo_empresa",
  "Company": "usuario_pac_contribuyente",
  "Token": "contraseña_pac_contribuyente",
  "Id_Pac": "EBI"
}

Estas funcionan contra https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB/.

On this page