Hola gente, nosotros estamos consumiendo al WS de AFIP desde Java.
Cuando en su momento obtuvimos ese error, se debía a que el tiempo de vida del ticket era muy corto, sumado a que la PC en donde corría era lenta y la conexión a Internet no era la mejor (no digo nada del usuario porque somos amigos :D).
Ejemplo, caso real:
may 08, 2019 8:47:17 -> Solicitud de token.
Si vemos el request armado:
<generationTime>2019-05-08T08:47:05.341-03:00</generationTime>
<expirationTime>2019-05-08T08:47:08.941-03:00</expirationTime>
Éstos valores se obtienen porque el armado del XML del request es segundos anterior al llamado efectivo al WS.
Efectivamente la hora de expiración es inferior a la del llamado al WS, por temas computacionales como indique anteriormente.
En nuestro caso, esa fecha de expiración es "seteable" desde un archivo de propiedades, se suman x cantidad de milisegundos al tiempo en que se está haciendo el request.
Del Archivo de propiedades.
# Tiempo de vida del ticket requerido
TicketTime=3600
Con 3600 milisegundos, son 3.6 segundos, es aproximadamente la diferencia entre la hora de generación y expiración. Si agrandan ese valor a algo más (hoy lo tenemos en 1 minuto, 60.000 milisegundos) solucionan el problema.
Espero a alguien le sirva.
Saludos.
Andrés Lanzoni.