viernes, 10 de enero de 2014

Ejemplo PHP WebService para timbrar un XML

Código Fuente PHP de WebService para timbrado de facturación Electrónica


Les comparto el código para timbrar un XML y convertirlo en CFDi




<?php
    include "lib/nusoap.php";
   
    $xml='mi xml';
    $usuario='MIRFC';
    $clave='mi clave';
    $produccion='NO';   // [NO|SI]
   
    $pac=rand(1,10);//toma un servidor al azar
    $soapclient = new nusoap_client("http://pac$pac.multifacturas.com/pac/?wsdl",$esWSDL = true);

    //Generamos el arreglo con los parametros para timbrado
    $tim = array('rfc' => $usuario, 'clave' => $clave,'xml' => $xml,'produccion' => $produccion);


    $respuesta_timbrado = $soapclient->call('timbrar', $tim);

    print_r($respuesta_timbrado);

?>


   

$respuesta_timbrado es un array con toda la información

Elementos de la respuesta

Referentes al timbrado
cfdi = string XML ya timbrado
png  = string en base 64 perteneciente al PNG del QR

Codigos de error y estado
produccion = string  SI o NO
codigo_mf_numero = Codigo numero representando el error o acierto, ver tabla de abajo
codigo_mf_texto=   string mensaje descriptivo del codigo numerico
cancelada = string  SI o NO, en caso de cualquier error este sera SI
saldo = numero entero indicando el credito restante

Información adicional de apoyo o seguimiento
idpac = numero entero interno de multifacturas para identificar el PAC donde se timbro
pac = numero entero de autorizacion del pac ante hacienda   
mensaje_original_pac_json = sting json que regresa el mensaje original que hubo hacia el PAC
uuid = numero uuid del xml timbrado
servidor = en que servidor fue timbrado


Códigos de estado y/o error
0 = OK
1 = SALDO INSUFICIENTE MULTIFACTURAS
2 = RFC, XML o SELLO INVALIDO
3 = TIMEOUT AL PAC
4 = USUARIO O CONTRASEÑA INCORRECTOS EN EL PAC
5 = USUARIO O CONTRASEÑA INCORRECTOS EN MULTIFACTURAS
>=6 ERRORES CON SU DESCRIPCION ADJUNTA



Usuario y contraseña de pruebas es DEMO700101XXX, utilizando los certificados publicados aquí


espero les sirva




3 comentarios:

  1. buen día, ando probando su código y me manda este resultado;


    Array ([CFDI] =>
    [png] =>
    [IDPAC] => 1
    [pac] => 55503
    [produccion] => NO
    [codigo_mf_numero] => 2
    [codigo_mf_texto] => RFC ERROR, DATOS VACIOS, SELLO XML O Invalido [mensaje_original_pac_json] => {"retorno": {"status": "300 - Usuario no existe"}} [cancelada] => NO
    [saldo] => 19 [Servidor] => 7
    [ejecucion] => 227.219)

    podría orientarme cual puede ser mi error

    ResponderEliminar
  2. Posibles causas

    1- Fecha muy antigua
    2- RFC del receptor invalido, prueba con uno real
    3- campos vacios o faltan obligatorios
    4- XML o sello mal formado, aquí puedes validar su estructura https://www.consulta.sat.gob.mx/sicofi_web/moduloECFD_plus/ValidadorCFDI/Validador%20cfdi.html

    te dejo las cuentas de skype para soporte : mashteratencion y mashter.com

    estamos en contacto

    ResponderEliminar
  3. a mi me sale esto

    Array
    (
    [cfdi] =>
    [png] =>
    [idpac] => 1
    [pac] => 55503
    [produccion] => NO
    [codigo_mf_numero] => 0
    [codigo_mf_texto] => OK : PRUEBA EXITOSA NO VALIDA ANTE SAT
    [mensaje_original_pac_json] => {"return":{"status":"Content is not allowed in prolog."}}
    [cancelada] => NO
    [saldo] => 999999995
    [servidor] => 1
    [ejecucion] => 167.087
    )

    ResponderEliminar

Como bloquera archivos adjuntos que son virus en postfix o plesk

   Como bloquear adjuntos del correo en Plesk/Postfix   1- edita el archivo  /etc/postfix/main.cf   2- busca el parametro mime_header_checks...