Guía rápida para PHP

Objetivo : Crear tu primera factura en pocos minutos
en modo de pruebas

- / / / / / / -

Descarga la librería

Ir al área de descargas y descargar la versión para PHP

Subir archivos

Sube los archivos en una carpeta de tu hosting o sevidor web  (WAMP, LAMP, IIS, Apache)

Da permisos

En ambiente Linux se requiere dar permiso de escritura a 3 carpetas 


  •  Carpeta tmp = esta dentro de la librería
  •  Carpeta en donde se almacena el CFDi XML  indicada por la variable $datos['cfdi']
  •  Carpeta en donde se almacena el certificado CSD indicada por la variable $datos['conf']['cer'] y $datos['conf']['key']



Selecciona ejemplo

  •  Ingresa a la página https://ejemplos.cfdi4.com.mx/ 
  •  En tu hosting o servidor web dentro de la carpeta de la librería crea un archivo nuevo  que se llame ejemplo.php
  •  En la pestaña PHP selecciona y copia el texto del ejemplo al archivo ejemplo.php



Publica ejemplo

La ruta de la factura la puedes ver la línea
$datos['cfdi']='../.. /timbrados/cfdi_ejemplo_factura4.xml';
$datos['conf']['cer'] = '../ ../certificados/EKU9003173C9.cer.pem';
$datos['conf']['key'] = '../ ../certificados/EKU9003173C9.key.pem';


la parte en rojo indica en que carpeta necesitas permisos, 

en la variable cfdi se genera el CFDi y en la variable cer/key se encuentra certificado CSD y se generan unos nuevos certificados compatibles con la librería

Accede al ejemplo

desde tu navegador accede al ejemplo

ver respuesta

La respuesta es a una variable tipo arreglo que cuenta con todos los elementos necesarios para almacenar la información e imprimir la factura


El campo  mf_valor y mf_texto contiene un resumen de toda la transacción

XML timbrado

En el ejemplo definiste la  variable $datos['cfdi'] , en la ruta indicada se debe de encontrar el CFDi ya generado, listo para entregarse al cliente

Listo

ya funciona

Video tutorial

Actualizar CFDi 3 ,4, 5 y demás versiones es muy sencillo, se actualiza a la nueva versión y se añaden los campos nuevos

Preguntas Frecuentes

Tengo dudas y deseo que alguien me apoye a crear mi primer factura



PHP 5.5+
Windows 7+ o Linux  32 y 64bits 


para revisar dependencias ejecute  diagnostico.php

  1. Falta de permisos en carpetas;
    Solución :dar permiso de escritura a carpeta tmp y donde se encuentra el certificado y xml generado

  2. No contar con IONCUBE
    Solución : instalar ioncube al servidor web, este se puede descargar gratis desde ioncube.com desde la sección de loaders

  3. Permisos restringidos en IIS /Windows Server
    Solución :si cuentas con permisos restringidos y no deseas elevar el nivel de acceso te recomiendo el modo INI (texto) y API JSON

  4. rutas de archivo erróneas
    Solución :utiliza rutas absolutas (toda la ruta) por ejemplo en windows sería  c:\miproyecto\facturas\factura_001.xml  o en Linux   /var/www/html/miproyecto/facturas/factura_001.xml. Nota en windows para carpetas compartidas en red tienes que revisar los permisos de windows



Ioncube es una librería que permite proteger los derechos de autor de multifacturas.

Esta no es una librería tradicional de PHP,  si no que se instala como componente al servidor;


  • Hosting compartido : el 99% ya cuenta instalada esa librería, en caso de no contar con ella contacta a tu proveedor de hosting y solicita que se active
    Plesk   CPanel 




En hosting compartido Windows o servidores propios Windows + IIS es común contar con restricciones de permisos que comúnmente no tenemos control sobre ellos.


Si ese es tu caso te recomiendo pasar a webservice de texto o APIREST JSON



  • Primero cambia esta variable a SI

$datos['PAC']['produccion'] = 'SI';


  • Para pasar a producción tienes que personalizar estos campos con los datos reales del cliente.

$datos['conf']['cer'] = '../../certificados/ EKU9003173C9.cer.pem';
$datos['conf']['key'] = '../../certificados/ EKU9003173C9.key.pem';
$datos['conf']['pass'] = '12345678a';


  • Da de alta al cliente en el panel administrativo y captura su usuario y contraseña, el usuario será su RFC

$datos['PAC']['usuario'] =  DEMO700101XXX';  // RFC del cliente
$datos['PAC']['pass'] =  'DEMO700101XXX';  // clave de ese cliente


No se te olvide asignarle saldo para poder timbrar; si lo requieres te podemos pasar unos timbres para probar



  1.  Descarga la nueva versión
  2. Remplaza los archivos
  3. Verifica que no se alteró el permiso de la carpeta tmp


Listo


En caso que SAT anuncie cambios al CFDi tendremos ejemplos y librería actualizados 1 a 3 meses antes según que tan rápido el SAT libere la documentación



Para crear un ejemplo diferente a los publicados necesitamos un XML funcional y te lo convertimos a ejemplo



En el panel de control puedes agregar a TODOS los clientes que desees  y de tu saldo global transferir saldo a tu cliente



Una vez que tu desarrollo está funcional  contacta al área de ventas para que te recomienden lo mejor para tí


Existen 3 modalidades

  1. Adquieres un paquete de timbres, estos los distribuyes entre tus clientes, NO puedes repartir más timbres de los que cuentas
  2. Adquieres un plan, funciona similar a un plan de telcel, incluye una capacidad y si te pasas se cobra un sobre uso; el saldo que puedes asignar a clientes es ilimitado
  3. Post pago. El nombre lo dice todo,  cada mes se te envía la factura de tu consumo.