Factura Electrónica
Ejemplo de Nota de Débito electrónica A con Visual Basic 6
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", 202
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", 80
FECAEDetRequest.Add "DocNro", 33693450239
FECAEDetRequest.Add "CbteDesde", 30
FECAEDetRequest.Add "CbteHasta", 30
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", 1
Dim CbtesAsoc As Dictionary
Set CbtesAsoc = New Dictionary
FECAEDetRequest.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
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"
}
]
}
}
}