SoapFault: soap:Client: Unmarshalling Error: unexpected element (uri:"http://a4.soap.ws.server.puc.sr/", local:"token"). Expected elements are <{}sign>,<{}token>,<{}cuitRepresentada>,<{}idPersona>

1,202 views
Skip to first unread message

Lisandro

unread,
Oct 28, 2017, 11:33:56 AM10/28/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola a todos.
Estoy terminando mi integración al nuevo webervice ws_sr_padron_a4 para consultar datos de contribuyentes. 
Ya hice todas las pruebas en modo homologación; todo ok.
También hice la asociación del webservice en producción (desde la página de afip). 
Instalé la última versión de pyafipws, edité el archivo ws_sr_padron.py, y cambié:

HOMO = False


Confirmo que me puedo autenticar correctamente al nuevo webservice:

from pyafipws.wsaa import WSAA
from pyafipws.ws_sr_padron import WSSrPadronA4

wsaa
= WSAA()
ta
= wsaa.Autenticar(service="ws_sr_padron_a4",
                     crt
=my_prod_crt,
                     key
=my_prod_key,
                     wsdl
='https://wsaa.afip.gov.ar/ws/services/LoginCms?wsdl')
padron
= WSSrPadronA4()
padron
.SetTicketAcceso(ta)
padron
.Cuit = my_cuit
padron
.Conectar()


No obstante, al intentar consultar un CUIT, recibo un extraño error, aquí está el traceback:

Traceback (most recent call last): File "/var/www/medios/applications/webmedios/controllers/afip.py", line 90, in test ok = padron.Consultar("20318670634") File "/usr/local/lib/python2.7/dist-packages/PyAfipWs-2.7.0-py2.7.egg/pyafipws/utils.py", line 157, in capturar_errores_wrapper return func(self, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/PyAfipWs-2.7.0-py2.7.egg/pyafipws/ws_sr_padron.py", line 104, in Consultar idPersona=id_persona, File "/usr/local/lib/python2.7/dist-packages/pysimplesoap/client.py", line 147, in <lambda> return lambda *args, **kwargs: self.wsdl_call(attr,*args,**kwargs) File "/usr/local/lib/python2.7/dist-packages/pysimplesoap/client.py", line 342, in wsdl_call response = self.call(method, *params) File "/usr/local/lib/python2.7/dist-packages/pysimplesoap/client.py", line 220, in call raise SoapFault(unicode(response.faultcode), unicode(response.faultstring)) SoapFault: soap:Client: Unmarshalling Error: unexpected element (uri:"http://a4.soap.ws.server.puc.sr/", local:"token"). Expected elements are <{}sign>,<{}token>,<{}cuitRepresentada>,<{}idPersona>


No entiendo bien si el error está en el XML del request o del response.
Adjunto el XML que se genera tras realizar el request (lo encontré en la carpeta "cache" dentro del directorio de instalación de pyafipws).

Agradezco cualquier comentario o sugerencia.
Desde ya gracias, saludos!

Mariano Reingart

unread,
Oct 28, 2017, 12:47:09 PM10/28/17
to pyaf...@googlegroups.com
2017-10-28 12:00 GMT-03:00 Lisandro <rostagno...@gmail.com>:
Hola a todos.
Estoy terminando mi integración al nuevo webervice ws_sr_padron_a4 para consultar datos de contribuyentes. 
Ya hice todas las pruebas en modo homologación; todo ok.
También hice la asociación del webservice en producción (desde la página de afip). 
Instalé la última versión de pyafipws, edité el archivo ws_sr_padron.py, y cambié:

HOMO = False

Debes respetar mayúsculas y minúsculas en la URL, ver: 


 

Confirmo que me puedo autenticar correctamente al nuevo webservice:

from pyafipws.wsaa import WSAA
from pyafipws.ws_sr_padron import WSSrPadronA4

wsaa
= WSAA()
ta
= wsaa.Autenticar(service="ws_sr_padron_a4",
                     crt
=my_prod_crt,
                     key
=my_prod_key,
                     wsdl
='https://wsaa.afip.gov.ar/ws/services/LoginCms?wsdl')
padron
= WSSrPadronA4()
padron
.SetTicketAcceso(ta)
padron
.Cuit = my_cuit
padron
.Conectar()


Para producción sería:

 
No obstante, al intentar consultar un CUIT, recibo un extraño error, aquí está el traceback:

Traceback (most recent call last): File "/var/www/medios/applications/webmedios/controllers/afip.py", line 90, in test ok = padron.Consultar("20318670634") File "/usr/local/lib/python2.7/dist-packages/PyAfipWs-2.7.0-py2.7.egg/pyafipws/utils.py", line 157, in capturar_errores_wrapper return func(self, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/PyAfipWs-2.7.0-py2.7.egg/pyafipws/ws_sr_padron.py", line 104, in Consultar idPersona=id_persona, File "/usr/local/lib/python2.7/dist-packages/pysimplesoap/client.py", line 147, in <lambda> return lambda *args, **kwargs: self.wsdl_call(attr,*args,**kwargs) File "/usr/local/lib/python2.7/dist-packages/pysimplesoap/client.py", line 342, in wsdl_call response = self.call(method, *params) File "/usr/local/lib/python2.7/dist-packages/pysimplesoap/client.py", line 220, in call raise SoapFault(unicode(response.faultcode), unicode(response.faultstring)) SoapFault: soap:Client: Unmarshalling Error: unexpected element (uri:"http://a4.soap.ws.server.puc.sr/", local:"token"). Expected elements are <{}sign>,<{}token>,<{}cuitRepresentada>,<{}idPersona>


No entiendo bien si el error está en el XML del request o del response.

Ese error es porque estás poniendo ?WSDL en mayúscula, y la biblioteca piensa que es un webservice .NET o similar, por lo que arma los XML de manera distinta.
Parece más un webservice JAVA, que requiere otro tratamiento. Si utilizas ?wsdl debería funcionar ok.
 
Adjunto el XML que se genera tras realizar el request (lo encontré en la carpeta "cache" dentro del directorio de instalación de pyafipws).

Agradezco cualquier comentario o sugerencia.
Desde ya gracias, saludos!

Si el problema persiste, puede que tengas alguna dependencia desactualizada, ver:


Sds

Lisandro

unread,
Oct 30, 2017, 9:57:32 AM10/30/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Muchísimas gracias Mariano, efectivamente ese era el inconveniente!!

Ahora estoy un poco perdido respecto a los valores que obtengo al consultar un CUIT. 
Específicamente yo utilizaba el anterior servicio REST para saber si determinado cuit es responsable inscripto, para entonces hacer factura A o B según corresponda. Lo que hacía era consultar si el campo "imp_iva" de la respuesta era "S" o "N" (sí o no), que indicaba si el cuit es responsable inscripto o no. 
No obstante, con este nuevo webservice, el campo "imp_iva" de la respuesta tiene siempre el valor "N". Probé con muchos cuits de los cuales tengo certeza que son responsable inscripto, pero en todos los casos ese campo tiene el valor "N". De cualquier manera, voy a leer en detalle la documentación del nuevo webservice, probablemente se me esté escapando alguna novedad. 

Nuevamente muchas gracias por tu ayuda.
Saludos!
Reply all
Reply to author
Forward
0 new messages