Resolución N° 5.616/2024. Más información

Usar web service factura MiPyME en Visual Basic 6

Con pocas líneas de código


Usar web service factura MiPyME en Visual Basic 6

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/VBA-tools/VBA-JSON/blob/master/JsonConverter.bas para trabajar con JSON.

Para esto debemos descargar descargar JsonConverter.bas, y agregarlo a nuestro proyecto.

Elegimos “JsonConverter.bas”

Y agregar la referencia “Microsoft Scripting Runtime”

Elegimos “Microsoft Scripting Runtime”

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
Private Sub GetAuthorization()
    Dim objHttp As Object
    Dim strResponse As String
    Dim strAuthUrl As String
    Dim strAuthData As String
    Dim dictAuthData As Dictionary
    
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    strAuthUrl = "https://app.afipsdk.com/api/v1/afip/auth"
    
    Set dictAuthData = New Dictionary
    dictAuthData.Add "environment", "dev"
    dictAuthData.Add "tax_id", "20409378472"
    dictAuthData.Add "wsid", "wsfecred"
    
    strAuthData = JsonConverter.ConvertToJson(dictAuthData)
    
    With objHttp
        .Open "POST", strAuthUrl, False
        .setRequestHeader "Content-Type", "application/json"
        .Send strAuthData
        
        If .Status <> 200 Then
            MsgBox "Error en la autorización: " & .Status
            MsgBox "Respuesta: " & .responseText
            Exit Sub
        End If
        
        strResponse = .responseText
    End With
    
    Dim objJson As Object
    Set objJson = JsonConverter.ParseJson(strResponse)
    
    gstrToken = objJson("token")
    gstrSign = objJson("sign")
    
    Debug.Print "Token: " & gstrToken
    Debug.Print "Sign: " & gstrSign
End Sub

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
Private Sub ConsultarMontoObligadoRecepcion()
    Dim objHttp As Object
    Dim strResponse As String
    Dim strUrl As String
    Dim strData As String
    Dim dictData As Dictionary
    
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    strUrl = "https://app.afipsdk.com/api/v1/afip/requests"
    
    Set dictData = New Dictionary
    dictData.Add "environment", "dev"
    dictData.Add "method", "consultarMontoObligadoRecepcion"
    dictData.Add "wsid", "wsfecred"
    
    Dim dictParams As Dictionary
    Set dictParams = New Dictionary
    
    Dim dictAuthRequest As Dictionary
    Set dictAuthRequest = New Dictionary
    dictAuthRequest.Add "token", gstrToken
    dictAuthRequest.Add "sign", gstrSign
    dictAuthRequest.Add "cuitRepresentada", "20409378472"
    dictParams.Add "authRequest", dictAuthRequest
    
    dictParams.Add "cuitConsultada", "20054100605"
    dictParams.Add "fechaEmision", "2024-03-03"
    
    dictData.Add "params", dictParams
    
    strData = JsonConverter.ConvertToJson(dictData)
    
    With objHttp
        .Open "POST", strUrl, False
        .setRequestHeader "Content-Type", "application/json"
        .Send strData
        
        If .Status <> 200 Then
            MsgBox "Error al consultar el monto: " & .Status
            Exit Sub
        End If
        
        strResponse = .responseText
    End With
    
    Debug.Print "Response: " & strResponse
    
    Dim objJson As Object
    Set objJson = JsonConverter.ParseJson(strResponse)
    ' Aquí puedes acceder al resultado de la consulta
End Sub

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.