Error ValidacionDeToken: Error al verificar hash: VerificacionDeHash: No validá la firma digital

7,040 views
Skip to first unread message

Felipe Morales

unread,
Jul 29, 2011, 11:34:33 AM7/29/11
to pyaf...@googlegroups.com
En un ambiente de desarrollo, haciendo pruebas con certificados de producción y con los fuentes compilados, y al SolicitarCAE me esta dando el siguiente error:

<?xml version="1.0" encoding="utf-8"?><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><FECAESolicitarResponse xmlns="http://ar.gov.afip.dif.FEV1/"><FECAESolicitarResult><Errors><Err><Code>600</Code><Msg>ValidacionDeToken: Error al verificar hash: VerificacionDeHash: No validó la firma digital. </Msg></Err></Errors></FECAESolicitarResult></FECAESolicitarResponse></soap:Body></soap:Envelope>

Chequeando la documentación, en la sección de Preguntas Frecuentes me encuentro con:

1000 Usuario no autorizado a realizar esta operacion. ValidacionDeToken: Error al verificar hash: VerificacionDeHash: No valid la firma digital

En los web services de negocio (WSFE, WSFEX, WSBFE, etc.), se está accediendo con un ticket de acceso inválido para el ambiente requerido (por ej., ticket de acceso de homologación usado en producción), o, no se envió correctamente el tocken y sign.

Pero sucede que con el mismo ticket de acceso puedo hacer consultas de ultimo comprobante y de status, es decir con el tocken y sign, recuperados anteriormente.

No termino de entender bien que es lo que esta pasando. Alguien ha tenido este problema.

Nota: Estoy usando el mismo CUIT del cliente en el comprobante, como para que la operación no efectúe (ya que entramos en producción recién este lunes). Esto en el ambiente de homologación me termina informando que no se puede hacer una factura con el CUIT de uno mismo, pero pasa el chequeo del ticket de acceso.

Saludos, Felipe




Ariel Stechina

unread,
Jul 29, 2011, 2:50:28 PM7/29/11
to pyaf...@googlegroups.com
No entiendo que querés decir con "Estoy usando el mismo CUIT del cliente en el comprobante"
Si es lo que creo entender (sino decime), que le mandas el cuit del cliente en la propiedad CUIT de la interfaz. Si es asi ese es tu error (siempre y cuando el .crt y .key no le correspondan claro)
Si no es eso, por mi experiencia personal en varias pruebas que hice con distintos webservices, sí devuelve correctamente el dummy (status) aun con token y sign de otro ambiente (no probé la consulta de ultimo comprobante). Pero cuando intentas autorizar una factura te valida correctamente y te rechaza si no está todo ok.
En definitiva, si te devuelve ese error es porque no tenes registrado el servicio correctamente en el ambiente de producción. O no tenes asociado el certificado (Administración de certificados digitales) o no tenés la relacion de tu CUIT al webservice que queres acceder (Administrador de relaciones de clave fiscal)
Estas 2 ultimas opciones se establecen con clave fiscal.

La otra que se me ocurre es que estas usando la interfaz en modo homo y por mas que intentes generar token y sign para producción siempre te conecta al server homo internamente.
Contanos que probaste para ir descartando posibilidades y acotar el problema







--
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs - Factura Electrónica Libre" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a pyaf...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a pyafipws+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/pyafipws?hl=es.

Felipe Morales

unread,
Jul 29, 2011, 6:11:57 PM7/29/11
to pyaf...@googlegroups.com
Ariel, muchas por lo detallado de tu respuesta.

Tu interpretación inicial es correcta en cuanto a "Estoy usando ....."
 
Respecto a si la interfaz esta en modo homo o no, te comento que siguiendo la documentación oficial dice que si la respuesta proveniente de la AFIP es de la forma:
  • Fuente: AFIP producción (<source>CN=wsaa, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239</source>), sinó diría CN=wsaahomo, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239
 Y la que obtengo usando tanto el ejemplo interactivo wsaa como mi aplicación es lo marcado en rojo:

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><loginCmsResponse xmlns="http://wsaa.view.sua.dvadac.desein.afip.gov"><loginCmsReturn>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;loginTicketResponse version=&quot;1&quot;&gt;
    &lt;header&gt;
        &lt;source&gt;CN=wsaa, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239&lt;/source&gt;
        &lt;destination&gt;C=ar, O=subj_o, SERIALNUMBER=CUIT 30691169517, CN=partes y rodajes sa&lt;/destination&gt;
        &lt;uniqueId&gt;1477642741&lt;/uniqueId&gt;
        &lt;generationTime&gt;2011-07-29T17:47:37.335-03:00&lt;/generationTime&gt;
        &lt;expirationTime&gt;2011-07-30T05:47:37.335-03:00&lt;/expirationTime&gt;
    &lt;/header&gt;
    &lt;credentials&gt;
 &lt;token&gt;...........................ocultado por cuestiones de seguridad ............................./token&gt;
        &lt;sign&gt;......................ocultado por cuestiones de seguiridad............................ /sign&gt;
    &lt;/credentials&gt;
&lt;/loginTicketResponse&gt;
</loginCmsReturn></loginCmsResponse></soapenv:Body></soapenv:Envelope>


Como conclusión voy a chequear la configuración con clave fiscal para ver que esto todo ok.

Muchísimas gracias, Felipe

Ariel Stechina

unread,
Jul 29, 2011, 6:28:44 PM7/29/11
to pyaf...@googlegroups.com
Entonces en el campo CUIT de la interfaz debe ir 33693450239 que es el autorizado por el certificado para operar (asumiendo que esta todo ok con el certificado y la relacion a webservice en la afip) 
No confundir con el cuit del cliente que va en la factura.
Avisa como te fue

Felipe Morales

unread,
Jul 30, 2011, 11:40:58 AM7/30/11
to pyaf...@googlegroups.com
Ariel,
 
Hay algo que no entiendo. En el CUIT de la interfaz debe ir el CUIT de la empresa en cuestión. En el cuit que citas abajo, 33693450239, es el CUIT de la AFIP.
Por otro lado va el CUIT de cliente, asociado al comprobante (a quien se el vende)

Mi razonamiento es correcto?
Gracias, Felipe

Ariel Stechina

unread,
Jul 30, 2011, 6:05:04 PM7/30/11
to pyaf...@googlegroups.com
Para usar la interfaz y conectarte se necesita y se le asigna a sus respectivas propiedades:
token
sign
y cuit (es el mismo con el que obtuviste los token y sign en wsaa)
Al crear la factura se le pasa los datos del cliente al que le facturas, entre esos datos esta el cuit de tu cliente que es distinto al usado en la propiedad CUIT)
En mi respuesta anterior me expresé mal, cuando dije Cuit de la AFIP, tendria que haber dicho CUIT registrado y autorizado por AFIP -mediante certificado- para usar uno o varios webservices)

Si en homologación funciona todo y en produccion te valida diciendo que no estas autorizado, no son muchas cosas:
O no estas registrado correctamente en produccion en afip mediante los 2 servicios que te dije antes que se usan con clave fiscal.
O estas mezclando y usando los .key y .crt que tenias usando en homologacion y no los correspondientes a produccion.
O estas almacenando en la base de datos de tu programa el token y sign y su vencimiento obtenidos en HOMO y al querer usarlo en produccion tu programa valida que no esta vencido y no vuelve a solicitar nuevos por lo tanto le mandas los que ya los tenias guardados.
Otra no se me ocurre. Tal vez alguien puede aportar algo mas.

Felipe Morales

unread,
Jul 31, 2011, 12:15:00 AM7/31/11
to pyaf...@googlegroups.com
Ariel,

Perfecta la aclaración sobre el CUIT.

Respecto del problema de validación, creo que ocurre porque en Comprobante en Linea ingresando con la clave fiscal de cliente registrado y autorizado por AFIP, esta fuera de vigencia (el servicio para la emisión de factura electrónica tiene fecha 08-2011).
Con lo cual, no puedo chequear este vinculo y a su vez creo que hay un restricción por parte de AFIP.

El lunes estoy visitando al cliente, después le comento.
Muchas gracias por lo detallada de tu respuesta.
Saludos, Felipe
PD: de las opciones que indicas, por el momento me inclino por "no estas registrado correctamente en produccion en afip mediante los 2 servicios que te dije antes que se usan con clave fiscal."

Mariano Reingart

unread,
Oct 5, 2012, 11:18:27 AM10/5/12
to pyaf...@googlegroups.com
Hola Sebastián:

Primero, este es un grupo sobre la herramienta libre de factura
electrónica en python, por lo que mucho no podremos ayudarte con php.

Respondiendo a tu consulta, si, es necesario tramitar un certificado
para pruebas:

http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#Certificados

Respecto al error con WSAA, no debés esperar 24 hs para solicitar un
nuevo ticket de acceso, AFIP te otorgará uno nuevo si dejas
transcurrir algunos segundos/minutos (no son tan estrictos por el
momento)

Igualmente tenes un error en tu código, porque estás solicitando
acceso para factura electronica version 1, pero en tocken pusiste con
detalle:

Error: 600 - ValidacionDeToken: No validó Id Sistema: wsfe(Id Sistema
de token es: wsmtxca)

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com


2012/10/4 <softof...@gmail.com>:
> Ariel, buen día.
>
> Estoy comenzando con este tema y quisiera hacerte algunas consultas como
> para empezar.
>
> 1-Para el entorno de testing, homologación , es necesario crear el
> certificado o solo es para produccion?
> 2-Hoy en día ejecuto lo siguiente:
>
> &PhpPage.Host = '199.238.156.186'
> &PhpPage.BaseUrl = '/afip/'
> &PhpPage.Execute('GET', 'ticketcontent.php' )
> &CMSRequest = &PhpPage.ToString()
> &Request = &LoginCMSService.loginCms(&CMSRequest).ToString()
> Luego obtengo el Token y Sign y lo asigno &ServiceFEAuthRequest
>
> Esto esta bien?? ticketcontent.php simula un certificado??
>
> Y luego cuando ejecuto alguna consulta me dice
> &ServiceIvaTipoResponse = &WSFE.FEParamGetTiposIva(&ServiceFEAuthRequest)
> Error: 600 - ValidacionDeToken: No validó Id Sistema: wsfe(Id Sistema de
> token es: wsmtxca)
>
> Esto significa que ya utilice el TA y tengo q esperar 24hs para obtener
> otro?? COmo lo puedo resetear o consultar para no esperar tanto tiempo (a
> partir de ahora voy a guardar dichos valores en una tabla para
> reutilizarlos)
>
> Bueno desde ya muchas gracias
>
> Saludos
>
> Sebastian
> Para ver este debate en la Web, visita
> https://groups.google.com/d/msg/pyafipws/-/fuCy_Dioi0kJ.

Ariel Stechina

unread,
Oct 8, 2012, 2:13:59 PM10/8/12
to pyaf...@googlegroups.com
Para homologación se necesita un certificado  y para producción se necesita otro (se los obtiene de forma distinta). Pegale una mirada a esto: http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#Certificados

Si estas usando ya un certificado de homologación correcto, al parecer por lo que te devuelve el mensaje "Error: 600 - ValidacionDeToken: No validó Id Sistema: wsfe(Id Sistema de token es: wsmtxca)" da la impresión que estas mezclando servicios (WSFE y WSMTXCA (wsfe ya no está vigente, se reemplazó por wsfev1)
Deberías aclarar un poquito más que hiciste y que es lo que necesitas resolver.
Una sugerencia, por ahi sería mejor iniciar una nueva consulta en vez de seguir la anterior que citás para tener un mejor orden y más facil seguimiento)
Contanos un poco mas tu situación, no obstante en http://www.sistemasagiles.com.ar/trac/wiki/FacturaElectronica tenes documentación muy completa, dale una ojeada también
Saludos.


El 4 de octubre de 2012 14:01, <softof...@gmail.com> escribió:
Ariel, buen día.

Estoy comenzando con este tema y quisiera hacerte algunas consultas como para empezar.

1-Para el entorno de testing, homologación , es necesario crear el certificado o solo es para produccion?
2-Hoy en día ejecuto lo siguiente:

&PhpPage.Host = '199.238.156.186'
&PhpPage.BaseUrl = '/afip/'
&PhpPage.Execute('GET', 'ticketcontent.php' )
&CMSRequest = &PhpPage.ToString()
&Request = &LoginCMSService.loginCms(&CMSRequest).ToString()
Luego obtengo el Token y Sign y lo asigno  &ServiceFEAuthRequest 

Esto esta bien?? ticketcontent.php simula un certificado??

Y luego cuando ejecuto alguna consulta me dice 
&ServiceIvaTipoResponse = &WSFE.FEParamGetTiposIva(&ServiceFEAuthRequest)
Error: 600 - ValidacionDeToken: No validó Id Sistema: wsfe(Id Sistema de token es: wsmtxca) 

Esto significa que ya utilice el TA y tengo q esperar 24hs para obtener otro?? COmo lo puedo resetear o consultar para no esperar tanto tiempo (a partir de ahora voy a guardar dichos valores en una tabla para reutilizarlos)

Bueno desde ya muchas gracias

Saludos

Sebastian



El sábado, 30 de julio de 2011 19:05:04 UTC-3, Ariel Stechina escribió:
Para ver este debate en la Web, visita https://groups.google.com/d/msg/pyafipws/-/fuCy_Dioi0kJ.
Reply all
Reply to author
Forward
0 new messages