Factura Electrónica


Solicitud
Dim objHttp As Object
Dim strResponse As String
Dim strUrl As String
Dim strData As String
    
' Deben cambiar los datos de "params" por los que correspondan. 
' Esta request de ejemplo incluye todos posibles valores para 
' llamar al metodo FECAEARegInformativo, puede que algun valor sea opcional.
Dim dictData As Dictionary
Set dictData = New Dictionary
    dictData.Add "environment", "dev"
    dictData.Add "method", "FECAEARegInformativo"
    dictData.Add "wsid", "wsfe"
    Dim params As Dictionary
    Set params = New Dictionary
    dictData.Add "params", params
        Dim Auth As Dictionary
        Set Auth = New Dictionary
        params.Add "Auth", Auth
            Auth.Add "Token", "string"
            Auth.Add "Sign", "string"
            Auth.Add "Cuit", 1
        Dim FeCAEARegInfReq As Dictionary
        Set FeCAEARegInfReq = New Dictionary
        params.Add "FeCAEARegInfReq", FeCAEARegInfReq
            Dim FeCabReq As Dictionary
            Set FeCabReq = New Dictionary
            FeCAEARegInfReq.Add "FeCabReq", FeCabReq
                FeCabReq.Add "CantReg", 1
                FeCabReq.Add "PtoVta", 1
                FeCabReq.Add "CbteTipo", 1
            Dim FeDetReq As Dictionary
            Set FeDetReq = New Dictionary
            FeCAEARegInfReq.Add "FeDetReq", FeDetReq
                Dim FECAEADetRequest As Collection
                Set FECAEADetRequest = New Collection
                FeDetReq.Add "FECAEADetRequest", FECAEADetRequest
                    Dim FECAEADetRequest0 As Dictionary
                    Set FECAEADetRequest0 = New Dictionary
                    FECAEADetRequest.Add FECAEADetRequest0
                        FECAEADetRequest0.Add "Concepto", 1
                        FECAEADetRequest0.Add "DocTipo", 1
                        FECAEADetRequest0.Add "DocNro", 1
                        FECAEADetRequest0.Add "CbteDesde", 1
                        FECAEADetRequest0.Add "CbteHasta", 1
                        FECAEADetRequest0.Add "CbteFch", "string"
                        FECAEADetRequest0.Add "ImpTotal", 1.5
                        FECAEADetRequest0.Add "ImpTotConc", 1.5
                        FECAEADetRequest0.Add "ImpNeto", 1.5
                        FECAEADetRequest0.Add "ImpOpEx", 1.5
                        FECAEADetRequest0.Add "ImpTrib", 1.5
                        FECAEADetRequest0.Add "ImpIVA", 1.5
                        FECAEADetRequest0.Add "FchServDesde", "string"
                        FECAEADetRequest0.Add "FchServHasta", "string"
                        FECAEADetRequest0.Add "FchVtoPago", "string"
                        FECAEADetRequest0.Add "MonId", "string"
                        FECAEADetRequest0.Add "MonCotiz", 1.5
                        FECAEADetRequest0.Add "CanMisMonExt", "string"
                        FECAEADetRequest0.Add "CondicionIVAReceptorId", 1
                        Dim CbtesAsoc As Dictionary
                        Set CbtesAsoc = New Dictionary
                        FECAEADetRequest0.Add "CbtesAsoc", CbtesAsoc
                            Dim CbteAsoc As Collection
                            Set CbteAsoc = New Collection
                            CbtesAsoc.Add "CbteAsoc", CbteAsoc
                                Dim CbteAsoc0 As Dictionary
                                Set CbteAsoc0 = New Dictionary
                                CbteAsoc.Add CbteAsoc0
                                    CbteAsoc0.Add "Tipo", 1
                                    CbteAsoc0.Add "PtoVta", 1
                                    CbteAsoc0.Add "Nro", 1
                                    CbteAsoc0.Add "Cuit", "string"
                                    CbteAsoc0.Add "CbteFch", "string"
                        Dim Tributos As Dictionary
                        Set Tributos = New Dictionary
                        FECAEADetRequest0.Add "Tributos", Tributos
                            Dim Tributo As Collection
                            Set Tributo = New Collection
                            Tributos.Add "Tributo", Tributo
                                Dim Tributo0 As Dictionary
                                Set Tributo0 = New Dictionary
                                Tributo.Add Tributo0
                                    Tributo0.Add "Id", 1
                                    Tributo0.Add "Desc", "string"
                                    Tributo0.Add "BaseImp", 1.5
                                    Tributo0.Add "Alic", 1.5
                                    Tributo0.Add "Importe", 1.5
                        Dim Iva As Dictionary
                        Set Iva = New Dictionary
                        FECAEADetRequest0.Add "Iva", Iva
                            Dim AlicIva As Collection
                            Set AlicIva = New Collection
                            Iva.Add "AlicIva", AlicIva
                                Dim AlicIva0 As Dictionary
                                Set AlicIva0 = New Dictionary
                                AlicIva.Add AlicIva0
                                    AlicIva0.Add "Id", 1
                                    AlicIva0.Add "BaseImp", 1.5
                                    AlicIva0.Add "Importe", 1.5
                        Dim Opcionales As Dictionary
                        Set Opcionales = New Dictionary
                        FECAEADetRequest0.Add "Opcionales", Opcionales
                            Dim Opcional As Collection
                            Set Opcional = New Collection
                            Opcionales.Add "Opcional", Opcional
                                Dim Opcional0 As Dictionary
                                Set Opcional0 = New Dictionary
                                Opcional.Add Opcional0
                                    Opcional0.Add "Id", "string"
                                    Opcional0.Add "Valor", "string"
                        Dim Compradores As Dictionary
                        Set Compradores = New Dictionary
                        FECAEADetRequest0.Add "Compradores", Compradores
                            Dim Comprador As Collection
                            Set Comprador = New Collection
                            Compradores.Add "Comprador", Comprador
                                Dim Comprador0 As Dictionary
                                Set Comprador0 = New Dictionary
                                Comprador.Add Comprador0
                                    Comprador0.Add "DocTipo", 1
                                    Comprador0.Add "DocNro", 1
                                    Comprador0.Add "Porcentaje", 1.5
                        Dim PeriodoAsoc As Dictionary
                        Set PeriodoAsoc = New Dictionary
                        FECAEADetRequest0.Add "PeriodoAsoc", PeriodoAsoc
                            PeriodoAsoc.Add "FchDesde", "string"
                            PeriodoAsoc.Add "FchHasta", "string"
                        Dim Actividades As Dictionary
                        Set Actividades = New Dictionary
                        FECAEADetRequest0.Add "Actividades", Actividades
                            Dim Actividad As Collection
                            Set Actividad = New Collection
                            Actividades.Add "Actividad", Actividad
                                Dim Actividad0 As Dictionary
                                Set Actividad0 = New Dictionary
                                Actividad.Add Actividad0
                                    Actividad0.Add "Id", 1
                        FECAEADetRequest0.Add "CAEA", "string"
                        FECAEADetRequest0.Add "CbteFchHsGen", "string"

' Convertimos el objeto en JSON
strData = JsonConverter.ConvertToJson(dictData, Whitespace:=2)

' Creamos un cliente HTTP para llamar a la API
Set objHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
strUrl = "https://app.afipsdk.com/api/v1/afip/requests"

' Reemplazar con tu access_token obtenido de https://app.afipsdk.com
Dim accessToken As String
accessToken = "TU_TOKEN_AQUI"
objHttp.AddRequestHeader("Authorization", "Bearer " + accessToken)

' Realizamos la llamada a la API
With objHttp
    .Open "POST", strUrl, False
    .setRequestHeader "Content-Type", "application/json"
    .Send strData
    ' En caso de error lo mostramos por pantalla
    If .Status <> 200 Then
        MsgBox .responseText
        Exit Sub
    End If

    strResponse = .responseText
End With

' Convertimos la respuesta en un objeto
Set objJson = JsonConverter.ParseJson(strResponse)

' Mostramos la respuesta por pantalla
Debug.Print JsonConverter.ConvertToJson(objJson, Whitespace:=2)
Respuesta
{
    "FECAEARegInformativoResult": {
        "FeCabResp": {
            "Cuit": "long",
            "PtoVta": "integer",
            "CbteTipo": "integer",
            "FchProceso": "string",
            "CantReg": "integer",
            "Resultado": "string",
            "Reproceso": "string"
        },
        "FeDetResp": {
            "FECAEADetResponse": [
                {
                    "Concepto": "integer",
                    "DocTipo": "integer",
                    "DocNro": "long",
                    "CbteDesde": "long",
                    "CbteHasta": "long",
                    "CbteFch": "string",
                    "Resultado": "string",
                    "Observaciones": {
                        "Obs": [
                            {
                                "Code": "integer",
                                "Msg": "string"
                            }
                        ]
                    },
                    "CAEA": "string"
                }
            ]
        },
        "Events": {
            "Evt": [
                {
                    "Code": "integer",
                    "Msg": "string"
                }
            ]
        },
        "Errors": {
            "Err": [
                {
                    "Code": "integer",
                    "Msg": "string"
                }
            ]
        }
    }
}