Skip to content

Commit

Permalink
Merge pull request #11 from eclipxe13/master
Browse files Browse the repository at this point in the history
Version 1.0.1
  • Loading branch information
eclipxe13 authored Oct 2, 2019
2 parents 0929824 + 12f1768 commit 62658de
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 24 deletions.
27 changes: 12 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ de esta manera no es necesario compartir el certificado ni la llave privada con
- Si tu PAC no lo ofrece entonces deberías solicitárselo.
- Nunca compartas tu llave privada de firmado de CFDI con nadie, ni con tu PAC.


## Instalación

Usa [composer](https://getcomposer.org/)
Expand All @@ -33,14 +32,13 @@ Usa [composer](https://getcomposer.org/)
composer require phpcfdi/xml-cancelacion
```


## Ejemplo básico de uso

### Con el objeto de ayuda

```php
<?php

declare(strict_types=1);
use PhpCfdi\XmlCancelacion\XmlCancelacionHelper;
use PhpCfdi\XmlCancelacion\Definitions\RfcRole;
use PhpCfdi\XmlCancelacion\Definitions\CancelAnswer;
Expand All @@ -62,13 +60,13 @@ $consultaRelacionados = $xmlCancelacion->signCancellationAnswer(
CancelAnswer::accept(), // aceptar la cancelación
'CVD110412TF6' // RFC del PAC (Quadrum & Finkok)
);

```

### Con un uso detallado de solicitud de cancelación

```php
<?php
declare(strict_types=1);
use PhpCfdi\XmlCancelacion\Capsules\Cancellation;
use PhpCfdi\XmlCancelacion\Signers\DOMSigner;
use PhpCfdi\XmlCancelacion\Credentials;
Expand All @@ -77,7 +75,7 @@ use PhpCfdi\XmlCancelacion\Credentials;
$credentials = new Credentials('certificado.cer.pem', 'privatekey.key.pem', '12345678a');

// datos de cancelación
$data = new Cancellation('LAN7008173R5', ['12345678-1234-1234-1234-123456789012']);
$data = new Cancellation('LAN7008173R5', ['12345678-1234-1234-1234-123456789012'], new DateTimeImmutable());

// generación del xml
$xml = (new DOMSigner())->signCapsule($data, $credentials);
Expand Down Expand Up @@ -126,7 +124,6 @@ La salida esperada es algo como lo siguiente (sin los espacios en blanco que agr
</Cancelacion>
```


## Objeto de ayuda

**`XmlCancelacionHelper`** te permite usar la librería rápidamente.
Expand Down Expand Up @@ -161,18 +158,22 @@ Para crear la solicitud de respuesta usa el método `signCancellationAnswer`.
Requiere el UUID para el cual estás estableciendo la respuesta, la respuesta (aceptación o cancelación)
y el RFC del PAC por el cual se realiza la consulta.


## Objetos de trabajo

**`CapsuleInterface`** son los objetos que contienen toda la información relacionada con los datos a firmar,
este tipo de objetos tiene la facultad de poder revisar si el RFC es el mismo usado en la firma así como
poder generar el documento XML a firmar.

**`Credentials`** Es un objeto que encapsula el trabajo con los certificados y llave privada. Internamente utiliza


**`CapsuleSigner`** genera el XML usando un `Capsule` y un `Credentials`.
**`Credentials`** Es un objeto que encapsula el trabajo con los certificados y llave privada.
Internamente utiliza [`phpcfdi/credentials`](https://github.com/phpcfdi/credentials) y la clase interna es solo
una indirección de `PhpCfdi\Credentials\Credential`. Incluso puedes crear una credencial de `phpcfd/xml-cancelacion`
a partir de un objeto directo de `phpcfdi/credentials`.

**`SignerInterface`** son los objetos que permiten firmar el documento generado por una *cápsula* y una *credencial*.
Existen dos implementaciones: `DOMSigner` (recomendada) y `XmlSecLibsSigner`. La primera no requiere de mayores
dependencias y realiza el firmado utilizando las especificaciones del SAT. La segunda utiliza *parcialmente*
[XmlSecLibs](https://github.com/phpcfdi/xml-cancelacion/blob/master/XmlSecLibs.md) y termina la información de
la firma usando un mecanismo interno.

## Observaciones

Expand All @@ -187,7 +188,6 @@ A partir de 2019-08-13 con la versión `0.4.0` se eliminó la dependencia a `ecl
librería [`phpcfdi/credentials`](https://github.com/phpcfdi/xml-cancelacion), con esta nueva dependencia se trabaja
mucho mejor con los certificados y llaves privadas.


## Compatilibilidad

Esta librería se mantendrá compatible con al menos la versión con
Expand All @@ -196,19 +196,16 @@ Esta librería se mantendrá compatible con al menos la versión con
También utilizamos [Versionado Semántico 2.0.0](https://semver.org/lang/es/) 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 [CHANGELOG][].


## Copyright and License

The `phpcfdi/xml-cancelacion` library is copyright © [PhpCfdi](https://www.phpcfdi.com/)
and licensed for use under the MIT License (MIT). Please see [LICENSE][] for more information.


[contributing]: https://github.com/phpcfdi/xml-cancelacion/blob/master/CONTRIBUTING.md
[changelog]: https://github.com/phpcfdi/xml-cancelacion/blob/master/docs/CHANGELOG.md
[todo]: https://github.com/phpcfdi/xml-cancelacion/blob/master/docs/TODO.md
Expand Down
7 changes: 6 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
# CHANGELOG

# Version 1.0.1 2019-10-02

- Fix documentation to point out version 1.0 instead of 0.5.
- Fix documentation PHP examples.

# Version 1.0.0 2019-09-28

- This version is a major change, it is not compatible with previous versions
Read [UPGRADE-0.5](https://github.com/phpcfdi/xml-cancelacion/blob/master/docs/UPGRADE-0.5.md)
Read [UPGRADE-1.0](https://github.com/phpcfdi/xml-cancelacion/blob/master/docs/UPGRADE-1.0.md)
- New signed documents:
- Cancellation: For request to SAT a cancellation of one or many CFDI.
- ObtainRelated: For asking to SAT related documents of a CFDI.
Expand Down
11 changes: 5 additions & 6 deletions docs/UPGRADE-0.5.md → docs/UPGRADE-1.0.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Actualización de 0.4 a 0.5
# Actualización de 0.4 a 1.0

:us: This document is in spanish as this is the primary language of the target developers

Expand All @@ -12,7 +12,6 @@ Si estás usando el objeto de ayuda `XmlCancelacionHelper` disponible desde la v
Si estás usando `Capsule` directamente:

```text
<?php
$credentials = new Credentials('certificado.cer.pem', 'privatekey.key.pem', '12345678a');
// código de 0.4.0
Expand All @@ -24,7 +23,7 @@ Cualquiera de estas dos formas pueden ser un remplazo:

```php
<?php

declare(strict_types=1);
use PhpCfdi\XmlCancelacion\Credentials;
use PhpCfdi\XmlCancelacion\XmlCancelacionHelper;
use PhpCfdi\XmlCancelacion\Capsules\Cancellation;
Expand All @@ -47,7 +46,7 @@ $xml = $signer->signCapsule($data, $credentials);
El SAT ofrece algunos servicios a través de los PAC como una pasarela, al menos conozco tres servicios documentados:
solicitud de cancelación, solicitud de UUID relacionados y aceptación/rechazo de cancelaciones pendientes.

La solicitud de cancelación es lo único que se cubría hasta la versión `0.4.x` y en la versión `0.5.x` se han
La solicitud de cancelación es lo único que se cubría hasta la versión `0.4.x` y en la versión `1.0.x` se han
creado las firmas de las otras dos comunicaciones.

Este cambio evidenció que se necesitaba restructurar la librería para poder firmar los otros mensajes de
Expand All @@ -72,15 +71,15 @@ agregar el elemento `KeyInfo` tal como lo quiere el SAT, por lo que para esta ú
## Mejor uso de credenciales

El objeto `PhpCfdi\XmlCancelacion\Credentials` internamente utiliza un objeto `PhpCfdi\Credentials\Credential`.
En la versión `0.5` se introduce un método constructor `createWithPhpCfdiCredential()` para poder fabricar el objeto
En la versión `1.0` se introduce un método constructor `createWithPhpCfdiCredential()` para poder fabricar el objeto
`Credentials` usando un objeto `Credential` ya existente.

Esto es útil porque de esta manera el certificado y llave privada no necesitan existir en el sistema de archivos local
y se puede crear la credencial de esta librería con los datos de una credencial de PhpCfdi.

```php
<?php

declare(strict_types=1);
use PhpCfdi\Credentials\Certificate;
use PhpCfdi\Credentials\Credential as PhpCfdiCredential;
use PhpCfdi\Credentials\PrivateKey;
Expand Down
4 changes: 2 additions & 2 deletions docs/XmlSecLibs.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ implementación manual y no la incompleta/incorrecta de XmlSecLibs.
## Ejemplo de uso:

```php
<?php declare(strict_types=1);

<?php
declare(strict_types=1);
use PhpCfdi\XmlCancelacion\Signers\XmlSecLibsSigner;
use PhpCfdi\XmlCancelacion\XmlCancelacionHelper;

Expand Down

0 comments on commit 62658de

Please sign in to comment.