Consumir Api

Factura Electronica ejemplo PHP

Diseñamos una API RESTful completamente operativa para que integres tus sistemas. Con estos ejemplos podrás conectarte rápidamente. Recuerda que tu token de acceso es personal e intransferible.

php

				
					
 1,
    "tipo_comprobante" => 11,  // Factura C
    "concepto" => 1,
    "doc_tipo" => 80,
    "doc_nro" => 20002307554,  // CUIT de prueba válido
    "cuit_emisor" => 20002307554, // Colocar el Cuit Emisor

    "condicion_iva_receptor" => 5,
    "fecha_comprobante" => date('Ymd'),
    "importe_total" => 2420,
    "importe_gravado" => 2420,
    "importe_iva" => 0,
    "generar_pdf" => true,
    "items" => [
        [
            "codigo" => "001",
            "descripcion" => "Producto A",
            "cantidad" => 2,
            "precio_unitario" => 1000,
            "importeItem" => 2000,
            "Alic" => 21,
            "UnidadMedida" => "unidades"
        ],
        [
            "codigo" => "002",
            "descripcion" => "Producto B",
            "cantidad" => 1,
            "precio_unitario" => 420,
            "importeItem" => 420,
            "Alic" => 21,
            "UnidadMedida" => "unidades"
        ]
    ]
];

curl_setopt_array($curl, array(
    CURLOPT_URL => "https:///api.viasrv.com/api/factura",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_HTTPHEADER => array(
        "Authorization: Bearer tutoken",
        "Idempotency-Key: " . uniqid(),
        "Content-Type: application/json"
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

echo "HTTP Code: " . $httpCode . "\n\n";
if ($err) {
    echo "cURL Error #:" . $err . "\n";
} else {
    echo "Respuesta:\n" . $response . "\n";
}

?>

				
			

JavaScript (Fetch API)

				
const token = 'tutoken';
const url = 'https://api.viasrv.com/api/factura'; 

const data = {
    punto_venta: 1,
    tipo_comprobante: 11,  // Factura C
    concepto: 1,
    doc_tipo: 80,
    doc_nro: 20002307554,  // CUIT de prueba válido
    cuit_emisor: 20002307554,
    condicion_iva_receptor: 5,
    fecha_comprobante: new Date().toISOString().slice(0,10).replace(/-/g,""), // YYYYMMDD
    importe_total: 2420,
    importe_gravado: 2420,
    importe_iva: 0,
    generar_pdf: true,
    items: [
        {
            codigo: "001",
            descripcion: "Producto A",
            cantidad: 2,
            precio_unitario: 1000,
            importeItem: 2000,
            Alic: 21,
            UnidadMedida: "unidades"
        },
        {
            codigo: "002",
            descripcion: "Producto B",
            cantidad: 1,
            precio_unitario: 420,
            importeItem: 420,
            Alic: 21,
            UnidadMedida: "unidades"
        }
    ]
};

fetch(url, {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${token}`,
        'Idempotency-Key': 'id_' + Math.random().toString(36).substr(2, 9),
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
})
.then(response => response.json().then(json => ({ status: response.status, body: json })))
.then(res => {
    console.log("HTTP Code:", res.status);
    console.log("Respuesta:", res.body);
})
.catch(err => console.error("Error:", err));
				
			

Python

				
import requests
import datetime
import uuid

url = "https://api.viasrv.com/api/factura" 
token = "tutoken"

data = {
    "punto_venta": 1,
    "tipo_comprobante": 11,  # Factura C
    "concepto": 1,
    "doc_tipo": 80,
    "doc_nro": 20002307554,  # CUIT de prueba válido
    "cuit_emisor": 20002307554,
    "condicion_iva_receptor": 5,
    "fecha_comprobante": datetime.datetime.now().strftime("%Y%m%d"),
    "importe_total": 2420,
    "importe_gravado": 2420,
    "importe_iva": 0,
    "generar_pdf": True,
    "items": [
        {
            "codigo": "001",
            "descripcion": "Producto A",
            "cantidad": 2,
            "precio_unitario": 1000,
            "importeItem": 2000,
            "Alic": 21,
            "UnidadMedida": "unidades"
        },
        {
            "codigo": "002",
            "descripcion": "Producto B",
            "cantidad": 1,
            "precio_unitario": 420,
            "importeItem": 420,
            "Alic": 21,
            "UnidadMedida": "unidades"
        }
    ]
}

headers = {
    "Authorization": f"Bearer {token}",
    "Idempotency-Key": str(uuid.uuid4()),
    "Content-Type": "application/json"
}

try:
    response = requests.post(url, json=data, headers=headers)
    print(f"HTTP Code: {response.status_code}")
    print("Respuesta:")
    print(response.text)
except requests.exceptions.RequestException as err:
    print(f"Error en la conexión: {err}")
				
			

C# (.NET Core / HttpClient)

				
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://api.viasrv.com/api/factura"; 
        var token = "tutoken";

        var payload = new
        {
            punto_venta = 1,
            tipo_comprobante = 11, // Factura C
            concepto = 1,
            doc_tipo = 80,
            doc_nro = 20002307554, // CUIT válido
            cuit_emisor = 20002307554,
            condicion_iva_receptor = 5,
            fecha_comprobante = DateTime.Now.ToString("yyyyMMdd"),
            importe_total = 2420,
            importe_gravado = 2420,
            importe_iva = 0,
            generar_pdf = true,
            items = new[]
            {
                new { codigo = "001", descripcion = "Producto A", cantidad = 2, precio_unitario = 1000, importeItem = 2000, Alic = 21, UnidadMedida = "unidades" },
                new { codigo = "002", descripcion = "Producto B", cantidad = 1, precio_unitario = 420,  importeItem = 420,  Alic = 21, UnidadMedida = "unidades" }
            }
        };

        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
            client.DefaultRequestHeaders.Add("Idempotency-Key", Guid.NewGuid().ToString());

            var json = JsonSerializer.Serialize(payload);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            try
            {
                var response = await client.PostAsync(url, content);
                string responseBody = await response.Content.ReadAsStringAsync();

                Console.WriteLine($"HTTP Code: {(int)response.StatusCode}");
                Console.WriteLine("Respuesta:\n" + responseBody);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
            }
        }
    }
}