PyAfipWs: Interface de Servicios Web de la AFIP para Windows


Interfaz para Emisión y almacenamiento electrónico de comprobantes originales AFIP - Argentina. Por Automatización COM (EXE/DLL) simil OCX / ActiveX (Windows) y por línea de comando - archivos de texto (DOS). RG 1956/05, 1361/02, 1345/02, 2265/07, 2289/07, 2485/08, 2557/09, 2668/09 y 2758/10

Índice

logo-pyafipws.png


Introducción

PyAfipWs es una interface de software libre a los Servicios Web de la AFIP, desarrollado en Python compatible con Visual Basic, ASP, Fox Pro, Cobol, Delphi, Genexus, PowerBuilder, PHP, .Net, Java, etc. y cualquier lenguaje/aplicación que pueda crear objetos  COM (automatización) en Windows o mediante archivos de texto simil SIAP/RECE. Funciona tanto para web services de autenticación, factura electrónica, bienes de capital - bono fiscal electrónico y facturas de exportación (proximamente código de trazabilidad de granos, remito electrónico, seguros de caución).

La interfase ha sido basada en los ejemplos de la AFIP y ha sido probada con éxito por varias empresas.

Actualmente implementa Factura Electrónica (emisión electrónica de comprobantes originales) según RG 1956/05, 1345/02, 2265/07, 2289/07 y 2557/09 (BonosFiscales - Bienes de Capital) y Facturas Electrónicas de Exportación (según RG 2758/10). Proximamente incluirá para Pólizas de Seguro de Caución (según RG 2668/09).

Licencia

El código fuente puede ser descargado y utilizado sin cargo (gratis) respentando la licencia  GPLv3 de software libre: sin garantías, sin soporte técnico dedicado y/o obligatorio, informar copyright, no incorporarlo ni distribuirlo junto con software propietario, mantener derivados como software libre y contribuir modificaciones, etc.

Se ofrece instalación y soporte técnico comercial pago, incluyendo atención prioritaria y autorización especial para incorporar y distribuir esta interfaz a sistemas propietarios que no sean software libre.

A su vez, al ser software libre de código abierto, permite proteger su inversión, al no depender de un componente cerrado del cual no puede tener acceso al código fuente, revisar su funcionamiento, realizar futuras actualizaciones, etc.

Por consultas sobre el lenguaje python y demás, dirigirse a  PyAr. Para más información ver FacturaElectronica.

Nuevas Funcionalidades

Nuevo: Nuevo servicio web WSFEX: Factura Electrónica Exportación (RG2758). Ver FacturaElectronicaExportacion para más información

Nuevo: Nuevo servicio web WSBFE: Bonos Fiscales Electrónicos - Bienes de Capital (RG2557). Ver BonosFiscales para más información

Nuevo: Tambien se incluye una interfase por archivo de texto (similar al SIAP/RECE pero online y más simplificada), para lenguajes que no soporten Objetos COM, como algunas versiones de Cobol y Fox Pro (ver el Manual de Uso para mayor información).

Nuevo: PyRece, un aplicativo ad-hoc para autorizar, generar pdf y enviar por correo electrónico facturas electrónicas. Ver Más

Consultar por desarrollos especiales, interfaces web, etc.

Características

  • Interfaz COM directa (online) de simple uso: autenticación y obtención de CAE en 10 líneas!
  • No usa archivos temporales ni formatos especiales
  • No usa servidores intermedios (conexión directa con WS de AFIP)
  • No requiere programas residentes o batch (por lotes)
  • No es necesario tener conocimientos de encriptación ni protocolos web
  • Autoinstalable 2.5MB (Todo en uno)
  • Sin dependencias ni librerias o runtimes externas (Php, .Net o Java)
  • Sin licencia de uso ni límites por cada usuario final
  • Código abierto: archivos fuentes publicados, revisados y modificables (Software Libre)
  • Sin problemas de instalación de OCX ni ActiveX (ver comparativa)
  • No requiere formularios visuales ni referencias a DLL

Funcionamiento

La interface maneja automáticamente la generación de documentos xml, firmas digitales criptográficas y servicios web (SOAP), por lo que no se requiere el manejo de dichos temas por parte de la aplicación.

La interfase del Web Service de Autenticación y Autorización (WSAA) permite:

  • Creación de Ticket de Requerimiento de Acceso (TRA)
  • Firma del ticket y creación del mensaje firmado criptográficamente (CMS)
  • Ejecución del método remoto de autenticación y obtención del Ticket de Acceso (TA)

La interfase del Web Service de Facturación Electrónica (WSFE) permite:

  • Ejecución del método remoto Dummy() para obtención del estado de servidores (uso opcional)
  • Ejecución del método remoto UltNro() para recuperar el último número de transacción (ID)
  • Ejecución del método remoto Aut() devuelve el Código de Autorización Electrónico o de Emisión (CAE)
  • Ejecución del método remoto RecuperaLastCMP() para obtención del último número de comprobante autorizado (uso opcional)
  • Ejecución del método remoto RecuperaQty() para recuperar la cantidad máxima de registros de detalle (uso opcional)

La interfase del Web Service de Bono Fiscal Electrónico (WSBFE) (ver Bonos Fiscales RG2557 Bienes de Capital) permite:

  • Ejecución del método remoto Dummy() para obtención del estado de servidores (uso opcional)
  • Ejecución del método remoto CrearFactura() para crear una factura de bono fiscal electrónico
  • Ejecución del método remoto AgregarItem() para agregar un artículo a una factura de bono fiscal electrónico
  • Ejecución del método remoto Authorize() devuelve el Código de Autorización Electrónico o de Emisión (CAE)

Ejemplo en Visual Basic (VB 5/6)

' Crear objeto interface Web Service Autenticación y Autorización
Set WSAA = CreateObject("WSAA") 

tra = WSAA.CreateTRA() ' Generar un Ticket de Requerimiento de Acceso (TRA)
cms = WSAA.SignTRA(tra, "ghf.crt", "ghf.key") ' Generar el mensaje firmado (CMS) 

' Llamar al web service para autenticar
ta = WSAA.CallWSAA(cms, "https://wsaahomo.afip.gov.ar/ws/services/LoginCms") 
    
' Crear objeto interface Web Service de Factura Electrónica
Set WSFE = CreateObject("WSFE") 
WSFE.Token = WSAA.Token ' Setear tocken y sing de autorización (pasos previos)
WSFE.Sign = WSAA.Sign    
WSFE.Cuit = "3000000000" ' CUIT del emisor

' Conectar al Servicio Web de Facturación
ok = WSFE.Conectar("https://wswhomo.afip.gov.ar/wsfe/service.asmx") 
    
' Llamo al WebService de Autorización para obtener el CAE
cae = WSFE.Aut(id, presta_serv, tipo_doc, nro_doc, tipo_cbte, punto_vta, cbt_desde, cbt_hasta, imp_total, 
        imp_tot_conc, imp_neto, impto_liq, impto_liq_rni, imp_op_ex, fecha_cbte, fecha_venc_pago) 

Ejemplo en Visual Fox Pro 5 (VFP5)

*-- Crear objeto interface Web Service Autenticación y Autorización
WSAA = CREATEOBJECT("WSAA") 
*-- Generar un Ticket de Requerimiento de Acceso (TRA)
tra = WSAA.CreateTRA() 
*-- Generar el mensaje firmado (CMS) 
cms = WSAA.SignTRA(tra, "ghf.crt", "ghf.key") 
*-- Llamar al web service para autenticar
ta = WSAA.CallWSAA(cms, url_webservice)     

*-- Crear objeto interface Web Service de Factura Electrónica
WSFE = CREATEOBJECT("WSFE") 
*-- Setear tocken y sing de autorización (pasos previos) Y CUIT del emisor
WSFE.Token = WSAA.Token 
WSFE.Sign = WSAA.Sign    
WSFE.Cuit = "3000000000"
*-- Conectar al Servicio Web de Facturación
ok = WSFE.Conectar(url_webservice)     
*-- Llamo al WebService de Autorización para obtener el CAE
cae = WSFE.Aut(id, presta_serv, tipo_doc, nro_doc, tipo_cbte, punto_vta, cbt_desde, cbt_hasta, imp_total, ;
               imp_tot_conc, imp_neto, impto_liq, impto_liq_rni, imp_op_ex, fecha_cbte, fecha_venc_pago) 

Certificados

Para poder utilizar la interfase se deben tramitar y asociar los certificados de homologación/producción en la AFIP. Para mas información ver  Página principal de Factura Electrónica (AFIP)

Pasos para crear el certificado (más información en  Instructivo AFIP):

  • Bajar e instalar  OpenSSL para windows (en caso de inconvenientes, instalar  Redistribuible de Visual C++)
  • Bajar el archivo afip-openssl.cnf y guardarlo en C:\OpenSSL\bin\ (modalidad previa, ver de pasar argumentos por línea de comandos)
  • Ingresar por línea de comando al directorio de OpenSSL C:\OpenSSL\bin>
  • Generar la clave privada:
    openssl genrsa -out empresa.key 1024
    
  • Generar el pedido (CSR: certificate signing request) por línea de comando:
    openssl req -new -key empresa.key -out empresa.csr -config afip-openssl.cnf
    
    • Country Name (2 letter code) [AR]: AR
    • Organization Name (por ej., empresa) [EMPRESA SA]: ingresar nombre de la empresa tal cual figura en la consulta de inscripción, ej.: Empresa S A
    • Common Name (por ej., su nombre) []: ingresar el nombre del servicio, aplicación u unidad operativa, ej: Sistema Facturas
    • Ingrese: CUIT XXXXXXXXXXX (XXXXXXXXXXX es la CUIT sin guiones) ingresar CUIT xxxxxxxxxxx
  • Enviar el empresa.csr a la AFIP para que lo firmen y devuelvan el certificado empresa.crt. Para asociar el certificado de homologación, enviarlo por email a la AFIP (webservices@afip...). Para producción, enviarlo  por clave fiscal, y descargar el certificado CRT.
  • Con esta interfase no es necesario convertir el certificado en formato pkcs12 ni importarlo al repositorio de Windows

En caso de inconvenientes, los servidores de la AFIP responderán con un mensaje que identifica el problema:

  • ns1:coe.notAuthorized Computador no autorizado a acceder los servicios de AFIP: el certificado no es válido o no está correctamente asociado al ambiente en el cual se intenta usar (ej. certificado de homologación usado en producción). Revisar el proceso de generación y asociación del certificado.
  • ns1:cms.cert.expired Certificado expirado: los certificados poseen una fecha de vencimiento que varía según el ambiente para el cual fueron creados y la fecha de emisión. Generar y asociar nuevamente el certificado.

Descargas

Código Fuente

Costos y Condiciones

  • Instalador para demostración sin cargo completamente funcional (para homologación)
  • Código fuente licenciado bajo GPLv3 (distribución sin cargo para proyectos de software libre, ver Licencia)
  • Costo del soporte técnico comercial básico: (por única vez por empresa desarrolladora de software)
    • WSAA (autenticación y autorización): $375.- (hasta 5 hs en total) requerido para todos los web services
    • WSFE (factura electrónica "nacional" -común/original-): $750.- (hasta 10 hs en total)
    • WSBFE (factura electrónica bienes de capital): $750.- (hasta 10 hs en total)
    • WSSEG (factura electrónica seguros de caución): $750.- (hasta 10 hs en total)
    • WSFEX (factura electrónica exportación): $1125.- (hasta 15 hs en total)
  • Precios especiales para clientes que ya hayan adquirido soporte para webservices anteriores (por tiempo limitado).
  • Paquetes promocionales adquiriendo soporte para varios webservices:
    • WSAA + WSFE: $1125 (15hs) básico -factura electrónica común "nacional"-
    • WSAA + WSFEX: $1500 (20hs) -solo factura electrónica exportación-
    • WSAA + WSFE + WSBFE o WSSEG: $1500 (20hs)
    • WSAA + WSFE + WSFEX: $1875 (25hs)
    • WSAA + WSFE + WSBFE/WSSEG + WSFEX: $2250 (30hs)
  • Forma de pago: transferencia, depósito bancario (CBU) o  DineroMail (paquete de 5 horas de soporte técnico comercial)
  • Forma de entrega: Se envía el instalador para producción por email y Factura C por correo
  • Consultar por facilidades de pago, soporte técnico comercial avanzado, desarrollos a medida o ajustes especiales.

El Soporte Técnico Comercial básico incluye:

  • Garantia (limitada): 3 meses de consultas sobre instalación, capacitación, ajustes menores y corrección de errores (vía email a partir de fecha de factura)
  • Acceso a instalador para producción (sin límite de usuarios/emisores ni archivos de licencias o activación)
  • Autorización (licencia) para incorporar y distribuir la interfaz con software propietario
  • Acceso a actualizaciones futuras (revisiones menores y ajustes generales) de la interfase.
  • Soporte para interfaz COM (aplicaciones Windows) y por archivo de textos (línea de comandos).

Los precios están sujetos a modificaciones y pueden variar sin previo aviso.

Capacitación

Novedades

Contacto

Para mayor información, consultar por mail a  facturaelectronica@sistemasagiles.com.ar o telefónicamente al 011-4450-0716 / 15-3048-9211

Para soporte de la comunidad, revisar la  lista de temas y/o  crear uno nuevo

Esta interfase también se ofrece por TrabajoFreelance.com, ver  Comentarios

PyAfipWs Copyright 2008, 2009, 2010 por MarianoReingart