C1 - Demo para ERP
Propósito: Desarrollo y validación de estructura XML
Características:
- Validación completa de estructura
- Sin envío real a DIAN
- Ideal para pruebas de integración
Facturatech maneja tres tipos de credenciales según el propósito de uso:
C1 - Demo para ERP
Propósito: Desarrollo y validación de estructura XML
Características:
C2 - Demo con Consumo
Propósito: Pruebas de integración completas
Características:
C3 - Productivo
Propósito: Emisión real de nómina electrónica
Características:
Ambiente actual para pruebas y desarrollo de la integración.
{ "ambiente": "demo", "wsdl": "https://ws-nomina.facturatech.co/v1/demo/index.php?wsdl", "namespace": "urn:https://ws-nomina.facturatech.co/v1/demo/", "usuario": "DATAEM19112025", "password_sha256": "f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93", "tipo_credencial": "C1"}{ "ambiente": "produccion", "wsdl": "[POR DEFINIR - Pendiente por Facturatech]", "namespace": "[POR DEFINIR]", "usuario": "[A proporcionar]", "password_sha256": "[A proporcionar]", "tipo_credencial": "C3"}El API requiere que el password se envíe encriptado con SHA256 en cada petición.
<?php$passwordOriginal = "mi_password_secreto";$passwordSHA256 = hash('sha256', $passwordOriginal);
echo $passwordSHA256;// Output: f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93const crypto = require('crypto');
const passwordOriginal = "mi_password_secreto";const passwordSHA256 = crypto .createHash('sha256') .update(passwordOriginal) .digest('hex');
console.log(passwordSHA256);// Output: f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93echo -n "mi_password_secreto" | sha256sum# Output: f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93; Facturatech - Nómina Electrónicafacturatech.ambiente = "demo"facturatech.wsdl.demo = "https://ws-nomina.facturatech.co/v1/demo/index.php?wsdl"facturatech.wsdl.produccion = ""facturatech.namespace.demo = "urn:https://ws-nomina.facturatech.co/v1/demo/"facturatech.namespace.produccion = ""facturatech.usuario = "DATAEM19112025"facturatech.password = "f8c0e8471f126c77bd23f664f3ce251b8f9943f1d95a6ffdda72f8e6b76c9b93"facturatech.timeout = 30facturatech.trace = 1<?php
class Dataemunah_Facturatech_Config{ private static $_config = null;
public static function init() { if (self::$_config === null) { $config = Zend_Registry::get('config'); self::$_config = $config->facturatech; } return self::$_config; }
public static function getWsdl() { $config = self::init(); $ambiente = $config->ambiente;
return ($ambiente === 'produccion') ? $config->wsdl->produccion : $config->wsdl->demo; }
public static function getNamespace() { $config = self::init(); $ambiente = $config->ambiente;
return ($ambiente === 'produccion') ? $config->namespace->produccion : $config->namespace->demo; }
public static function getUsuario() { return self::init()->usuario; }
public static function getPassword() { return self::init()->password; // Ya está en SHA256 }
public static function isProduccion() { return self::init()->ambiente === 'produccion'; }}NO Hacer
SÍ Hacer
FACTURATECH_AMBIENTE=demoFACTURATECH_USUARIO=DATAEM19112025FACTURATECH_PASSWORD_SHA256=f7fc87af7f8887g7878ad7777887ddf60f8d8998<?php// En Bootstrap$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);$dotenv->load();
$config->facturatech->usuario = $_ENV['FACTURATECH_USUARIO'];$config->facturatech->password = $_ENV['FACTURATECH_PASSWORD_SHA256'];<?phprequire_once 'library/Dataemunah/Facturatech/Config.php';
try { $wsdl = Dataemunah_Facturatech_Config::getWsdl();
$client = new SoapClient($wsdl, [ 'trace' => 1, 'exceptions' => true, 'encoding' => 'UTF-8', 'soap_version' => SOAP_1_1, 'connection_timeout' => 10 ]);
echo "Conexión exitosa a Facturatech\n"; echo "Ambiente: " . Dataemunah_Facturatech_Config::init()->ambiente . "\n"; echo "WSDL: " . $wsdl . "\n";
// Listar funciones disponibles echo "\nFunciones disponibles:\n"; foreach ($client->__getFunctions() as $function) { echo " - " . $function . "\n"; }
} catch (SoapFault $e) { echo "Error de conexión: " . $e->getMessage() . "\n"; exit(1);} catch (Exception $e) { echo "Error general: " . $e->getMessage() . "\n"; exit(1);}Salida esperada:
Conexión exitosa a Facturatech Ambiente: demo WSDL: https://ws-nomina.facturatech.co/v1/demo/index.php?wsdl
Funciones disponibles: - uploadDocument(string $username, string $password, string $xmlBase64) - documentStatus(string $username, string $password, string $transaccionID) - downloadXML(string $username, string $password, string $prefijo, string $folio) - downloadPDF(string $username, string $password, string $prefijo, string $folio) - downloadCUNE(string $username, string $password, string $prefijo, string $folio)Antes de iniciar la integración, verificar:
application.ini correctaDataemunah_Facturatech_Config implementada*.facturatech.co.env o application.ini¿Problemas con las credenciales o autenticación?
NOMINA:\3. documentacion\facturatech\integracion o comunicarse con el Lider tecnico del productoUna vez configurada la autenticación: