csfacturacion/descarga-ciec-php

用于通过CIEC与CSFacturacion的批量下载服务交互的简单API


README

用于通过CIEC与CSFacturacion的批量下载服务交互的简单API

关于

用于通过CIEC与CSFacturacion的批量下载服务交互的PHP SDK。该SDK易于使用,因为它仅提供两个简单的接口用于下载和查询结果。

安装

使用Composer将此包作为依赖项安装。

composer require csfacturacion/descarga-ciec-php

使用方法

下载

下载非常简单,您可以使用DescargaCiecApi接口进行操作。

<?php
use Csfacturacion\Descarga\DescargaCiec;
use Csfacturacion\Descarga\Model\Credenciales;
use Csfacturacion\Descarga\Model\ParametersBuilder;

// credenciales de contratacion CSFacturacion
$descargaCiec = new DescargaCiec(new Credenciales('BBB010101BBB', 'FOO_BAR'));

// construir parametros de consulta con ParamsBuilder

$params = (new ParametersBuilder())
            ->accesoSat(new Credenciales('AAA010101AAA', 'CIEC'))
            ->tipoDoc(DocTypeFilter::CFDI) // CFDI convencional
            ->caso(CaseFilter::RECIBIDAS) // Emitidos
            ->fechaInicio(new DateTimeImmutable('first day of January 2024')) // mes de enero
            ->fechaFin(new DateTimeImmutable('last day of January 2024'))
            ->status(StatusFilter::CANCELADO) // solo los cancelados
            ->build();

// query contiene todou lo necesario para consultar el estatus y resultados
$query = $descargaCiec->makeQuery($params);

预查询

您可以对先前执行的查询结果进行处理,为此

use Csfacturacion\Descarga\DescargaCiec;
use Csfacturacion\Descarga\Model\Credenciales;
use Csfacturacion\Descarga\Model\ParametersBuilder;
use Csfacturacion\Descarga\Model\Uuid;

// credenciales de contratacion CSFacturacion
$descargaCiec = new DescargaCiec(new Credenciales('BBB010101BBB', 'FOO_BAR'));
$query = $descargaCiec->search(new Uuid('a87c1d56-52f3-4680-a5cb-ddddb5786964'))

通过票据(UUID)查询

您可以通过发票的票据号下载XML或元数据。

use Csfacturacion\Descarga\DescargaCiec;
use Csfacturacion\Descarga\Model\Credenciales;
use Csfacturacion\Descarga\Model\ParametersBuilder;
use Csfacturacion\Descarga\Model\Uuid;

// credenciales de contratacion CSFacturacion
$descargaCiec = new DescargaCiec(new Credenciales('BBB010101BBB', 'FOO_BAR'));
$query = $descargaCiec->byFolios([new Uuid('a87c1d56-52f3-4680-a5cb-ddddb5786964')])

获取结果

要获取现有请求的结果,请使用QueryRetrieverApi接口。

查询进度

<?php

use Csfacturacion\Descarga\QueryRetrieverApi;

/**@var QueryRetrieverApi $query */
while (!$query->isFinished()) {
    // do something
    send_status($query->getProgress()->getStatus(), $channel);
    // estatus
    $query->getProgress()->getStatus();
    // encontrados al momento
    $query->getProgress()->getFound();
}

查询摘要

以下操作只能在查询完成后执行

<?php

use Csfacturacion\Descarga\QueryRetrieverApi;

/**@var QueryRetrieverApi $query */
$s = $query->getSummary();
// cancelados encontrados
$s->getCancelados();
// total encontrados
$s->getTotal();
// total de páginas para consulta mediante paginacion
$s->getPages();
// ¿Hubo XML que no pudieron ser descargados?
$s->hasMissingXml();
// resultados mediante paginación

下载结果

<?php

use Csfacturacion\Descarga\QueryRetrieverApi;
use Csfacturacion\Descarga\Model\Uuid;

/**@var QueryRetrieverApi $query */

// Descargar todos los XML en un ZIP
$query->asZip(__DIR__ . '/storage/cfdi/foo.zip');

// tambien, puede especificar un callback a la descarga del ZIP
$query->asZip(__DIR__ . '/storage/cfdi/foo.zip', function (int $totalBytes, int $currentBytes, array $extra){
    show_progress($totalBytes, $currentBytes);
});

// Mediante Páginacion JSON

if ($query->hasResults()) {
    $p = $query->getSummary()->getPages();
    for($i = 1; $i <= $p; $i++) {
        $cfdiList[] = $query->getResults($i);
    }
    // hacer algo con los CFDI Meta
}


$toSearch = new Uuid('1ad7605f-4ea6-4a48-b180-baa022220a83');

// Consultar CFDI Individual
$cfdi = $query->getCfdi($toSearch);
// XML Individual
$xml = $query->getXml($toSearch);

贡献

欢迎贡献!要贡献力量,请熟悉CONTRIBUTING.md

协调披露

确保用户信息的安全和保密是我们的首要任务,我们欢迎外部安全研究人员的贡献。如果您认为您在此存储库维护的软件中发现了安全问题,请阅读SECURITY.md以获取提交漏洞报告的说明。

版权和许可

csfacturacion/descarga-ciec-php版权所有© CSFacturacion,许可协议为MIT许可(MIT)。有关更多信息,请参阅LICENSE