@@ -19,16 +19,15 @@ También te esperamos en el [canal #phpcfdi de discord](https://discord.gg/aFGYX
19
19
Esta librería contiene un cliente (consumidor) del servicio del SAT de
20
20
** Servicio Web de Descarga Masiva de CFDI y Retenciones** .
21
21
22
+ ## Instalación
22
23
23
- ## Installation
24
+ Utiliza [ composer ] ( https://getcomposer.org/ ) , instala de la siguiente forma:
24
25
25
- Use [ composer] ( https://getcomposer.org/ ) , please run
26
26
``` shell
27
27
composer require phpcfdi/sat-ws-descarga-masiva
28
28
```
29
29
30
-
31
- ## Basic usage
30
+ ## Ejemplo básico de uso
32
31
33
32
``` php
34
33
<?php
@@ -41,16 +40,24 @@ use PhpCfdi\SatWsDescargaMasiva\Shared\DateTimePeriod;
41
40
use PhpCfdi\SatWsDescargaMasiva\Shared\DownloadType;
42
41
use PhpCfdi\SatWsDescargaMasiva\Shared\Fiel;
43
42
use PhpCfdi\SatWsDescargaMasiva\Shared\RequestType;
44
- use PhpCfdi\SatWsDescargaMasiva\WebClient\WebClientInterface ;
43
+ use PhpCfdi\SatWsDescargaMasiva\WebClient\GuzzleWebClient ;
45
44
46
- // Creación de la fiel
45
+ // Creación de la fiel, puede leer archivos DER (como los envía el SAT) o PEM (convertidos)
47
46
$fiel = Fiel::create(
48
- file_get_contents('llaveprivada.key.pem '), // en formato PEM
49
- file_get_contents('certificado.cer '), // en formato PEM o DER
47
+ file_get_contents('certificado.cer '),
48
+ file_get_contents('llaveprivada.key '),
50
49
'12345678a'
51
50
);
52
51
53
- /** @var WebClientInterface $webClient */
52
+ // verificar que la fiel sea válida (no sea CSD y sea vigente acorde a la fecha del sistema)
53
+ if (! $fiel->isValid()) {
54
+ return;
55
+ }
56
+
57
+ // creación del web client basado en Guzzle que implementa WebClientInterface
58
+ // para usarlo necesitas instalar guzzlehttp/guzzle pues no es una dependencia directa
59
+ $webClient = new GuzzleWebClient();
60
+
54
61
// Creación del servicio
55
62
$service = new Service($fiel, $webClient);
56
63
@@ -83,36 +90,31 @@ $metadataReader = new MetadataPackageReader($zipfile);
83
90
foreach ($metadataReader->metadata() as $metadata) {
84
91
echo $metadata->uuid, PHP_EOL;
85
92
}
86
-
87
93
```
88
94
89
-
90
95
### Acerca de la interfaz ` WebClientInterface `
91
96
92
97
Para hacer esta librería compatible con diferentes formas de comunicación se utiliza una interfaz de cliente HTTP.
93
- Tu * debes* crear tu implementación para poderla utilizar, si así lo prefieres, podrías usar la clase
94
- [ ` GuzzleWebClient ` ] ( https://github.com/phpcfdi/sat-ws-descarga-masiva/blob/master/tests/WebClient/GuzzleWebClient.php )
95
-
96
- En este momento no se provee esta implementación por defecto, es posible que en un futuro se incluya por default
97
- una clase que utilice [ PSR-18 - HTTP Client] ( https://www.php-fig.org/psr/psr-18/ ) .
98
-
98
+ Tu * puedes* crear tu implementación para poderla utilizar.
99
+
100
+ Si lo prefieres -como en el ejemplo de uso- podrías instalar Guzzle ` composer require guzzlehttp/guzzle ` y usar la clase
101
+ [ ` GuzzleWebClient ` ] ( https://github.com/phpcfdi/sat-ws-descarga-masiva/blob/master/src/WebClient/GuzzleWebClient.php ) .
99
102
100
103
### Recomendación de fábrica del servicio
101
104
102
105
Te recomendamos configurar el framework de tu aplicación (Dependency Injection Container) o crear una clase que
103
106
fabrique los objetos ` Service ` , ` Fiel ` y ` WebClient ` usando tus propias configuraciones de certificado, llave privada
104
107
y contraseña.
105
108
106
-
107
109
## Acerca del Servicio Web de Descarga Masiva de CFDI y Retenciones
108
110
109
111
El servicio se compone de 4 partes:
110
112
111
113
1 . Autenticación: Esto se hace con tu fiel y la libería oculta la lógica de obtener y usar el Token.
112
- 2 . Solicitud: Presentar una solicitud incluyendo la fecha de inicio, fecha de fin, tipo de solicitud emitidas/recibidas
113
- y tipo de información solicitada (cfdi o metadata)
114
- 3 . Verificación: pregunta al SAT si ya tiene disponible la solicitud
115
- 4 . Descargar la solicitud.
114
+ 2 . Solicitud: Presentar una solicitud incluyendo la fecha de inicio, fecha de fin, tipo de solicitud
115
+ emitidas/recibidas y tipo de información solicitada (cfdi o metadata).
116
+ 3 . Verificación: pregunta al SAT si ya tiene disponible la solicitud.
117
+ 4 . Descargar los paquetes emitidos por la solicitud.
116
118
117
119
La mejor manera de entenderlo es la siguiente, imagina que el servicio del SAT se compone de tres ventanillas con tres
118
120
personas diferentes atendiendo cada una de estas ventanillas.
@@ -148,22 +150,19 @@ Notas importantes del web service:
148
150
- Podrás recuperar hasta 200 mil registros por petición y hasta un millón en metadata.
149
151
- No existe limitante en cuanto al número de solicitudes siempre que no se descargue en más de una ocasión un XML.
150
152
151
-
152
153
## Compatilibilidad
153
154
154
155
Esta librería se mantendrá compatible con al menos la versión con
155
- [ soporte activo de PHP] ( http ://php.net/supported-versions.php) más reciente.
156
+ [ soporte activo de PHP] ( https ://www. php.net/supported-versions.php) más reciente.
156
157
157
158
También utilizamos [ Versionado Semántico 2.0.0] ( https://semver.org/lang/es/ )
158
159
por lo que puedes usar esta librería sin temor a romper tu aplicación.
159
160
160
-
161
161
## Contribuciones
162
162
163
163
Las contribuciones con bienvenidas. Por favor lee [ CONTRIBUTING] [ ] para más detalles
164
164
y recuerda revisar el archivo de tareas pendientes [ TODO] [ ] y el [ CHANGELOG] [ ] .
165
165
166
-
167
166
## Copyright and License
168
167
169
168
The ` phpcfdi/sat-ws-descarga-masiva ` library is copyright © [ PhpCfdi] ( https://www.phpcfdi.com )
@@ -183,7 +182,7 @@ and licensed for use under the MIT License (MIT). Please see [LICENSE][] for mor
183
182
[ coverage ] : https://scrutinizer-ci.com/g/phpcfdi/sat-ws-descarga-masiva/code-structure/master/code-coverage/src/
184
183
[ downloads ] : https://packagist.org/packages/phpcfdi/sat-ws-descarga-masiva
185
184
186
- [ badge-source ] : http ://img.shields.io/badge/source-phpcfdi/sat--ws--descarga--masiva-blue?style=flat-square
185
+ [ badge-source ] : https ://img.shields.io/badge/source-phpcfdi/sat--ws--descarga--masiva-blue?style=flat-square
187
186
[ badge-discord ] : https://img.shields.io/discord/459860554090283019?logo=discord&style=flat-square
188
187
[ badge-release ] : https://img.shields.io/github/release/phpcfdi/sat-ws-descarga-masiva?style=flat-square
189
188
[ badge-license ] : https://img.shields.io/github/license/phpcfdi/sat-ws-descarga-masiva?style=flat-square
0 commit comments