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 FECAESolicitar, puede que algun valor sea opcional.
Dim dictData As Dictionary
Set dictData = New Dictionary
    dictData.Add "environment", "dev"
    dictData.Add "method", "FECAESolicitar"
    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", "{{token}}"
            Auth.Add "Sign", "{{sign}}"
            Auth.Add "Cuit", "{{cuit}}"
        Dim FeCAEReq As Dictionary
        Set FeCAEReq = New Dictionary
        params.Add "FeCAEReq", FeCAEReq
            Dim FeCabReq As Dictionary
            Set FeCabReq = New Dictionary
            FeCAEReq.Add "FeCabReq", FeCabReq
                FeCabReq.Add "CantReg", 1
                FeCabReq.Add "PtoVta", 1
                FeCabReq.Add "CbteTipo", 6
            Dim FeDetReq As Dictionary
            Set FeDetReq = New Dictionary
            FeCAEReq.Add "FeDetReq", FeDetReq
                Dim FECAEDetRequest As Dictionary
                Set FECAEDetRequest = New Dictionary
                FeDetReq.Add "FECAEDetRequest", FECAEDetRequest
                    FECAEDetRequest.Add "Concepto", 1
                    FECAEDetRequest.Add "DocTipo", 99
                    FECAEDetRequest.Add "DocNro", 0
                    FECAEDetRequest.Add "CbteDesde", 865
                    FECAEDetRequest.Add "CbteHasta", 865
                    FECAEDetRequest.Add "CbteFch", 20240314
                    FECAEDetRequest.Add "FchServDesde", Null
                    FECAEDetRequest.Add "FchServHasta", Null
                    FECAEDetRequest.Add "FchVtoPago", Null
                    FECAEDetRequest.Add "ImpTotal", 121
                    FECAEDetRequest.Add "ImpTotConc", 0
                    FECAEDetRequest.Add "ImpNeto", 100
                    FECAEDetRequest.Add "ImpOpEx", 0
                    FECAEDetRequest.Add "ImpIVA", 21
                    FECAEDetRequest.Add "ImpTrib", 0
                    FECAEDetRequest.Add "MonId", "PES"
                    FECAEDetRequest.Add "MonCotiz", 1
                    FECAEDetRequest.Add "CondicionIVAReceptorId", 5
                    Dim Iva As Dictionary
                    Set Iva = New Dictionary
                    FECAEDetRequest.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", 5
                                AlicIva0.Add "BaseImp", 100
                                AlicIva0.Add "Importe", 21

' 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
{
    "FECAESolicitarResult": {
        "FeCabResp": {
            "Cuit": "long",
            "PtoVta": "integer",
            "CbteTipo": "integer",
            "FchProceso": "string",
            "CantReg": "integer",
            "Resultado": "string",
            "Reproceso": "string"
        },
        "FeDetResp": {
            "FECAEDetResponse": [
                {
                    "Concepto": "integer",
                    "DocTipo": "integer",
                    "DocNro": "long",
                    "CbteDesde": "long",
                    "CbteHasta": "long",
                    "CbteFch": "string",
                    "Resultado": "string",
                    "Observaciones": {
                        "Obs": [
                            {
                                "Code": "integer",
                                "Msg": "string"
                            }
                        ]
                    },
                    "CAE": "string",
                    "CAEFchVto": "string"
                }
            ]
        },
        "Events": {
            "Evt": [
                {
                    "Code": "integer",
                    "Msg": "string"
                }
            ]
        },
        "Errors": {
            "Err": [
                {
                    "Code": "integer",
                    "Msg": "string"
                }
            ]
        }
    }
}