En Homo anda todo bien pero en producción tengo varios problemas...

1,109 views
Skip to first unread message

Mauricio Demonte

unread,
Jun 13, 2015, 5:47:13 PM6/13/15
to pyaf...@googlegroups.com
Hola gente... Les comento que hice todas las pruebas en Homo y funciona todo bien, generé CAE...

Un cliente tramitó los certificados, los relacionó con el WebService de Facturación electrónica, cambie HOMO a False en wsaa.py y wsfev1.py y compilé para generar el instalador.

Dicho instalador lo instalé en un XP Virtual, ahí mismo instalé la herramienta: Ejemplo interactivo Interfaz PyAfipWS para WSAA, y con esta herramienta obtengo lo siguiente al hacer Autenticar

No me reporta ningun error....
La primera consulta: ¿ESTO QUIERE DECIR QUE LOS CERTIFICADOS SON CORRECTOS Y QUE SE RELACIONÓ DICHOS CERTIFICADOS CON EL WEBSERVICE DE FACTURACION ELECTRONICA?

Luego de esto, empecé o probar mi código (que funcionaba perfectamente en HOMO...) que es a grandes rasgos...

WSAA = CREATEOBJECT("WSAA")

Tra = WSAA.CreateTRA("wsfe", 60 * 60 * 10)
&& me retorna el TRA (más abajo lo copio)

Cms = WSAA.SignTRA(tra, "nsur.crt", "nsur.key")  &&ambos archivos son los que usé en la herramienta antes mencionada
&&me retorna CMS (más abajo lo copio)

Ok = WSAA.Conectar() &&sin pasarle la direccion
&&Ok es true..

Y al hacer Ta = WSAA.LoginCMS(Cms) ---> Ta queda en NULL

Pero si sustituyo WSAA.Conectar y WSAA.LoginCMS(cms) por
  Ta = WSAA.CallWSAA(Cms, "https://wsaa.afip.gov.ar/ws/services/LoginCms")

Me retorna el Ta (más abajo lo copio)

¿QUE ESTA PASANDO? ¿HAY ALGO MAL DEFINIDO? ¿ES CORRECTA LA DIRECCION? ...AYUDA!!!


TRA RETORNADO POR CreateTRA:
<?xml version="1.0" encoding="UTF-8"?><loginTicketRequest version="1.0"><header><uniqueId>1434229700</uniqueId><generationTime>2015-06-13T08:08:20</generationTime><expirationTime>2015-06-14T04:08:20</expirationTime></header><service>wsfe</service></loginTicketRequest>


CMS RETORNADO POR WSAA.SignTRA

MIIGlAYJKoZIhvcNAQcCoIIGhTCCBoECAQExCzAJBgUrDgMCGgUAMIIBHwYJKoZI
hvcNAQcBoIIBEASCAQw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/Pjxsb2dpblRpY2tldFJlcXVlc3QgdmVyc2lvbj0iMS4wIj48aGVhZGVyPjx1
bmlxdWVJZD4xNDM0MjI5NzAwPC91bmlxdWVJZD48Z2VuZXJhdGlvblRpbWU+MjAx
NS0wNi0xM1QwODowODoyMDwvZ2VuZXJhdGlvblRpbWU+PGV4cGlyYXRpb25UaW1l
PjIwMTUtMDYtMTRUMDQ6MDg6MjA8L2V4cGlyYXRpb25UaW1lPjwvaGVhZGVyPjxz
ZXJ2aWNlPndzZmU8L3NlcnZpY2U+PC9sb2dpblRpY2tldFJlcXVlc3Q+oIIDczCC
A28wggJXoAMCAQICCFpZ0JNsZEpPMA0GCSqGSIb3DQEBBQUAMEYxKDAmBgNVBAMM
H0FGSVAgUHJvZHVjY2lvbiBDb21wdXRhZG9yZXMgQ0ExDTALBgNVBAoMBEFGSVAx
CzAJBgNVBAYTAkFSMB4XDTE1MDYxMjExNDgzMVoXDTE3MDIyMTE3MzE1NVowVzEN
MAsGA1UEAwwETlN1cjEZMBcGA1UEBRMQQ1VJVCAzMDcxNDEwNzExNTEeMBwGA1UE
CgwVTmV1bWF0aWNvcyBTdXIgUy5SLkwuMQswCQYDVQQGEwJBUjCBnzANBgkqhkiG
9w0BAQEFAAOBjQAwgYkCgYEArt2N40XHU8jduU2mkqy8ysQzxBeOzpNfn2ydFSdF
bx0rzLDx8uuSsMytE9CHMvQF0jzF7XDRslaMbdwvFScgV9xaAnnFUSoxuGJtTCP7
314Fz4s+iEB+oMTtGxvk84Bu7ug07Ec5tw0jY24bq6iJHBiuD9kNUAh0V+octCER
A2MCAwEAAaOB0zCB0DAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNV
HQ4EFgQUacbtAyd20P5LoSIdHuu+txbEp14wHwYDVR0jBBgwFoAUJ5u2HtejruQE
LZDeZ9JJxMYo0mowcAYDVR0gBGkwZzBlBg4rBgEEAYG7YwECAQQBATBTMFEGCCsG
AQUFBwICMEUMQ0NlcnRpZmljYWRvIHBhcmEgY29tcHV0YWRvcmVzIHNvbG8gdmFs
aWRvIHBhcmEgZW50b3Jub3MgcHJvZHVjdGl2b3MwDQYJKoZIhvcNAQEFBQADggEB
AEyiOBFJHNHKha8LWC9V0qBlvHmndUHEdEJGw+BB4Ww5dLMDWTolvukIp7YgPMEo
L4g/qoFe8ukBqpi1peQ9b+fu3lQV79QbHdB+yrw0/DCYCy9IMUy4ER+2JFMk1RX1
mQJRX3KaSp+xq3zuXHlxqryWujSPkq35tkAPZyvKguy37XpEVL+UttggQUgYPe2o
xIEHvG1ZShSU6VQF2G0Fl1srQmyMMfjgN/GCEtJf/iBRxyYvY1fg5gc7KiqxLRHV
rsTlC2wwv4yJDk/0DLUoXp6pAET+YAv30BHOKm/bI+IsG/nzK8nSE1vfcCMXveOq
anNIwn7yJQsPMbNkR7voV98xggHTMIIBzwIBATBSMEYxKDAmBgNVBAMMH0FGSVAg
UHJvZHVjY2lvbiBDb21wdXRhZG9yZXMgQ0ExDTALBgNVBAoMBEFGSVAxCzAJBgNV
BAYTAkFSAghaWdCTbGRKTzAJBgUrDgMCGgUAoIHYMBgGCSqGSIb3DQEJAzELBgkq
hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDYxMzIxMTEwNlowIwYJKoZIhvcN
AQkEMRYEFJccqfXQGU4dgeOfcXTX8avXO3UGMHkGCSqGSIb3DQEJDzFsMGowCwYJ
YIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcw
DgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3
DQMCAgEoMA0GCSqGSIb3DQEBAQUABIGAP/LipC1czlUmH7UBv8OwovF+Ohb3w6m3
M6bX5KzhuF69Xe+sq6MEpLbsFbET1frmgYl8HQS57rq+pKMtIneakodpZlCBd2YA
gcQ2Obw0icH0EFc+K8Y51n9x5b/HUgDHzOnX0N0QhRMEdoIPCovjGW29AUHqL7e1
llH8qEyeWmk=

TA RETORNADO POR .WSAA.CallWSAA

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<loginTicketResponse version="1">
    <header>
        <source>CN=wsaa, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239</source>
        <destination>C=ar, O=neumaticos sur s.r.l., SERIALNUMBER=CUIT 30714107115, CN=nsur</destination>
        <uniqueId>2250671867</uniqueId>
        <generationTime>2015-06-13T18:13:36.247-03:00</generationTime>
        <expirationTime>2015-06-14T06:13:36.247-03:00</expirationTime>
    </header>
    <credentials>
        <token>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8c3NvIHZlcnNpb249IjIuMCI+CiAgICA8aWQgdW5pcXVlX2lkPSIyNjA4NzQ0MjYzIiBzcmM9IkNOPXdzYWEsIE89QUZJUCwgQz1BUiwgU0VSSUFMTlVNQkVSPUNVSVQgMzM2OTM0NTAyMzkiIGdlbl90aW1lPSIxNDM0MjI5OTU2IiBleHBfdGltZT0iMTQzNDI3MzIxNiIgZHN0PSJDTj13c2ZlLCBPPUFGSVAsIEM9QVIiLz4KICAgIDxvcGVyYXRpb24gdmFsdWU9ImdyYW50ZWQiIHR5cGU9ImxvZ2luIj4KICAgICAgICA8bG9naW4gdWlkPSJDPWFyLCBPPW5ldW1hdGljb3Mgc3VyIHMuci5sLiwgU0VSSUFMTlVNQkVSPUNVSVQgMzA3MTQxMDcxMTUsIENOPW5zdXIiIHNlcnZpY2U9IndzZmUiIHJlZ21ldGhvZD0iMjIiIGVudGl0eT0iMzM2OTM0NTAyMzkiIGF1dGhtZXRob2Q9ImNtcyI+CiAgICAgICAgICAgIDxyZWxhdGlvbnM+CiAgICAgICAgICAgICAgICA8cmVsYXRpb24gcmVsdHlwZT0iNCIga2V5PSIzMDcxNDEwNzExNSIvPgogICAgICAgICAgICA8L3JlbGF0aW9ucz4KICAgICAgICA8L2xvZ2luPgogICAgPC9vcGVyYXRpb24+Cjwvc3NvPgoK</token>
        <sign>FgNyHZNHkbvX+0eQ4nP1gMH88ReYhO4aM2IqyKaFAtZjd3013N87AsBrpiclhKwSD8aSyx83/UPI90/+aDonaStwgt7sAwXAICaV3c0UH/25rq2KwTcrZC9L8YEMRyQZ8N03Cpq6UGCCddQLUX3dGSUZ6tU0mc91N0JoV3V8lTc=</sign>
    </credentials>
</loginTicketResponse>

*****************************************************

Y USANDO  ESTE TA y con esté código
 
 WSFEV1.Token = WSAAToken
  WSFEV1.Sign = WSAASign 
  WSFEV1.Cuit = "30714107115"
 
  cache = ""
  url_wsdl = "https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL"
  proxy = "" 
  Ok = WSFEV1.Conectar(cache, url_wsdl, proxy)   &&OK ME DA TRUE

WSFEV1.Dummy()
? "Estado AppServer : " + WSFEV1.AppServerStatus   &&DA OK
? "Estado DBServer  : " + WSFEV1.DbServerStatus    &&DA OK
 ? "Estado AuthServer: " + WSFEV1.AuthServerStatus  &&DA OK

Otra consulta: ¿ESTO QUIERE DECIR QUE YA ESTOY CONECTADO Y AUTENTICADO EN LA AFIP Y PUEDO SOLICITAR EL CAE...? O ¿COMO PUEDO SABER SI TODO ESTA BIEN?

Espero sus comentarios...

Un abrazo.
Mauricio.




Mariano Reingart

unread,
Jun 14, 2015, 9:23:00 PM6/14/15
to pyaf...@googlegroups.com
2015-06-13 18:24 GMT-03:00 Mauricio Demonte <mjde...@gmail.com>:
Hola gente... Les comento que hice todas las pruebas en Homo y funciona todo bien, generé CAE...

Un cliente tramitó los certificados, los relacionó con el WebService de Facturación electrónica, cambie HOMO a False en wsaa.py y wsfev1.py y compilé para generar el instalador.

Dicho instalador lo instalé en un XP Virtual, ahí mismo instalé la herramienta: Ejemplo interactivo Interfaz PyAfipWS para WSAA, y con esta herramienta obtengo lo siguiente al hacer Autenticar

No me reporta ningun error....
La primera consulta: ¿ESTO QUIERE DECIR QUE LOS CERTIFICADOS SON CORRECTOS Y QUE SE RELACIONÓ DICHOS CERTIFICADOS CON EL WEBSERVICE DE FACTURACION ELECTRONICA?

 
Si
 
Luego de esto, empecé o probar mi código (que funcionaba perfectamente en HOMO...) que es a grandes rasgos...

WSAA = CREATEOBJECT("WSAA")

Tra = WSAA.CreateTRA("wsfe", 60 * 60 * 10)
&& me retorna el TRA (más abajo lo copio)

Cms = WSAA.SignTRA(tra, "nsur.crt", "nsur.key")  &&ambos archivos son los que usé en la herramienta antes mencionada
&&me retorna CMS (más abajo lo copio)

Ok = WSAA.Conectar() &&sin pasarle la direccion
&&Ok es true..

Aca tendrías que usar la URL de producción como segundo parámetro:
 


Y al hacer Ta = WSAA.LoginCMS(Cms) ---> Ta queda en NULL

Porque estaba mal Conectar y el certificado es de producción, podés ver el mensaje de error en WSAA.Excepcion, WSAA.Traceback y WSAA.XmlResponse 

Pero si sustituyo WSAA.Conectar y WSAA.LoginCMS(cms) por
  Ta = WSAA.CallWSAA(Cms, "https://wsaa.afip.gov.ar/ws/services/LoginCms")

Me retorna el Ta (más abajo lo copio)

Si, pero no es necesario llamara CallWSAA si llamas a Conectar/LoginCMS con los parámetros correctos.
 
¿QUE ESTA PASANDO? ¿HAY ALGO MAL DEFINIDO? ¿ES CORRECTA LA DIRECCION? ...AYUDA!!!



TA RETORNADO POR .WSAA.CallWSAA

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<loginTicketResponse version="1">
    <header>
        <source>CN=wsaa, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239</source>
        <destination>C=ar, O=neumaticos sur s.r.l., SERIALNUMBER=CUIT 30714107115, CN=nsur</destination>
        <uniqueId>2250671867</uniqueId>
        <generationTime>2015-06-13T18:13:36.247-03:00</generationTime>
        <expirationTime>2015-06-14T06:13:36.247-03:00</expirationTime>
    </header>
    <credentials>
        <token>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8c3NvIHZlcnNpb249IjIuMCI+CiAgICA8aWQgdW5pcXVlX2lkPSIyNjA4NzQ0MjYzIiBzcmM9IkNOPXdzYWEsIE89QUZJUCwgQz1BUiwgU0VSSUFMTlVNQkVSPUNVSVQgMzM2OTM0NTAyMzkiIGdlbl90aW1lPSIxNDM0MjI5OTU2IiBleHBfdGltZT0iMTQzNDI3MzIxNiIgZHN0PSJDTj13c2ZlLCBPPUFGSVAsIEM9QVIiLz4KICAgIDxvcGVyYXRpb24gdmFsdWU9ImdyYW50ZWQiIHR5cGU9ImxvZ2luIj4KICAgICAgICA8bG9naW4gdWlkPSJDPWFyLCBPPW5ldW1hdGljb3Mgc3VyIHMuci5sLiwgU0VSSUFMTlVNQkVSPUNVSVQgMzA3MTQxMDcxMTUsIENOPW5zdXIiIHNlcnZpY2U9IndzZmUiIHJlZ21ldGhvZD0iMjIiIGVudGl0eT0iMzM2OTM0NTAyMzkiIGF1dGhtZXRob2Q9ImNtcyI+CiAgICAgICAgICAgIDxyZWxhdGlvbnM+CiAgICAgICAgICAgICAgICA8cmVsYXRpb24gcmVsdHlwZT0iNCIga2V5PSIzMDcxNDEwNzExNSIvPgogICAgICAgICAgICA8L3JlbGF0aW9ucz4KICAgICAgICA8L2xvZ2luPgogICAgPC9vcGVyYXRpb24+Cjwvc3NvPgoK</token>
        <sign>...</sign>
    </credentials>
</loginTicketResponse>


El token esta ok para producción, dice (decodificado de base64):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sso version="2.0">
    <id unique_id="..." src="CN=wsaa, O=AFIP, C=AR, SERIALNUMBER=CUIT 33693450239" gen_time="..." exp_time="1434273216" dst="CN=wsfe, O=AFIP, C=AR"/>
    <operation value="granted" type="login">
        <login uid="C=ar, O=neumaticos sur s.r.l., SERIALNUMBER=CUIT 30714107115, CN=nsur" service="wsfe" regmethod="22" entity="33693450239" authmethod="cms">
            <relations>
                <relation reltype="4" key="30714107115"/>
            </relations>
        </login>
    </operation>
</sso>


Cuidado con publicar el token y sign completo (especialmente este ultimo), con eso otras personas podrían haberlo utilizado para acceder y/o emitir facturas electrónicas a nombre de la empresa.

*****************************************************

Y USANDO  ESTE TA y con esté código
 
 WSFEV1.Token = WSAAToken
  WSFEV1.Sign = WSAASign 
  WSFEV1.Cuit = "30714107115"
 
  cache = ""
  url_wsdl = "https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL"
  proxy = "" 
  Ok = WSFEV1.Conectar(cache, url_wsdl, proxy)   &&OK ME DA TRUE

Nota: en Conectar OK siempre devuelve verdadero salvo que haya errores muy serios de conectividad o bibliotecas.
 
WSFEV1.Dummy()
? "Estado AppServer : " + WSFEV1.AppServerStatus   &&DA OK
? "Estado DBServer  : " + WSFEV1.DbServerStatus    &&DA OK
 ? "Estado AuthServer: " + WSFEV1.AuthServerStatus  &&DA OK

Otra consulta: ¿ESTO QUIERE DECIR QUE YA ESTOY CONECTADO Y AUTENTICADO EN LA AFIP Y PUEDO SOLICITAR EL CAE...? O ¿COMO PUEDO SABER SI TODO ESTA BIEN?


Hasta que no obtengas un CAE es dificil decirlo (puede haber trámites o bloqueos de AFIP, el método Dummy no es de mucha ayuda más allá de consultas básicas).
Podrías probar autorizando una factura B a consumidor final de $0.
También podes utilizar el método de consulta de puntos de venta autorizados con el método ParamGetPtosVenta:

 
Sds

Mauricio Demonte

unread,
Jun 15, 2015, 3:26:29 PM6/15/15
to pyaf...@googlegroups.com
Mariano, muchisimas gracias... Funcionó perfecto...
Saludos.
Mauricio.

El 14/06/2015 a las 22:22, Mariano Reingart escibió:

Sebastian Kandel

unread,
Jun 29, 2015, 6:56:26 AM6/29/15
to pyaf...@googlegroups.com
Hola, te puedo molestar?, estoy intentando modificar los fuentes para produccion y volver a compilarlos,
te queria consultar si sabes si existe ya un instalador general para produccion que se pueda descargar?

saludos
Reply all
Reply to author
Forward
0 new messages