Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
77 lines (69 sloc) 2.72 KB
Attribute VB_Name = "Module1"
' Ejemplo de Uso de Interface COM con Web Services AFIP (PyAfipWs)
' Web service de Autenticación y Autorización - REUSO DE TICKET DE ACCESO en Visual Basic
' (para Version Interfaz 2.0 o superior, no funciona con instaladores previos)
' 2010, 2011, 2013 (C) Mariano Reingart <reingart@gmail.com>
' para más info ver: http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs
Sub Main()
' Crear objeto interface Web Service Autenticación y Autorización
Dim WSAA As Object
Set WSAA = CreateObject("WSAA")
' verifico la versión:
Debug.Assert WSAA.Version >= "2.04a"
' deshabilito errores no manejados (version 2.04 o superior)
WSAA.LanzarExcepciones = False
' datos de prueba del certificado (para depuración):
Dest = "C=ar, O=pyafipws-sistemas agiles, SERIALNUMBER=CUIT 20267565393, CN=mariano reingart"
' inicializo las variables:
Token = ""
Sign = ""
' busco un ticket de acceso previamente almacenado:
If Dir("ta.xml") <> "" Then
' leo el xml almacenado del archivo
Open "ta.xml" For Input As #1
Line Input #1, ta_xml
Close #1
' analizo el ticket de acceso previo:
ok = WSAA.AnalizarXml(ta_xml)
' verifico que el destino corresponda (CUIT)
Debug.Assert WSAA.ObtenerTagXml("destination") = Dest
' verificar CUIT
If Not WSAA.Expirado() Then
' puedo reusar el ticket de acceso:
Token = WSAA.ObtenerTagXml("token")
Sign = WSAA.ObtenerTagXml("sign")
End If
End If
' Si no reuso un ticket de acceso, solicito uno nuevo:
If Token = "" Or Sign = "" Then
' Generar un Ticket de Requerimiento de Acceso (TRA)
tra = WSAA.CreateTRA("wsfe", 43200) ' 3600*12hs
' Especificar la ubicacion de los archivos certificado y clave privada
cert = "reingart.crt" ' certificado de prueba
clave = "reingart.key" ' clave privada de prueba
' Generar el mensaje firmado (CMS)
cms = WSAA.SignTRA(tra, cert, clave)
If cms <> "" Then
' Llamar al web service para autenticar:
ok = WSAA.Conectar()
ta_xml = WSAA.LoginCMS(cms)
If ta_xml <> "" Then
' guardo el ticket de acceso en el archivo
Open "ta.xml" For Output As #1
Print #1, ta_xml
Close #1
End If
Token = WSAA.Token
Sign = WSAA.Sign
End If
' reviso que no haya errores:
Debug.Print "excepcion", WSAA.Excepcion
If WSAA.Excepcion <> "" Then
Debug.Print WSAA.Traceback
MsgBox WSAA.Excepcion, vbCritical, "Excepción"
End If
End If
' Imprimir los datos del ticket de acceso: ToKen y Sign de autorización
MsgBox "Token: " + Token
MsgBox "Sign: " + Sign
End Sub