(Válido para WSMTXCA y todos los servicios en general teniendo en cuenta el nombre de los métodos propios de cada servicio)
Al ejecutar alguno de los métodos autorizadores para CAE o CAE anticipado debe preverse (más allá de la posible respuesta de aceptación o rechazo por parte de AFIP) que no se reciba la respuesta por fallas de conexión o demoras en la red por time out. (descartando que no sea una falta de conexión permanente por ejemplo por no tener internet algo que se puede comprobar con el test de conexión o por no estar usando el procotolo TLS por lo citado en el post)
En estos casos debe verificarse si el último comprobante enviado fue o no autorizado (ya que la falla pudo ocurrir DESPUÉS que el servidor de AFIP envie la respuesta pero ANTES que se la reciba).
Después de ejecutar el método FECAESolicitar (o FECAEARegInformativo) para un punto de venta, tipo de comprobante y número, en caso de no recibir respuesta puede usarse el método FECompConsulta para ese punto de venta, tipo de comprobante y número. Esté método recupera todos los datos archivados por AFIP (incluido CAE o CAEA). Si el método FECompConsulta devuelve falso indicará que el error de conexión se originó antes de que AFIP procesara la respuesta (tener en cuenta que el método f1compconsultar también puede estar en timeout, ver nota al pie). En este caso se debe volver a ejecutar el método FECAESolicitar con los MISMOS datos.
Alternativamente puede usarse el método FECompUltimoAutorizado que devuelve para un punto de venta y tipo de comprobante el último numero procesado en AFIP (tener en cuenta que este método también puede estar en timeout, ver nota al pie). Pero solo devuelve el número y no el CAE asociado que solo puede ser recuperado por FECompConsulta. Tener en cuenta que es recomendable almacenar localmente la numeración de comprobante y solo recurrir a este método antes fallos de conexión para verificar si el último comprobante fue autorizado. Ya que invocar al método f1compUltimoAutorizado y f1CaeSolicitar implica una doble conexión y puede originar que se ejecuten varios f1caesolicitar sumando 1 en la numeración de cada comprobante que quedan duplicados.
En cuando a reducir la frecuencia con la que se recibe el error de tiemout, aunque es algo externo al código hay una guía básica para tratar este error.
NOTA reproceso para grandes cantidades de comprobantes:
En la guia anterior uno de los pasos es ejecutar el método f1compconsultar para recuperar el CAE (perdido o no recibido en una conexión que demoró mucho tiempo) pero si el timeout o saturación en el servidor de AFIP es extensa este mismo método puede estar también en timeout ( por unos segundos devolver que un comprobante no existe cuando ese número en realidad ya fue autorizado). Esto no afecta la guia para el reproceso que se mantiene con los mismos pasos teniendo en cuenta que:
si f1caesolicitar devuelve timeout se debe ejecutar f1compconsultar que tiene 2 resultados posibles:
1.a) devuelve cae (el ya obtenido que no se llego a recibir antes). seguir con el proceso normal.
1.b) devuelve que el comprobante no existe (aunque puede que no sea correcto por un timeout temporal de AFIP, eso no cambia los pasos del reproceso). simplemente volver a ejecutar f1caesolicitar (con los MISMOS datos y número de comprobante) el ciclo vuelva a empezar y f1caesolicitar devolverá:
2.a) numero no correlativo (el servidor ya lo autorizó y ya no está en timeout ahora si f1compconsultar devolverá que el numero y el cae están, seguir con el proceso normal)
2.b) devuelve cae (en los pasos anteriores el servidor no habia llegado a procesar el comprobante, seguir con el proceso normal)
2.c) continua timeout.