Página 15 de 18

Re: Codigo Fuente en Delphi para Timbrar [Buzon E]

Publicado: Lun Mar 28, 2011 9:55 am
por Dado
poliman escribió:Hola.

Tengo una pregunta acerca del funcionamiento de Buzon E.

¿ Todos los clientes con distintos RFC usaran el mismo certificado ?

¿Si alguien obtiene ese certificado, podria timbrar en otra aplicacion solo con eso o hay algun otro candado ?

Pregunto lo anterior porque en mi caso son diferentes clientes, y ¿ si ese certificado cae en las manos equivocadas que pasaria ?

Gracias.
BuzonE no usa certificado para accesar, usa clave y contraseña.

Ahora la forma de proteger lo que mencionas es que *unicamente* va a timbrar los RFC que tu registres en el portal de BuzonE, asi que aunque la clave y contraseña sean comprometidos no van a poder facturar "lo que sea".

Re: Codigo Fuente en Delphi para Timbrar [Buzon E]

Publicado: Lun Mar 28, 2011 9:57 am
por poliman
DADO escribió:
poliman escribió:Hola.

Tengo una pregunta acerca del funcionamiento de Buzon E.

¿ Todos los clientes con distintos RFC usaran el mismo certificado ?

¿Si alguien obtiene ese certificado, podria timbrar en otra aplicacion solo con eso o hay algun otro candado ?

Pregunto lo anterior porque en mi caso son diferentes clientes, y ¿ si ese certificado cae en las manos equivocadas que pasaria ?

Gracias.
BuzonE no usa certificado para accesar, usa clave y contraseña.

Ahora la forma de proteger lo que mencionas es que *unicamente* va a timbrar los RFC que tu registres en el portal de BuzonE, asi que aunque la clave y contraseña sean comprometidos no van a poder facturar "lo que sea".
Muchas gracias Dado por tu pronta respuesta. :)

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mar Mar 29, 2011 8:37 pm
por Dado
SEGUNDO UPDATE PARA EL CODIGO DE TIMBRADO CON TIMBREFISCALMX

Esos de TimbreFiscalMx siguen haciendo de las suyas con los namespace, ahora el "Error Response" tiene un namespace de "ns15"

Solo para justificar que ES MUY MALO LO QUE ESTAN HACIENDO les comento, que precisamente el namespace sirve para diferenciar dos datos con el mismo nombre, por ejemplo si tuvieran :

Tabla="esto es una tabla de madera"

Tabla="esto es una tabla de multiplicar"

Como diferenciarian una de otra? muy simple, con un prefijo como en :

materiales:Tabla="esto es una tabla de madera"

matematicas:Tabla="esto es una tabla de multiplicar"

PERO SI TimbreFiscalMx un dia "me dice" que el error viene como

ns13:Error="No es un emisor valido"

y al "siguiente dia" (como hoy, que recibi una nota de un forista) me envia el error como

ns15:Error="No es un emisor valido"

POR DEFINICION ns13:Error NO TIENE NADA QUE VER CON ns15:Error, son dos objetos totalmente distintos !!!

En fin, despues de este choro mareador.......unidad TimbreFiscalMx, funcion Interpretamensaje, linea (aprox) 108, por favor quiten TODOS los namespace siguientes (ya estaban definidos quitar algunos, pa' no fallarle vamos a quitar del 1 al 20) :

Código: Seleccionar todo

	else
	begin
		Msg := AnsiReplaceStr(Msg,'<S:','<'); Msg := AnsiReplaceStr(Msg,'</S:','</');
		Msg := AnsiReplaceStr(Msg,'<ns1:','<'); Msg := AnsiReplaceStr(Msg,'</ns1:','</');		
		Msg := AnsiReplaceStr(Msg,'<ns2:','<'); Msg := AnsiReplaceStr(Msg,'</ns2:','</');
		Msg := AnsiReplaceStr(Msg,'<ns3:','<'); Msg := AnsiReplaceStr(Msg,'</ns3:','</');
		Msg := AnsiReplaceStr(Msg,'<ns4:','<'); Msg := AnsiReplaceStr(Msg,'</ns4:','</');
		Msg := AnsiReplaceStr(Msg,'<ns5:','<'); Msg := AnsiReplaceStr(Msg,'</ns5:','</');
		Msg := AnsiReplaceStr(Msg,'<ns6:','<'); Msg := AnsiReplaceStr(Msg,'</ns6:','</');
		Msg := AnsiReplaceStr(Msg,'<ns7:','<'); Msg := AnsiReplaceStr(Msg,'</ns7:','</');
		Msg := AnsiReplaceStr(Msg,'<ns8:','<'); Msg := AnsiReplaceStr(Msg,'</ns8:','</');
		Msg := AnsiReplaceStr(Msg,'<ns9:','<'); Msg := AnsiReplaceStr(Msg,'</ns9:','</');
		Msg := AnsiReplaceStr(Msg,'<ns10:','<'); Msg := AnsiReplaceStr(Msg,'</ns10:','</');
		Msg := AnsiReplaceStr(Msg,'<ns11:','<'); Msg := AnsiReplaceStr(Msg,'</ns11:','</');
		Msg := AnsiReplaceStr(Msg,'<ns12:','<'); Msg := AnsiReplaceStr(Msg,'</ns12:','</');
		Msg := AnsiReplaceStr(Msg,'<ns13:','<'); Msg := AnsiReplaceStr(Msg,'</ns13:','</');
		Msg := AnsiReplaceStr(Msg,'<ns14:','<'); Msg := AnsiReplaceStr(Msg,'</ns14:','</');
		Msg := AnsiReplaceStr(Msg,'<ns15:','<'); Msg := AnsiReplaceStr(Msg,'</ns15:','</');
		Msg := AnsiReplaceStr(Msg,'<ns16:','<'); Msg := AnsiReplaceStr(Msg,'</ns16:','</');
		Msg := AnsiReplaceStr(Msg,'<ns17:','<'); Msg := AnsiReplaceStr(Msg,'</ns17:','</');
		Msg := AnsiReplaceStr(Msg,'<ns18:','<'); Msg := AnsiReplaceStr(Msg,'</ns18:','</');
		Msg := AnsiReplaceStr(Msg,'<ns19:','<'); Msg := AnsiReplaceStr(Msg,'</ns19:','</');
		Msg := AnsiReplaceStr(Msg,'<ns20:','<'); Msg := AnsiReplaceStr(Msg,'</ns20:','</');

		XMLDoc := TXMLDocument.Create(Application);
		XMLDoc.XML.Text := Msg;

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mar Mar 29, 2011 9:27 pm
por acanas
El caso de timbrefiscal suena muy bien para estar enhttp://www.codinghorror.com, no entiendo porque usar prefijos dinámicos, que no pueden usar uno fijo?, quiero suponer que es una pifia de los programadores del web service de timbrefiscal.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mié Mar 30, 2011 12:38 pm
por EJSG
Hola Dado, pues con esta situacion de cambios repentinos por parte de TimbreFiscalMX en la interface, como que no suena como una buena opcion de proveedor para nosotros los desarrolladores, no? Porque lo que necesitamos es desarrollar un codigo, distribuirlo con nuestros clientes y listo... no tener que estarlo actualizando a cada rato que se le pega la gana al proveedor.

En estos momentos ya tengo que entrarle al CFDI, por lo que dada esta sitaucion, estaria descartando a TimbreFiscalMX (aunque ya te compre la libreria de timbrado para ellos) y solo considerando a Edicom y BuzonE. Tienes alguna recomendación que me puedas hacer para tomar la desicion? Voy a estar mandando a timbrar los comprobantes de varios de mis clientes, por lo que espero un volumen considerable. Muchas gracias y saludos.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mié Mar 30, 2011 1:16 pm
por acanas
Hace unos momentos genere un CFDI para ver si habia cambiado algo con los de timbrefiscal y por error no deje configurado el RFC emisor requerido para el acceso y mi aplicación si me genero el error del ws "Emisor no válido".Alratito voy a loggear el soap request y response que recibe y genera mi programa y se los comparto para ver si hubo algún cambio.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mié Mar 30, 2011 1:22 pm
por Dado
EJSG escribió:Hola Dado, pues con esta situacion de cambios repentinos por parte de TimbreFiscalMX en la interface, como que no suena como una buena opcion de proveedor para nosotros los desarrolladores, no? Porque lo que necesitamos es desarrollar un codigo, distribuirlo con nuestros clientes y listo... no tener que estarlo actualizando a cada rato que se le pega la gana al proveedor.

En estos momentos ya tengo que entrarle al CFDI, por lo que dada esta sitaucion, estaria descartando a TimbreFiscalMX (aunque ya te compre la libreria de timbrado para ellos) y solo considerando a Edicom y BuzonE. Tienes alguna recomendación que me puedas hacer para tomar la desicion? Voy a estar mandando a timbrar los comprobantes de varios de mis clientes, por lo que espero un volumen considerable. Muchas gracias y saludos.
Lo siento pero como admin del sitio mi posicion es neutra respecto a los PAC. No puedo ni recomendar ni criticarlos (aunque me gustaria je je je)

Pero puedes leer la opinion *libre* de los demas foristas e incluso abrir un tema nuevo si lo consideras pertinente.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mié Mar 30, 2011 1:24 pm
por Dado
acanas escribió:Hace unos momentos genere un CFDI para ver si habia cambiado algo con los de timbrefiscal y por error no deje configurado el RFC emisor requerido para el acceso y mi aplicación si me genero el error del ws "Emisor no válido".Alratito voy a loggear el soap request y response que recibe y genera mi programa y se los comparto para ver si hubo algún cambio.
Quiero pensar tambien que puedan tener 2 o mas servidores y haya pequeñas diferencias entre uno y otro, es posible que los namespace no sean dinamicos, que mas bien sean estaticos PERO por servidor

De cualquier manera me quedo al pendiente (y ustedes tambien!) de cualquier reporte para poderlo solucionar lo mas pronto posible.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mié Mar 30, 2011 1:54 pm
por crixus
DADO escribió:
acanas escribió:Hace unos momentos genere un CFDI para ver si habia cambiado algo con los de timbrefiscal y por error no deje configurado el RFC emisor requerido para el acceso y mi aplicación si me genero el error del ws "Emisor no válido".Alratito voy a loggear el soap request y response que recibe y genera mi programa y se los comparto para ver si hubo algún cambio.
Quiero pensar tambien que puedan tener 2 o mas servidores y haya pequeñas diferencias entre uno y otro, es posible que los namespace no sean dinamicos, que mas bien sean estaticos PERO por servidor

De cualquier manera me quedo al pendiente (y ustedes tambien!) de cualquier reporte para poderlo solucionar lo mas pronto posible.
La infractrustucar de casi todos los PAC's son dos ubicaciones fisicas, yo tengo enfrente de nuestro RACK a dos :P haha pero creo que lo de los namespace no tiene que ver, puesto que entre ellos se conectan por ip de manera local.

Re: Codigo Fuente en Delphi para Timbrar

Publicado: Mié Mar 30, 2011 4:21 pm
por acanas
Así tengo mi soap envolpe que genero a través de mi aplicación,yo creo que como construyes a patin el Mensaje Soap requieres de prefijos de namespace fijos y pues si timbrefiscal esta cambie y cambie ahi te va a tronar el asunto. En .Net yo lo que hago es que genero através del wsdl una clase que consume el web service de timbrefiscal y esta a su vez me genera el codigo requerido para acceder a los metodos del web service y si ellos cambian prefijos no me afecta porque siempre acceso a la función timbradoCFDI que se generó por medio de la clase Proxy de .Net.

Código: Seleccionar todo

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><RequestTimbradoCFD d3p1:RefID="" xmlns:d3p1="http://www.buzonfiscal.com/ns/xsd/bf/RequestTimbraCFDI" xmlns="http://www.buzonfiscal.com/ns/xsd/bf/TimbradoCFD"><d3p1:Documento Tipo="ZIP" /><cfdi:Comprobante xmlns:ecb="http://www.sat.gob.mx/ecb" xmlns:terceros="http://www.sat.gob.mx/terceros" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:psgecfd="http://www.sat.gob.mx/psgecfd" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:zscfdi="http://www.zyfersoft.com/xsd/ZSAddenda/v1" xmlns:ecc="http://www.sat.gob.mx/ecc" xmlns:detallista="http://www.sat.gob.mx/detallista" 
<soap:Body>
---------DETALLLE DE CFDI-----------------
</soap:Body>
</soap:Envelope>
En caso de que haya un error en el web service hago esto:

Código: Seleccionar todo

try
            {
                //timbre.
                dtm1 = DateTime.Now;
                tfd = timbre.timbradoCFD(req);
                dtm2 = DateTime.Now;
                ts = dtm2 - dtm1;
                string strRes = ts.TotalSeconds.ToString();
            }
            catch (Exception ex0)
            {
                //asignar bandera de error para reintentar de nuevo.
                tf.HuboError = true;
                tf.MensajeError = ex0.Message;
                return tf;
            }