定制 phpcfdi/sat-ws-descarga-masiva-cli 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phpcfdi/sat-ws-descarga-masiva-cli

Composer 安装命令:

composer require phpcfdi/sat-ws-descarga-masiva-cli

包简介

Consumo del web service de descarga masiva del SAT por línea de comandos

README 文档

README

Source Code Packagist PHP Version Support Discord Latest Version Software License Build Status Reliability Maintainability Code Coverage Violations Total Downloads Docker Downloads

Consumo del web service de descarga masiva del SAT por línea de comandos

🇺🇸 The documentation of this project is in spanish as this is the natural language for intented audience.

🇲🇽 La documentación del proyecto está en español porque ese es el lenguaje principal de los usuarios. También te esperamos en el canal #phpcfdi de discord

Esta librería contiene un cliente (consumidor) del servicio del SAT de Servicio Web de Descarga Masiva de CFDI y Retenciones.

Requerimientos

Esta herramienta usa PHP versión 8.2 o superior con las extensiones xml, openssl, zip, curl, intl y bcmath.

Instalación

Ejecutable

Puedes descargar el archivo PHAR desde la dirección https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/releases/latest/download/descarga-masiva.phar.

wget https://github.com/phpcfdi/sat-ws-descarga-masiva-cli/releases/latest/download/descarga-masiva.phar -O descarga-masiva.phar
php descarga-masiva.phar --version

Phive

Pendiente.

Docker

docker pull phpcfdi/descarga-masiva
docker run --rm -it phpcfdi/descarga-masiva --version

Composer

Puedes instalar el proyecto en una carpeta especial y usar la herramienta o como dependencia de tu proyecto. Personalmente, no recomiendo instalarla como una dependencia de algún proyecto, dado que se trata de una herramienta y no de un componente o libería.

# instalar la herramienta
composer require phpcfdi/sat-ws-descarga-masiva-cli
# ejecutar el script
php vendor/bin/descarga-masiva.php --version

Suponiendo que la herramienta se instaló en ~/projects/sat-ws-descarga-masiva-cli, entonces podrías poner después un script de ejecución como el siguiente en /usr/local/bin/descarga-masiva o en ~/.local/bin/descarga-masiva:

!#/usr/bin/env bash -e
php ~/projects/sat-ws-descarga-masiva-cli/vendor/bin/descarga-masiva.php "${@}"

Instalación desde el repositorio Git

Puedes decargar el proyecto de github y ejecutar el archivo bin/descarga-masiva.php. Esta opción la recomiendo aún menos, dado que no es fácil mantener la herramienta desde Git.

# descargar el proyecto
git clone https://github.com/phpcfdi/sat-ws-descarga-masiva-cli /opt/descarga-masiva
# instalar dependencias
composer --working-dir=/opt/descarga-masiva update --no-dev
# ejecución del proyecto
php /opt/descarga-masiva/bin/descarga-masiva.php --version

Ejemplos de uso

Para entender plenamente el uso del servicio web y los códigos de respuesta consulta la documentación de la librería phpcfdi/sat-ws-descarga-masiva.

La aplicación cuenta con dos tipos de comandos: ws para trabajar con el servicio y zip para trabajar con los paquetes.

Para obtener la lista de comandos disponibles usa el comando list.

Para obtener ayuda de la aplicación o cualquier comando agrega el parámetro --help.

Comando ws:consulta

El comando ws:consulta presenta una consulta con los parámetros establecidos.

El siguiente comando presenta una consulta de CFDI de metadata de comprobantes emitidos en el periodo 2023-01-01 00:00:00 al 2023-12-31 23:59:59 con los datos de la FIEL del RFC EKU9003173C9.

php bin/descarga-masiva ws:consulta \
    --certificado fiel/EKU9003173C9.cer --llave fiel/EKU9003173C9.key --password=12345679a \
    --desde "2023-01-01 00:00:00" --hasta "2023-12-31 23:59:59"

Con lo que puede entregar el siguiente resultado:

Consulta: 
  Servicio: cfdi
  Paquete: Metadata
  RFC: EKU9003173C9
  Desde: 2024-01-01T00:00:00.000UTC
  Hasta: 2024-12-31T23:59:59.000UTC
  Tipo: Emitidos
  RFC de/para: (cualquiera)
  Documentos: (cualquiera)
  Complemento: (cualquiera)
  Estado: (cualquiera)
  Tercero: (cualquiera)
Resultado: 
  Consulta: 5000 - Solicitud Aceptada
  Identificador de solicitud: ba31f7fa-3713-4395-8e1f-39a79f02f5cc

Los parámetros --efirma, --certificado, --llave, --password, --token son de autenticación y se documentan más adelante.

Adicionalmente, se pueden especificar los siguientes parámetros:

  • --servicio: Si se consultarán los CFDI regulares (cfdi) o CFDI de Retención e información de pagos (retenciones). Por omisión: cfdi.
  • --tipo: Si se consultarán los comprobantes emitidos (emitidos) o recibidos (recibidos). Por omisión: emitidos.
  • --paquete: Si se solicita un paquete de Metadatos (metadata) o de XML (xml). Por omisión: metadata.

Y los siguientes filtros, que son opcionales:

  • --estado: Filtra por el estado se encuentra el comprobante: Vigentes vigentes o canceladas canceladas.
  • --rfc: Filtra la información por RFC, si se solicitan emitidos entonces es el RFC receptor, si se solicitan recibidos entonces es el RFC emisor.
  • --documento: Filtra por el tipo de documento: Ingreso (ingreso), egreso (egreso), traslado (traslado), pago (pago) o nómina (nomina).
  • --complemento: Filtra por el tipo de complemento, ver el comando info:complementos.
  • --tercero: Filtra por el RFC a cuenta de terceros.

También se pueden hacer consultas por UUID con el paámetro --uuid. En caso de usar el filtro de UUID entonces no se toman en cuenta los parámetros --desde, --hasta o cualquiera de los filtros antes mencionados.

En la respuesta, entrega el resultado de la operación y el identificador de la solicitud, que puede ser usado después en el comando ws:verifica.

Comando ws:verifica

El comando ws:verifica verifica una consulta previamente presentada con los parámetros establecidos.

El siguiente comando verifica una consulta de CFDI con el identificador ba31f7fa-3713-4395-8e1f-39a79f02f5cc.

php bin/descarga-masiva ws:verifica \
    --certificado fiel/EKU9003173C9.cer --llave fiel/EKU9003173C9.key --password=12345679a \
    ba31f7fa-3713-4395-8e1f-39a79f02f5cc

En la respuesta, entrega el resultado de la operación y el identificador de uno o más paquetes para descarga, que pueden ser usados después en el comando ws:descarga.

Verificación: 
  RFC: EKU9003173C9
  Identificador de la solicitud: ba31f7fa-3713-4395-8e1f-39a79f02f5cc
Resultado: 
  Verificación: 5000 - Solicitud Aceptada
  Estado de la solicitud: 3 - Terminada
  Estado de la descarga: 5000 - Solicitud recibida con éxito
  Número de CFDI: 572
  Paquetes: BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01

Los parámetros --efirma, --certificado, --llave, --password, --token son de autenticación y se documentan más adelante.

Adicionalmente, se pueden especificar los siguientes parámetros:

  • --servicio: Si se verificará la consulta en el servicio web de CFDI regulares (cfdi) o de CFDI de Retención e información de pagos (retenciones). Por omisión: cfdi.

Comando ws:descarga

El comando ws:descarga descarga un paquete de una consulta previamente verificada.

El siguiente comando descarga un paquete de CFDI con el identificador BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01 en el directorio de destino storage/paquetes.

php bin/descarga-masiva ws:descarga \
    --certificado fiel/EKU9003173C9.cer --llave fiel/EKU9003173C9.key --password=12345679a \
    --destino storage/paquetes BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01

En la respuesta, entrega el resultado de la operación y el identificador de uno o más paquetes para descarga, que pueden ser usados después en el comando ws:descarga.

Descarga:
  RFC: DIM8701081LA
  Identificador del paquete: BA31F7FA-3713-4395-8E1F-39A79F02F5CC_01
  Destino: storage/paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip
Resultado:
  Descarga: 5000 - Solicitud Aceptada
  Tamaño: 216126

Los parámetros --efirma, --certificado, --llave, --password, --token son de autenticación y se documentan más adelante.

Adicionalmente, se pueden especificar los siguientes parámetros:

  • --servicio: Si se descargará el paquete en el servicio web de CFDI regulares (cfdi) o de CFDI de Retención e información de pagos (retenciones). Por omisión: cfdi.
  • --destino: Si se establece, determina en qué carpeta se descargará el paquete, en caso de no usarse se utiliza el directorio actual.

Parámetros de autenticación

Los parámetros --efirma, --certificado, --llave, --password y --token son de autenticación y se utilizan en los comandos ws:consulta, ws:descarga y ws:verifica.

  • --efirma: Ruta absoluta o relativa al archivo de especificación de eFirma.
  • --certificado: Ruta absoluta o relativa al archivo de certificado.
  • --llave: Ruta absoluta o relativa al archivo de llave privada.
  • --password: Contraseña de la llave privada, si no se especifica entonces usa el valor de la variable de entorno EFIRMA_PASSPHRASE.
  • --token: Ruta absoluta o relativa a un archivo Token (que genera esta aplicación).

Es recomendado establecer la ruta del token, es en donde se almacena la autenticación con el servicio web del SAT y se intenta reutilizar para no realizar más peticiones de autenticación de las necesarias.

Archivos de eFirma

Para no tener que especificar los parámetros --certificado, --llave, --password y --token, se puede especificar el parámetro --efirma que espera la ubicación a un archivo JSON con la siguiente estructura:

  • certificateFile: Ruta absoluta o relativa al archivo de certificado CER.
  • privateKeyFile: Ruta absoluta o relativa al archivo de llave privada KEY.
  • passPhrase: Contraseña de la llave privada.
  • tokenFile: Ruta absoluta o relativa a un archivo Token (que genera esta aplicación).

Comando info:complementos

El comando info:complementos muestra la información de los complementos registrados para usarse en una consulta.

Adicionalmente, se pueden especificar los siguientes parámetros:

  • --servicio: Si se mostrarán los complementos del servicio web de CFDI regulares (cfdi) o de CFDI de Retención e información de pagos (retenciones). Por omisión: cfdi.

Comando zip:metadata

El comando zip:metadata lee un paquete de metadatos desde paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip y exporta su información a un archivo de Excel en archivos/listado.xlsx.

php bin/descarga-masiva zip:metadata paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip archivos/listado.xlsx

Comando zip:xml

El comando zip:xml lee un paquete de XML y exporta los comprobantes a un directorio, el nombre de cada comprobante es el UUID con la extensión .xml.

El siguiente comando lee un paquete de XML desde paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip y exporta todos los archivos de comprobantes en el directorio archivos/xml/.

php bin/descarga-masiva zip:metadata paquetes/ba31f7fa-3713-4395-8e1f-39a79f02f5cc_01.zip archivos/xml/

Compatibilidad

Esta librería se mantendrá compatible con al menos la versión con soporte activo de PHP más reciente.

También utilizamos Versionado Semántico 2.0.0 por lo que puedes usar esta librería sin temor a romper tu aplicación.

Contribuciones

Las contribuciones con bienvenidas. Por favor lee CONTRIBUTING para más detalles y recuerda revisar el archivo de tareas pendientes TODO y el archivo CHANGELOG.

Copyright and License

The phpcfdi/sat-ws-descarga-masiva-cli project is copyright © PhpCfdi and licensed for use under the MIT License (MIT). Please see LICENSE for more information.

phpcfdi/sat-ws-descarga-masiva-cli 适用场景与选型建议

phpcfdi/sat-ws-descarga-masiva-cli 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 131 次下载、GitHub Stars 达 11, 最近一次更新时间为 2024 年 10 月 18 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「webservice」 「download」 「sat」 「cfdi」 「descarga」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 phpcfdi/sat-ws-descarga-masiva-cli 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 phpcfdi/sat-ws-descarga-masiva-cli 我们能提供哪些服务?
定制开发 / 二次开发

基于 phpcfdi/sat-ws-descarga-masiva-cli 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 131
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 17
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 11
  • Watchers: 3
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-10-18