Solución a problemas con la nueva Resolución General ARCA N° 5.616/2024:

Usar web service factura MiPyME en Visual Fox Pro

Con pocas líneas de código


Usar web service factura MiPyME en Visual Fox Pro

Consumir los web services de ARCA puede ser un poco complicado, por eso vamos a utilizar la API de Afip SDK, que nos permite conectarnos a los web services de ARCA sin complicarnos con el uso de SOAP y la autenticación.

Ademas, vamos a usar https://github.com/sait/vfpjson/blob/master/json.prg para trabajar con JSON.

SET PROCEDURE TO "path\al\archivo\json.prg" ADDITIVE

Obtener la autorización

Lo primero que tenemos hacer es obtener el “Token authorization”, que seria la autorización en ARCA.

Para usar los web services de ARCA, se requiere un certificado digital, con Afip SDK puedes integrarte en modo desarrollo usando el CUIT 20409378472 sin necesidad de obtener un certificado, para poder integrarte lo más rápido posible.

Te dejo este enlace por si luego quieres usar tu propio certificado para desarrollo.

Debemos ejecutar una solicitud POST al endpoint

https://app.afipsdk.com/api/v1/afip/auth
LOCAL loHttp, loResponse, lcJson, lcAuthUrl, loAuthData, loAuthResponse
loHttp = CREATEOBJECT("Msxml2.XMLHTTP")

lcAuthUrl = "https://app.afipsdk.com/api/v1/afip/auth"
loAuthData = '{' + ;
    '"environment": "dev",' + ;
    '"tax_id": "20409378472",' + ;
    '"wsid": "wsfecred"' + ;
'}'

loHttp.Open("POST", lcAuthUrl, .F.)
loHttp.setRequestHeader("Content-Type", "application/json")
loHttp.Send(loAuthData)

IF loHttp.Status <> 200
    ? "Error en la autorizacion: " + STR(loHttp.Status)
    RETURN
ENDIF

loResponse = loHttp.responseText
loAuthResponse = json_decode(loResponse)

lcToken = loAuthResponse._token
lcSign = loAuthResponse._sign

? "Token: " + lcToken
? "Sign: " + lcSign

Utilizamos el web service id wsfecred "wsid": "wsfecred", el cual corresponde al web service factura MiPyME.

En la pestaña “API” de la documentacion podes consultar todos los parametros del endpoint.

Aquí tenemos el token y sign que nos dio ARCA para usar el web service factura MiPyME. No es necesario que lo guardemos, Afip SDK se encarga de esto por nosotros, debemos solicitarlo antes de cada llamada a los métodos del web service.

Llamar al web service

En el manual del web service pueden encontrar los métodos disponibles

Para este ejemplo vamos a llamar al metodo consultarMontoObligadoRecepcion.

Debemos ejecutar una solicitud POST al endpoint

https://app.afipsdk.com/api/v1/afip/requests
LOCAL loHttp, loResponse, lcRequestUrl, loRequestData, loRequestResponse
loHttp = CREATEOBJECT("Msxml2.XMLHTTP")

lcRequestUrl = "https://app.afipsdk.com/api/v1/afip/requests"
loRequestData = '{' + ;
    '"environment": "dev",' + ;
    '"method": "consultarMontoObligadoRecepcion",' + ;
    '"wsid": "wsfecred",' + ;
    '"params": {' + ;
    '   "authRequest": {' + ;
    '       "token": "' + lcToken + '",' + ;
    '       "sign": "' + lcSign + '",' + ;
    '       "cuitRepresentada": "20409378472"' + ;
    '   },' + ;
    '   "cuitConsultada": "20054100605",' + ;
    '   "fechaEmision": "2024-03-03"' + ;
    '}' + ;
'}'

loHttp.Open("POST", lcRequestUrl, .F.)
loHttp.setRequestHeader("Content-Type", "application/json")
loHttp.Send(loRequestData)

IF loHttp.Status <> 200
    ? "Error al consultar el monto: " + STR(loHttp.Status)
    RETURN
ENDIF

loResponse = loHttp.responseText
loRequestResponse = json_decode(loResponse)

? "Response: " + loResponse

En la pestaña “API” de la documentacion podes consultar todos los parametros del endpoint.

En la respuesta, nos devolverá la respuesta del web service.

{
    "consultarMontoObligadoRecepcionReturn": ...,
}

Con esto ya podemos conectarnos al web service factura MiPyME a través de la API.

Lo único que nos queda es pasar a modo producción.


Ante cualquier duda o pregunta al respecto, pueden resolverla rápidamente dentro de la Comunidad Afip SDK. Además, puedes unirte para estar al tanto de las novedades y problemas técnicos al usar los servicios de ARCA.

Conéctate a ARCA hoy mismo

Certificados, código, tutoriales, soporte... todo lo que necesitas para usar los web services de ARCA en un solo lugar.