# Visual Basic 6

### Requisitos previos

Para poder seguir esta guía, primero necesitarás:

* [Obtener un access\_token de Afip SDK](https://app.afipsdk.com)

### Básicos

Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api).

En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint.

***

### 1. Instalación

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](https://raw.githubusercontent.com/VBA-tools/VBA-JSON/refs/heads/master/JsonConverter.bas), y agregarlo a nuestro proyecto.

<figure><img src="https://4026677166-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVEAVwm5cCW83gSe7NH8Z%2Fuploads%2Fgit-blob-262d3690aa31c89b0495d358ead1dd12492d08fe%2Fimagen.png?alt=media" alt="" width="173"><figcaption></figcaption></figure>

<figure><img src="https://4026677166-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVEAVwm5cCW83gSe7NH8Z%2Fuploads%2Fgit-blob-af83407b19f8ec4734e64c226191fac2292b0640%2Fimagen.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

Y agregar las referencias "Microsoft Scripting Runtime" y "Microsoft WinHTTP Services, version 5.1"

<figure><img src="https://4026677166-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVEAVwm5cCW83gSe7NH8Z%2Fuploads%2Fgit-blob-ddcedb01de540c66f43ee5309b15520a21c11024%2Fimagen.png?alt=media" alt="" width="174"><figcaption></figcaption></figure>

<figure><img src="https://4026677166-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVEAVwm5cCW83gSe7NH8Z%2Fuploads%2Fgit-blob-490184f4df2cfeaa952d76ce8df70c09a6d81c42%2Fimagen.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="https://4026677166-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVEAVwm5cCW83gSe7NH8Z%2Fuploads%2Fgit-blob-c8efeca8e8cfd70c15b43425dcd703c35b2b3880%2Fimagen.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

### 2. Obtener el Ticket de Acceso (TA)

Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization.

Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente.

Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno.

Si preferís [usar tu propio certificado](#usar-tu-propio-certificado-opcional), al final te mostramos cómo.

{% tabs %}
{% tab title="AfipSDKRequest.frm" %}

```visual-basic
Private Sub GetAuthorization()
    Dim objHttp As Object
    Dim strResponse As String
    Dim strAuthUrl As String
    Dim strAuthData As String
    Dim dictAuthData As Dictionary
    
    ' Crear objeto XMLHTTP
    Set objHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    strAuthUrl = "https://app.afipsdk.com/api/v1/afip/auth"
    
    ' Preparamos la data para pedir el TA
    Set dictAuthData = New Dictionary
    dictAuthData.Add "environment", "dev"
    dictAuthData.Add "tax_id", "20409378472"
    dictAuthData.Add "wsid", "wsfe"
    
    strAuthData = JsonConverter.ConvertToJson(dictAuthData)
    
    ' Reemplazar con tu access_token obtenido de https://app.afipsdk.com
    Dim accessToken As String
    accessToken = "TU_TOKEN_AQUI"

    With objHttp
        .Open "POST", strAuthUrl, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " + accessToken
        .Send strAuthData
        
        If .Status <> 200 Then
            MsgBox "Error en la autorización: " & .Status
            MsgBox "Respuesta: " & .responseText
            Exit Sub
        End If
        
        strResponse = .responseText
    End With
    
    ' Parsear respuesta JSON (requiere función auxiliar ParseJson)
    Dim objJson As Object
    Set objJson = JsonConverter.ParseJson(strResponse)
    
    ' Guardar token y sign
    gstrToken = objJson("token")
    gstrSign = objJson("sign")
    
    Debug.Print "Token: " & gstrToken
    Debug.Print "Sign: " & gstrSign
End Sub

```

{% endtab %}
{% endtabs %}

`gstrToken` y `gstrSign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos.

### 3. Llamar al método del Web Service que necesites

Con el TA ya podés realizar las llamadas a los Web Services que necesites.

Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request.

Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service.

{% content-ref url="../siguientes-pasos/web-services" %}
[web-services](https://docs.afipsdk.com/siguientes-pasos/web-services)
{% endcontent-ref %}

Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía:

{% content-ref url="../siguientes-pasos/web-services/otro-web-service" %}
[otro-web-service](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service)
{% endcontent-ref %}

Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA.

{% embed url="<https://afipsdk.com/docs/api-reference/introduction/>" %}

También podés usar las guías del blog de Afip SDK para Visual Basic 6:

{% embed url="<https://afipsdk.com/blog/category/VB6/>" %}

***

### Usar tu propio certificado <sup><sub>(Opcional)<sub></sup>

Primero, obtenemos el certificado siguiendo esta guía.

{% embed url="<https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/>" fullWidth="false" %}

Al pedir la autorización agregamos `cert` y `key` en el body

{% tabs %}
{% tab title="AfipSDKRequest.frm" %}

```go
dictAuthData.Add "environment", "dev"
dictAuthData.Add "tax_id", "20111111112"
dictAuthData.Add "wsid", "wsfe"
dictAuthData.Add "cert", "-----BEGIN CERTIFICATE-----MIIDRzC..."
dictAuthData.Add "key", "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..."
```

{% endtab %}
{% endtabs %}
