Usar web service factura MiPyME en Visual Basic 6
Con pocas líneas de código

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.