Página 1 de 1

Timbrado ATEB PHP

Publicado: Mié Oct 09, 2013 8:41 pm
por EdgarDC
Hola! Quiero agradecerles por la información tan útil de este sitio, gracias a ella pude finalmente generar sellos en un software que desarrolle en PHP para un amigo, sin embargo, ahora me encuentro con un problema, ya que se debe migrar a timbrado electrónico, por lo que me dice mi amigo, contrato el servicio con ATEB y me paso unos documentos de pruebas, la situación aquí es que no he trabajado con WebServices antes y me he metido en un embrollo.
lo que tengo es lo siguiente:

Código: Seleccionar todo

<?php
$timbrador=new SoapClient("http://test.timbrado.com.mx/cfdi/wsTimbrado.asmx?wsdl");
$user="0000000001";
$pass = "pwd";
//xml contenido en los archivos de pruebas
$xml='<?xml version="1.0" encoding="UTF-8"?>....</cfdi:Comprobante>';//cadena del XML proporcionado para pruebas

//armado encabezado
$header = array('UserName' => $user,'Password' => $pass);
$Soapheader = new SOAPHeader('https://test.timbrado.com.mx/cfdi/', 'AuthenticationHeader', $header);
$timbrador->__setSoapHeaders($Soapheader); 
try
{  
$cfdi=$timbrador->GeneraTimbre(base64_encode($xml));
var_dump($cfdi);
}
catch (Exception $e)
{
	print_r($e);
}
?>
El resultado que me da:

Código: Seleccionar todo

object(stdClass)#4 (1) { ["GeneraTimbreResult"]=> string(169) "XML mal formado [EX: excepción en timbrado: El búfer no puede ser nulo. Nombre del parámetro: buffer]" };
preguntando en foros de PHP me solicitaron el request que se genera por PHP, es el siguiente:

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://test.timbrado.com.mx/cfdi/"><SOAP-ENV:Header><ns1:AuthenticationHeader><ns1:UserName>0000000001</ns1:UserName><ns1:Password>pwd</ns1:Password></ns1:AuthenticationHeader></SOAP-ENV:Header><SOAP-ENV:Body><ns1:GeneraTimbre/></SOAP-ENV:Body></SOAP-ENV:Envelope>
de ahi se puede ver que en ningun lado esta la cadena del XML, sin embargo (segun yo) la estoy mandando en la llamada:

Código: Seleccionar todo

$cfdi=$timbrador->GeneraTimbre(base64_encode($xml));
ya probé poniendolo como array asociado y nombrandolo XMLBytes (como el WSDL) pero nada.

Todo esto lo hice basado en un documento adjunto que me dieron con los documentos de prueba de una implementacion en VBNet, es el siguiente:
Dentro de Visual Studio en el proyecto, agregar referencia web
Agregar la URL del Web Service
Se muestra la pantalla del web service con un metodo Service1 (GeneraTimbre)
---------------------------------------------------------------------
Se Agrego la referencia al proyecto quedando como sigue :

Direccion URL de la referencia WEB: http://test.timbrado.com.mx/cfdi/wsTimb ... neraTimbre
nombre de la carpeta: mx.com.timbrado.cfdi
----------------------------------------------------------------------

Dentro del proyecto y especifamente dentro de la forma en la cual se desea hacer uso del timbre:

se Agrego estos imports :
Imports System.Text
Imports System.Web.Services.Protocols

Se agrego las siguientes variables
Dim Auth As New mx.com.timbrado.cfdi.AuthenticationHeader
Dim ws As New mx.com.timbrado.cfdi.Service1
Dim cfdi As String = ""

Dentro del boton de ejecutar va lo siguiente:

Auth.UserName = "0000000001" ' usuario asignado
Auth.Password = "pwd" ' contraseña asignada para el cliente.
ws.AuthenticationHeaderValue = Auth

Dim xml As String = 'String que contiene el XML
Dim xmlBytes As Byte() = Encoding.UTF8.GetBytes(Xml)
Try
cfdi = ws.GeneraTimbre(Convert.ToBase64String(xmlBytes))
Catch ex As Exception
MsgBox(ex.Message)
End Try
Y bueno ese es mi predicamento, espero me puedan ayudar porque ahora si de veras estoy perdido... y no quisiera tener que migrar el sistema a VBNet :x ... y la migracion a CFDI es obligatoria en Enero... :shock:

Re: Timbrado ATEB PHP

Publicado: Vie Oct 11, 2013 9:50 am
por jasistemas
No necesariamente debes migrar toda tu aplicación a VB.net, puedes únicamente desarrollar la parte del timbrado con .NET, compilarlo como DLL y luego usarlo desde PHP, Visual Fox, Delphi.

Re: Timbrado ATEB PHP

Publicado: Vie Oct 18, 2013 8:58 am
por csar43
Hola, lo que sucede es que llamas mal al servicio, intenta cambiarlo por algo como esto....

Código: Seleccionar todo

$result = $client->__soapCall('GeneraTimbre', array('parameters'=>array('xmlBytes'=>$base64)));

Re: Timbrado ATEB PHP

Publicado: Vie Nov 22, 2013 5:53 pm
por corsoduke
Yo pude hacer funcionar el timbrado de ATEB con php cualquier cosa no dudes en contactarme.

Re: Timbrado ATEB PHP

Publicado: Lun Dic 02, 2013 4:56 pm
por ggarcia
Hola, estoy con el mismo problema que tenias, no puedo timbrar con PHP, me podrias proporcionar una cuenta de correo para contactarte, mi cuenta es ggarcia50@hotmail.com.

De antemano muchas gracias

Re: Timbrado ATEB PHP

Publicado: Jue Dic 19, 2013 12:15 pm
por isantosp
corsoduke escribió:Yo pude hacer funcionar el timbrado de ATEB con php cualquier cosa no dudes en contactarme.
Hola cursoduke, tendras algun ejemplo mas extenso de como mandar a timbrar desde PHP con este PAC?? te lo agradeceria mucho..

Saludos

Re: Timbrado ATEB PHP

Publicado: Dom Dic 22, 2013 9:43 am
por jose_luis
corsoduke escribió:Yo pude hacer funcionar el timbrado de ATEB con php cualquier cosa no dudes en contactarme.
Hola Que tal Tendrás Alguna Información sobre el procedimiento del timbrado en ATEB por Php, o algún ejemplo, te agradeceremos tu ayuda