Cliente Python Web Service del SAT para la descarga masiva de xml
Project description
python-cfdiclient
Cliente Python Web Service del SAT para la descarga masiva de xml
Consulta y recuperación de comprobantes (Nuevo)
https://www.sat.gob.mx/consultas/42968/consulta-y-recuperacion-de-comprobantes-(nuevo)
Instalacion
En Windows requiere Microsoft Visual C++ Compiler for Python 2.7
pip install cfdiclient
Ejemplo
Autenticacion
from cfdiclient import Autenticacion from cfdiclient import Fiel FIEL_KEY = 'Claveprivada_FIEL_XAXX010101000_20180918_134149.key' FIEL_CER = 'XAXX010101000.cer' FIEL_PAS = 'contrasena' cer_der = open(FIEL_CER, 'rb').read() key_der = open(FIEL_KEY, 'rb').read() fiel = Fiel(cer_der, key_der, FIEL_PAS) auth = Autenticacion(fiel) token = auth.obtener_token() print(token)
Solicita Descarga
import datetime from cfdiclient import SolicitaDescarga from cfdiclient import Fiel FIEL_KEY = 'Claveprivada_FIEL_XAXX010101000_20180918_134149.key' FIEL_CER = 'XAXX010101000.cer' FIEL_PAS = 'contrasena' cer_der = open(FIEL_CER, 'rb').read() key_der = open(FIEL_KEY, 'rb').read() fiel = Fiel(cer_der, key_der, FIEL_PAS) descarga = SolicitaDescarga(fiel) token = 'eyJh' rfc_solicitante = 'XAXX010101000' fecha_inicial = datetime.datetime(2018, 1, 1) fecha_final = datetime.datetime(2018, 12, 31) rfc_emisor = 'XAXX010101000' rfc_receptor = 'XAXX010101000' # Emitidos result = descarga.solicitar_descarga(token, rfc_solicitante, fecha_inicial, fecha_final, rfc_emisor=rfc_emisor) print(result) # Recibidos result = descarga.solicitar_descarga(token, rfc_solicitante, fecha_inicial, fecha_final, rfc_receptor=rfc_receptor) print(result) # {'mensaje': 'Solicitud Aceptada', 'cod_estatus': '5000', 'id_solicitud': 'be2a3e76-684f-416a-afdf-0f9378c346be'}
Verifica Solicitud Descarga
from cfdiclient import VerificaSolicitudDescarga from cfdiclient import Fiel FIEL_KEY = 'Claveprivada_FIEL_XAXX010101000_20180918_134149.key' FIEL_CER = 'XAXX010101000.cer' FIEL_PAS = 'contrasena' cer_der = open(FIEL_CER, 'rb').read() key_der = open(FIEL_KEY, 'rb').read() fiel = Fiel(cer_der, key_der, FIEL_PAS) v_descarga = VerificaSolicitudDescarga(fiel) token = 'eyJhbGci' rfc_solicitante = 'XAXX010101000' id_solicitud = '6331caae-c253-406f-9332-126f89cc474a' result = v_descarga.verificar_descarga(token, rfc_solicitante, id_solicitud) print(result) # {'estado_solicitud': '3', 'numero_cfdis': '8', 'cod_estatus': '5000', 'paquetes': ['a4897f62-a279-4f52-bc35-03bde4081627_01'], 'codigo_estado_solicitud': '5000', 'mensaje': 'Solicitud Aceptada'}
Descargar Paquetes
from cfdiclient import DescargaMasiva from cfdiclient import Fiel FIEL_KEY = 'Claveprivada_FIEL_XAXX010101000_20180918_134149.key' FIEL_CER = 'XAXX010101000.cer' FIEL_PAS = 'contrasena' cer_der = open(FIEL_CER, 'rb').read() key_der = open(FIEL_KEY, 'rb').read() fiel = Fiel(cer_der, key_der, FIEL_PAS) descarga = DescargaMasiva(fiel) token = 'eyJhbG' rfc_solicitante = 'XAXX010101000' id_paquete = '2d8bbdf1-c36d-4b51-a57c-c1744acdd89c_01' result = descarga.descargar_paquete(token, rfc_solicitante, id_paquete) print(result) # {'cod_estatus': '', 'mensaje': '', 'paquete_b64': 'eyJhbG=='}
Valida estado de documento
from cfdiclient import Validacion validacion = Validacion() rfc_emisor = 'XAXX010101000' rfc_receptor = 'XAXX010101000' total = '1000.41' uuid = '0XXX0X00-000-0XX0-XX0X-000X0X0XXX00' estado = validacion.obtener_estado(rfc_emisor, rfc_receptor, total, uuid) print(estado) # {'codigo_estatus': 'S - Comprobante obtenido satisfactoriamente.', 'es_cancelable': 'Cancelable con aceptación', 'estado': 'Vigente'}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size cfdiclient-1.2.0-py2-none-any.whl (24.0 kB) | File type Wheel | Python version py2 | Upload date | Hashes View |
Filename, size cfdiclient-1.2.0.tar.gz (6.3 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for cfdiclient-1.2.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a7122de8f87595ba6cb36f505adbe750db4c78190eb0a49a12d34e9579676e1 |
|
MD5 | 531c449a2bf0cd1e03e04c429a3c58b3 |
|
BLAKE2-256 | f5d63b90afe0b9b49538cb71c9c86a61472bf648f16ae092c1d4ffa6da948aaf |