Creación de VEPs para entidades externas (WSCREATEVEP)


Solicitud
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;

// Deben cambiar los datos de "params" por los que correspondan. 
// Esta request de ejemplo incluye todos posibles valores para 
// llamar al metodo createVEP, puede que algun valor sea opcional.
var data = new Dictionary<string, object> {
    ["environment"] = "dev",
    ["method"] = "createVEP",
    ["wsid"] = "setipagob2b_createvep",
    ["params"] = new Dictionary<string, object> {
        ["token"] = "string",
        ["sign"] = "string",
        ["entidadDePago"] = 1,
        ["vep"] = new Dictionary<string, object> {
            ["nroVEP"] = 1,
            ["fechaHoraCreacion"] = "string",
            ["fechaExpiracion"] = "string",
            ["fechaVencimiento"] = "string",
            ["nroFormulario"] = 1,
            ["orgRecaudDesc"] = "string",
            ["codTipoPago"] = 1,
            ["pagoDesc"] = "string",
            ["pagoDescExtracto"] = "string",
            ["usuarioCUIT"] = 1,
            ["autorizanteCUIT"] = 1,
            ["contribuyenteCUIT"] = 1,
            ["establecimiento"] = 1,
            ["concepto"] = 1,
            ["conceptoDesc"] = "string",
            ["subConcepto"] = 1,
            ["subConceptoDesc"] = "string",
            ["periodoFiscal"] = 1,
            ["anticipoCuota"] = 1,
            ["importe"] = 1.5,
            ["ownerCuit"] = 1,
            ["ownerTransactionId"] = 1,
            ["Detalles"] = new Dictionary<string, object> {
                ["Detalle"] = new[] {
                    new Dictionary<string, object> {
                        ["campo"] = 1,
                        ["campoTipo"] = "string",
                        ["campoDesc"] = "string",
                        ["contenido"] = "string",
                        ["contenidoDesc"] = "string"
                    }
                }
            },
            ["Obligaciones"] = new Dictionary<string, object> {
                ["Obligacion"] = new[] {
                    new Dictionary<string, object> {
                        ["impuesto"] = 1,
                        ["impuestoDesc"] = "string",
                        ["importe"] = 1.5
                    }
                }
            }
        }
    }
};

// Creamos un cliente HTTP para llamar a la API
var requestClient = new HttpClient();
var requestUrl = "https://app.afipsdk.com/api/v1/afip/requests";

// Reemplazar con tu access_token obtenido de https://app.afipsdk.com
var accessToken = "TU_TOKEN_AQUI";
requestClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}"); 

// Realizamos la llamada a la API
var dataJSON = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var requestResponse = await requestClient.PostAsync(requestUrl, dataJSON);

// En caso de error lo mostramos por consola
if (!requestResponse.IsSuccessStatusCode) {
    Console.WriteLine($"Error en la request: {requestResponse.StatusCode}");
    var errorResponse = JsonConvert.DeserializeObject(await requestResponse.Content.ReadAsStringAsync());
    Console.WriteLine(errorResponse);

    return;
}

// Obtenemos la respuesta
var requestResponseBody = await requestResponse.Content.ReadAsStringAsync();

// Convertimos la respuesta en un objeto
dynamic response = JsonConvert.DeserializeObject(requestResponseBody);

// Mostramos la respuesta por consola
Console.WriteLine(response);
Respuesta
{
    "createVEPReturn": "long"
}