Ejemplo de factura nómina12 CFDI4 en PHP SDK
<?php
//error_reporting(~(E_WARNING));
date_default_timezone_set('America/Mexico_City');
require_once '../../sdk2.php';
$datos['complemento'] = 'nomina12';
$datos['version_cfdi'] = '4.0';
$datos['cfdi']='../../timbrados/ejemplo_cfdi33_nomina12.xml';
$datos['xml_debug']='../../timbrados/debug_ejemplo_cfdi33_nomina12.xml';
$datos['validacion_local'] = 'NO';
//
$datos['PAC']['usuario'] = 'DEMO700101XXX';
$datos['PAC']['pass'] = 'DEMO700101XXX';
$datos['PAC']['produccion'] = 'NO';
//
$datos['conf']['cer'] = '../../certificados/EKU9003173C9.cer.pem';
$datos['conf']['key'] = '../../certificados/EKU9003173C9.key.pem';
$datos['conf']['pass'] = '12345678a';
//
$datos['factura']['descuento'] = '32.00';
$datos['factura']['fecha_expedicion'] = date('Y-m-d\TH:i:s', time() - 120);
$datos['factura']['folio'] = '01010';
$datos['factura']['LugarExpedicion'] = '56330';
$datos['factura']['metodo_pago'] = 'PUE';
$datos['factura']['moneda'] = 'MXN';
$datos['factura']['serie'] = 'NOMO';
$datos['factura']['subtotal'] = '1225.00';
$datos['factura']['tipocomprobante'] = 'N';
$datos['factura']['total'] = '1193.00';
$datos['factura']['Exportacion'] = '01';
//
$datos['emisor']['rfc'] = 'EKU9003173C9'; //RFC DE PRUEBA
$datos['emisor']['nombre'] = 'ESCUELA KEMPER URGATE'; // EMPRESA DE PRUEBA
$datos['emisor']['RegimenFiscal'] = '603';
//
$datos['receptor']['rfc'] = 'CACX7605101P8';
$datos['receptor']['nombre'] = 'XOCHILT CASAS CHAVEZ';
$datos['receptor']['UsoCFDI'] = 'CN01';
//opcional
$datos['receptor']['DomicilioFiscalReceptor'] = '10740';
//$datos['receptor']['ResidenciaFiscal']= 'MEX';
//$datos['receptor']['NumRegIdTrib'] = 'B';
$datos['receptor']['RegimenFiscalReceptor'] = '605';
//
$datos['conceptos'][0]['cantidad'] = '1';
$datos['conceptos'][0]['descripcion'] = "Pago de nómina";
$datos['conceptos'][0]['valorunitario'] = '1225.00';
$datos['conceptos'][0]['importe'] = '1225.00';
$datos['conceptos'][0]['ClaveUnidad'] = 'ACT';
$datos['conceptos'][0]['ClaveProdServ'] = '84111505';
$datos['conceptos'][0]['Descuento'] = '32.00';
$datos['conceptos'][0]['ObjetoImp'] = '01';
// Obligatorios
$datos['nomina12']['TipoNomina'] = 'O';
$datos['nomina12']['FechaPago'] = '2020-01-03';
$datos['nomina12']['FechaInicialPago'] = '2019-12-30';
$datos['nomina12']['FechaFinalPago'] = '2020-01-05';
$datos['nomina12']['NumDiasPagados'] = '7';
// Opcionales
$datos['nomina12']['TotalPercepciones'] = '1225.00';
$datos['nomina12']['TotalDeducciones'] = '32.00';
$datos['nomina12']['TotalOtrosPagos'] = '0.00';
// SUB NODOS OPCIONALES DE NOMINA [Emisor, Percepciones, Deducciones, OtrosPagos, Incapacidades]
// Nodo Emisor, OPCIONALES
$datos['nomina12']['Emisor']['RegistroPatronal'] = '5525665412';
$datos['nomina12']['Emisor']['RfcPatronOrigen'] = 'AAA010101AAA';
// SUB NODOS OBLIGATORIOS DE NOMINA [Receptor]
// Obligatorios de Receptor
$datos['nomina12']['Receptor']['ClaveEntFed'] = 'JAL';
$datos['nomina12']['Receptor']['Curp'] = 'CACF880922HJCMSR03';
$datos['nomina12']['Receptor']['NumEmpleado'] = '060';
$datos['nomina12']['Receptor']['PeriodicidadPago'] = '04';
$datos['nomina12']['Receptor']['TipoContrato'] = '01';
$datos['nomina12']['Receptor']['TipoRegimen'] = '02';
// Opcionales de Receptor
$datos['nomina12']['Receptor']['Antiguedad'] = 'P21W';
$datos['nomina12']['Receptor']['Banco'] = '021';
$datos['nomina12']['Receptor']['CuentaBancaria'] = '1234567890';
$datos['nomina12']['Receptor']['FechaInicioRelLaboral'] = '2016-06-01';
$datos['nomina12']['Receptor']['NumSeguridadSocial'] = '04078873454';
$datos['nomina12']['Receptor']['Puesto'] = 'Desarrollador';
$datos['nomina12']['Receptor']['RiesgoPuesto'] = '2';
$datos['nomina12']['Receptor']['SalarioBaseCotApor'] = '435.50';
$datos['nomina12']['Receptor']['SalarioDiarioIntegrado'] = '435.50';
// NODO PERCEPCIONES
// Totales Obligatorios
$datos['nomina12']['Percepciones']['TotalGravado'] = '1225.00';
$datos['nomina12']['Percepciones']['TotalExento'] = '0.00';
// Totales Opcionales
$datos['nomina12']['Percepciones']['TotalSueldos'] = '1225.00';
// Agregar Percepciones (Todos obligatorios)
$datos['nomina12']['Percepciones'][0]['TipoPercepcion'] = '001';
$datos['nomina12']['Percepciones'][0]['Clave'] = '001';
$datos['nomina12']['Percepciones'][0]['Concepto'] = 'Sueldos, Salarios Rayas y Jornales';
$datos['nomina12']['Percepciones'][0]['ImporteGravado'] = '1225.00';
$datos['nomina12']['Percepciones'][0]['ImporteExento'] = '0.00';
// NODO DEDUCCIONES
$datos['nomina12']['Deducciones']['TotalOtrasDeducciones'] = '30.20'; // Opcional
$datos['nomina12']['Deducciones']['TotalImpuestosRetenidos'] = '1.80'; // Opcional
//
$datos['nomina12']['Deducciones'][0]['TipoDeduccion'] = '001';
$datos['nomina12']['Deducciones'][0]['Clave'] = '001';
$datos['nomina12']['Deducciones'][0]['Concepto'] = 'ISR';
$datos['nomina12']['Deducciones'][0]['Importe'] = '30.20';
//
$datos['nomina12']['Deducciones'][1]['TipoDeduccion'] = '002';
$datos['nomina12']['Deducciones'][1]['Clave'] = '002';
$datos['nomina12']['Deducciones'][1]['Concepto'] = 'Seguridad social';
$datos['nomina12']['Deducciones'][1]['Importe'] = '1.80';
//
$datos['nomina12']['OtrosPagos'][0]['TipoOtroPago'] = '002';
$datos['nomina12']['OtrosPagos'][0]['Clave'] = '012';
$datos['nomina12']['OtrosPagos'][0]['Concepto'] = 'Subsidio para el empleado';
$datos['nomina12']['OtrosPagos'][0]['Importe'] = '0.00';
//
$datos['nomina12']['OtrosPagos'][0]['SubsidioAlEmpleo']['SubsidioCausado'] = '0.00';
$res = mf_genera_cfdi4($datos);
/////////// MOSTRAR RESULTADOS DEL ARRAY $res ///////////
echo "<h1>Respuesta Generar XML y Timbrado</h1>";
foreach($res AS $variable=>$valor)
{
$valor=htmlentities($valor, ENT_IGNORE);
$valor=str_replace('<br/>','<br/>',$valor);
echo "<b>[$variable]=</b>$valor<hr>";
}