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.
| Campo | Tipo | Descripción |
|---|---|---|
GF_Company | String | Tu usuario de plataforma con G-Force |
GF_Token | String | Tu contraseña de plataforma con G-Force |
Enterprise | String | Có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.
| Campo | Tipo | Descripción |
|---|---|---|
Company | String | Usuario del contribuyente, emitido por el PAC |
Token | String | Contraseña del contribuyente, emitida por el PAC |
Id_Pac | String | A qué PAC enrutar la solicitud |
PACs soportados
Id_Pac | Nombre del PAC |
|---|---|
EBI | Electronic Business Intelligence |
EFPTY | eFacturapty |
FF | Factura Fácil |
TFHKA | The 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/.