PHPackages                             dev-venalis/sw-sdk-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. dev-venalis/sw-sdk-php

ActiveLibrary

dev-venalis/sw-sdk-php
======================

PHP Library for SW Services

058↓100%XSLT

Since Mar 13Pushed 1y agoCompare

[ Source](https://github.com/dev-venalis/sw-sdk-php)[ Packagist](https://packagist.org/packages/dev-venalis/sw-sdk-php)[ RSS](/packages/dev-venalis-sw-sdk-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

SDK php
=======

[](#sdk-php)

 [![](https://camo.githubusercontent.com/506f62e5d230ac25baad8edbafb58cb3f63ec2b28180b34460c93e72f0c302bb/68747470733a2f2f7777772e7068702e6e65742f2f696d616765732f6c6f676f732f6e65772d7068702d6c6f676f2e737667)](https://camo.githubusercontent.com/506f62e5d230ac25baad8edbafb58cb3f63ec2b28180b34460c93e72f0c302bb/68747470733a2f2f7777772e7068702e6e65742f2f696d616765732f6c6f676f732f6e65772d7068702d6c6f676f2e737667)

A continuación encontraras una librería php para el timbrado de **CFDI 4.0** mediante el consumo de los servicios de **SW sapien®**.

Contenido
---------

[](#contenido)

- [Compatibilidad](#Compatibilidad)
- [Dependencias](#Dependencias)
- [Documentación](#Documentaci%C3%B3n)
- [Instalación](#Instalaci%C3%B3n)
- [Implementación](#Implementaci%C3%B3n)

---

### Compatibilidad

[](#compatibilidad)

- CFDI 4.0
- PHP 5.6 ó en su versión PHP 7

---

### Dependencias

[](#dependencias)

- [PHPUnit](https://phpunit.de/) Para las pruebas Unitarias
- [Composer](https://getcomposer.org/) Para descargar nuestro SDK

---

### Documentación

[](#documentación)

- [Inicio Rápido](https://developers.sw.com.mx/knowledge-base/conoce-el-proceso-de-integracion-en-solo-7-pasos/)
- [Documentacion Oficial Servicios](https://developers.sw.com.mx)

---

### Instalación

[](#instalación)

Para poder hacer uso de nuestro SDK para consumir el servio **REST** que **SmarterWeb** le provee primero es necesario tener instalado una version de PHP ya sea la **5.6** o la version **7** y posteriormente instalar manejador de paquetes de PHP **Composer**

#### Instalar Composer

[](#instalar-composer)

- Paso 1: Dirigirnos a la siguiente pagina web
- Paso 2: Dar click en **Download**
- Paso 3: Dar clic en **Composer-Setup.exe** esto abrira una ventana en su explorador para que guarde el archivo composer
- Paso 4: Ejecutar el archivo descargado **Composer-Setup.exe** y seguir los pasos de instalacion

#### Preparar nuestro ambiente de Desarrollo

[](#preparar-nuestro-ambiente-de-desarrollo)

- Paso 1: Necesitaremos crear un archivo llamador **composer.json** y dentro de el ingresaremos la libreria de la cual queremos hacer uso en nuestro ejemplo es **lunasoft/sw-sdk-php**

```
{
    "name": "martinflores/implement",
    "authors": [
        {
            "name": "Martin Flores",
            "email": "martin.flores@sw.com.mx"
        }
    ],
    "require": {
        "lunasoft/sw-sdk-php": "dev-master"
    }
}
```

- Paso 2 Dentro de tu carpeta de tu proyecto abrir **CMD** o **PowerShell** y escribir lo siguiente:

```
composer install

```

De esta manera descarga las dependencias que antes escribimos dentro del require que en nuestro caso es el **SDK**

#### En caso de no usar composer

[](#en-caso-de-no-usar-composer)

Se puede hacer uso de las clases mediante la implementacion manual haciendo uso del archivo SWSDK.php en lugar del archivo vendor.php

```
	include('SWSDK.php');
```

---

### Implementación

[](#implementación)

La librería cuenta con dos servicios principales los que son la Autenticacion y el Timbrado de CFDI (XML).

#### Soporte con servidores Proxy

[](#soporte-con-servidores-proxy)

Si tu posees un servidor proxy en tu empresa y deseas que la libreria lo use, debes pasar un parametro extra llamado "proxy" con el host y puerto de tu servidor proxy.

```
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "proxy"=> "server.domain.com:8888"
    );
```

Autenticación
-------------

[](#autenticación)

Autenticación El servicio de Autenticación es utilizado principalmente para obtener el **token** el cual sera utilizado para poder timbrar nuestro CFDI (xml) ya emitido (sellado), para poder utilizar este servicio es necesario que cuente con un **usuario** y **contraseña** para posteriormente obtenga el token, usted puede utilizar los que estan en este ejemplo para el ambiente de **Pruebas**.

**Obtener Token**

```
"https://services.test.sw.com.mx",
        "urlApi" => "https://api.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );
    $data = array(
            'name' => "Nombre Usuario",
            'taxId' => "RFC",
            'email' => "correo_cuenta@gmail.com",
            'stamps' => 1,
            'isUnlimited' => false,
            'password' => "SWpass1!",
            'notificationEmail' => "correo_notificaciones@gmail.com",
            'phone' => "1234567890"
        );
    $accountUser = AccountUserService::Set($params);
    $resultUser = $accountUser::CreateUser($data);
    var_dump($resultUser);
```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

📌 ***NOTA:*** La contraseña debe cumplir con las siguientes politicas:

- La contraseña no debe ser igual que el nombre de usuario.
- La contraseña debe incluir al menos una letra mayúscula.
- La contraseña debe incluir al menos una letra minúscula
- La contraseña debe incluir al menos un número.
- La contraseña debe incluir al menos un símbolo (carácter especial).
- La contraseña no debe incluir espacios en blanco.
- La contraseña debe tener entre 10 y 20 caracteres.
- La contraseña no debe incluir símbolos especiales fuera de lo común.
- Los caracteres especiales aceptados son los siguientes: !@#$%^&amp;\*()\_+=\[{\]};:&lt;&gt;|./?,-\]

Consultar Usuario(s)
 Método mediante el cual se puede consultar un usuario o usuarios indicando ciertos parámetros de busqueda.

Este método recibe los siguientes parámetros:

- Url Servicios SW y/o Url Api SW.
- Usuario y contraseña ó token.
- Un array con los datos necesario para la busqueda (opcional).

**Ejemplo de consumo de la librería parala consulta de un usuario mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AccountUser\AccountUserService as AccountUserService;

    $data = array(
            'taxId' => null,
            'email' => null,
            'name' => "UsuarioBusqueda",
            'idUser' => "09c3d000-0000-0000-0000-000000000000",
            'isActive' => true,
            // 'Page' => "1",
            // 'PerPage' => "10"
        );
    $accountUser = AccountUserService::Set($params);
    $resultUser = $accountUser::GetUser($data);
    var_dump($resultUser);
```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

📌 ***NOTA:*** Puedes enviar todos los parámetros, solo los que necesites o ninguno, en caso de no enviar parámetros, por default se retornarán únicamente los primeros 10 de la página 1.

Modificar Usuario
 Método mediante el cual se puede modificar un usuario existente.

Este método recibe los siguientes parámetros:

- Url Servicios SW y/o Url Api SW.
- Usuario y contraseña ó token.
- Id del usuario a modificar.
- Un array con los datos necesario para modificar el usuario.

> \[!NOTE\]
> Puedes asignarles “null” a las propiedades que no vayas a actualizar.

Los datos enviados en el data son los siguientes:

DatoDescripciónidUserId del usuario a actualizarnameNuevo nombre del usuariotaxIdNuevo RFC del usuarionotificationEmailNuevo correo para recibir notificacionesisUnlimitedEspecificar si tendra timbres ilimitadosphoneNúmero del telefono del usuario**Ejemplo de consumo de la librería para modificar un usuario mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AccountUser\AccountUserService as AccountUserService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "urlApi" => "https://api.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );
    $data = array(
            'name' => "Usuario",
            'taxId' => "RFC",
            'isUnlimited' => false,
            'iduser' => "09c3d000-0000-0000-0000-000000000000",
            'notificationEmail' => "usuario@gmail.com",
            'phone' => "1234567890"
        );
    $idUser ="09c3d000-0000-0000-0000-000000000000";
    $accountUser = AccountUserService::Set($params);
    $resultUser = $accountUser::UpdateUser($idUser, $data);
    var_dump($resultUser);
```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

Eliminar Usuario
 Método mediante el cual se puede eliminar un usuario existente.

Este método recibe los siguientes parámetros:

- Url Servicios SW y/o Url Api SW.
- Usuario y contraseña ó token.
- Id del usuario a eliminar.

> \[!IMPORTANT\]
> Los nombres de las variables en la respuesta han cambiado.

**Ejemplo de consumo de la librería para eliminar un usuario mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AccountUser\AccountUserService as AccountUserService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "urlApi" => "https://api.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );
    $idUser ="09c3d000-0000-0000-0000-000000000000";
    $accountUser = AccountUserService::Set($params);
    $resultUser = $accountUser::DeleteUser($idUser);
    var_dump($resultUser);
```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

Consulta y Asignación de Timbres
--------------------------------

[](#consulta-y-asignación-de-timbres)

Métodos para realizar la consulta de saldo así como la asignación y eliminación de timbres a un usuario.

Consulta de timbresServicio para consultar timmbres a una cuenta hija o subcuenta. Este método recibe los siguientes parametros:
- Usuario y contraseña o Token
- Url Servicios SW
- Url Api

> \[!IMPORTANT\]
> Los nombres de las variables en la respuesta han cambiado.

```

```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

Agregar timbres Servicio para agregar timmbres a una cuenta hija o subcuenta.
Este método recibe los siguientes parametros:
- Usuario y contraseña o Token
- Url Servicios SW
- Url Api
- Id del usuario
- Número de timbres
- Comentario

> \[!NOTE\] El servicio regresa unicamente la cantidad de timbres despues del abono de timbres.

```

```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

Eliminar Timbres Servicio para remover timmbres a una cuenta hija o subcuenta.
Este método recibe los siguientes parametros: - Usuario y contraseña o Token
- Url Servicios SW
- Url Api
- Id del usuario
- Número de timbres
- Comentario

> \[!NOTE\] El servicio regresa unicamente la cantidad de timbres despues de remover los timbres.

Ejemplo de uso:

```

```

Si se desea consumir el servicio mediante token, solo es necesario modificar la variable $params por:

```
    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "token"=>"tokenUsuario",
    );
```

Validación
----------

[](#validación)

Validación XML Este servicio recibe un comprobante CFDI 4.0 en formato XML mediante el cual se valida integridad, sello, errores de estructura, matriz de errores del SAT incluyendo complementos, se valida que exista en el SAT, así como el estatus en el SAT.

Este método recibe los siguientes parámetros:

- Url Servicios SW o Usuario y contraseña o token
- XML
- Opcional: Indicar si se desea consultar estatus antes el SAT

**Ejemplo de consumo de la librería para validación de XML**

```
    require_once 'SWSDK.php';
    use SWServices\Validation\ValidateXMLService as ValidateXMLService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $xml = file_get_contents('Test\Resources\cfdi40_sellado.xml');
    $validateStatus = false;

    $validateXml = ValidateXMLService::Set($params);
    $result = $validateXml::ValidaXML($xml, $validateStatus);
    var_dump($result);
```

Consulta Estatus SAT
--------------------

[](#consulta-estatus-sat)

Consulta Estatus SAT **Consulta Status SAT** Recibe los parámetros de ***URL Soap***, ***RFC Emisor***, ***RFC Receptor***, ***Total***, y ***UUID*** en formato **String**, posteriormente hace la consulta en el SOAP proporcionado sobre el estatus de la factura.

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\SatQuery\SatQueryService as SatQueryService;

    $soapUrl = "http://consultaqrfacturaelectronicatest.sw.com.mx/ConsultaCFDIService.svc";
    $re = "LAN8507268IA";
    $rr = "LAN7008173R5";
    $tt = 5800.00;
    $uuid = "6ab07bef-4446-43ea-a3fd-04a804309457";
    $sello = "zNDhfw=";
    $consultaCfdi = SatQueryService::ServicioConsultaSAT($soapUrl, $re, $rr, $tt, $uuid, $sello);
    var_dump($consultaCfdi);
```

Aceptar/Rechazar Cancelación
----------------------------

[](#aceptarrechazar-cancelación)

**Aceptar/Rechazar** es el servicio mediante el cual el receptor puede aceptar o rechazar un UUID que obtiene de su lista de pendientes. El método tiene varias maneras de ser consumido, por CSD, PFX, sólo UUID y por XML.

Aceptar / Rechazar por CSD
 Método mediante el cual el receptor podrá manifestar la aceptación o rechazo de la solicitud de cancelación mediante CSD.

Este método recibe los siguientes parámetros:

- Url Servicios SW
- Usuario y contraseña ó token
- Certificado del receptor en Base64
- Llave(key) del receptor en Base64
- RFC del emisor
- Contraseña del certificado
- Arreglo de objetos donde se especifican los UUID y acción a realizar

**Ejemplo de consumo de la librería para la aceptacion/rechazo de la solicitud por CSD mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AcceptReject\AcceptRejectService as AcceptRejectService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );
    $cerB64 = base64_encode(file_get_contents('Test\Resources\cert_pruebas\EKU9003173C9.cer'));
    $keyB64 = base64_encode(file_get_contents('Test\Resources\cert_pruebas\EKU9003173C9.key'));
    $password = "12345678a";
    $rfc = "EKU9003173C9";
    $list = [
        ['uuid' => 'dcbddeb9-a208-42be-ae5b-0390a929fe48', 'action' => 'Aceptacion']
    ];
    $acceptReject = AcceptRejectService::Set($params);
    $aceptarRechazar = $acceptReject::AceptarRechazarCancelacionCSD($rfc, $list, $cerB64, $keyB64, $password);
    var_dump($aceptarRechazar);
```

Aceptar / Rechazar por PFX
 Método mediante el cual el receptor podrá manifestar la aceptación o rechazo de la solicitud de cancelación mediante PFX.

Este método recibe los siguientes parámetros:

- Url Servicios SW
- Usuario y contraseña ó token
- Archivo Pfx en Base64
- Contraseña del certificado
- RFC del emisor
- Arreglo de objetos donde se especifican los UUID y acción a realizar

**Ejemplo de consumo de la librería para la aceptación/rechazo de la solicitud por PFX mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AcceptReject\AcceptRejectService as AcceptRejectService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $pfxB64 = base64_encode(file_get_contents('Test\Resources\cert_pruebas\EKU9003173C9.pfx'));
    $passwordPfx = "swpass";
    $rfc = "EKU9003173C9";
    $list = [
        ['uuid' => 'dcbddeb9-a208-42be-ae5b-0390a929fe48', 'action' => 'Aceptacion']
    ];

    $acceptReject = AcceptRejectService::Set($params);
    $aceptarRechazar = $acceptReject::AceptarRechazarCancelacionPFX($rfc, $list, $pfxB64, $passwordPfx);
    var_dump($aceptarRechazar);
```

Aceptar / Rechazar por XML
Método mediante el cual el receptor podrá manifestar la aceptación o rechazo de la solicitud de cancelación mediante XML.

Este método recibe los siguientes parámetros:

- Url Servicios SW
- Usuario y contraseña ó token
- XML con datos requeridos para la aceptación/rechazo de la cancelación

**Ejemplo de XML**

```

        dcbddeb9-a208-42be-ae5b-0390a929fe48
        Aceptacion

                jMSiI7taWgjRDm0zzJF2hmayhWZcEAPQRwXkDhzsXAw=

        sRpjcm/c/Prxdp7+JsatvgmwCDl7YwYXMpOdU9Oh3CCzUPyYEM0wwEzQApFnRrr4/DDuYTF/ajaQ2fL9hjhYqm21eR+1W5AWQHCLJ7Pc6BnqCIj/xIGhRoHGMZNnb9ZvT7kEt0P2clG4T5u4rGfL3p31mQaJLxKPYm/BR2zhzQuE33lyv3AnQA8LbpqDoMi/ZW2SSjRgFNhs1JUI6EQQmwLRZ7KU+LjhKDGFBgFJ9RQZgJOXSyRoTToJHLktlcvzvS45HLUJDus5g8B/4mOGy9tafPGtddrzi9BV/XbadFdAF5LXFq6ng7jX3EavBX1/B9u4SIJzEE9YD8pqqcD6Xw==

                    OID.1.2.840.113549.1.9.2=responsable: ACDMA-SAT, OID.2.5.4.45=2.5.4.45, L=COYOACAN, S=CIUDAD DE MEXICO, C=MX, PostalCode=06370, STREET=3ra cerrada de caliz, E=oscar.martinez@sat.gob.mx, OU=SAT-IES Authority, O=SERVICIO DE ADMINISTRACION TRIBUTARIA, CN=AC UAT
                    292233162870206001759766198462772978647764840758

                MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=

```

**Ejemplo de consumo de la librería para la aceptación/rechazo de la solicitud por XML mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AcceptReject\AcceptRejectService as AcceptRejectService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );
    $xml = file_get_contents('Test\Resources\acceptReject_xml.xml');

    $acceptReject = AcceptRejectService::Set($params);
    $aceptarRechazar = $acceptReject::AceptarRechazarCancelacionXML($xml);
    var_dump($aceptarRechazar);
```

Aceptar / Rechazar por UUID
Método mediante el cual el receptor podrá manifestar la aceptación o rechazo de la solicitud de cancelación mediante UUID.

Este método recibe los siguientes parámetros:

- Url Servicios SW
- Usuario y contraseña ó token
- RFC del receptor
- UUID de la factura que se requiere aceptar/rechazar
- Acción que se requiera realizar Aceptación/Rechazo

📌 ***NOTA:*** El usuario deberá tener sus certificados en el administrador de timbres para la utilización de este método.

**Ejemplo de consumo de la librería para la aceptación/rechazo de la solicitud por UUID mediante usuario y contraseña**

```
    require_once 'SWSDK.php';
    use SWServices\AcceptReject\AcceptRejectService as AcceptRejectService;

    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $rfc = "EKU9003173C9";
    $uuid = "dcbddeb9-a208-42be-ae5b-0390a929fe48";
    $action = "Rechazo";

    $acceptReject = AcceptRejectService::Set($params);
    $aceptarRechazar = $acceptReject::AceptarRechazarCancelacionUUID($rfc, $uuid, $action);
    var_dump($aceptarRechazar);
```

Consulta de Solicitudes pendientes de Aceptar/Rechazar
------------------------------------------------------

[](#consulta-de-solicitudes-pendientes-de-aceptarrechazar)

Este servicio devuelve una lista \[Array\] de UUID correspondientes a las solicitudes que tiene pendientes de aceptar o rechazar determinado RFC. Así mismo este servicio recibe solamente el RFC para consultar.

Pendientes por cancelar con RFC Está modalidad recibe como parámetro el RFC del Receptor.

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\Pendings\PendingsService as pendingsService;
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $rfc = "LAN7008173R5";
    pendingsService::Set($params);
    $consultaRelacionados = relationsService::PendientesPorCancelar($rfc);
    var_dump($consultaRelacionados);
```

Consulta documentos relacionados
--------------------------------

[](#consulta-documentos-relacionados)

Este servicio nos permite conocer las facturas que se encuentren relacionadas a un UUID. El método tiene varias maneras de ser consumido, por CSD, PFX, sólo UUID y por XML.

Documentos relacionados con UUID Está modalidad recibe como parámetros el RFC del Receptor y el UUID a consultar.

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\Relations\RelationsService as relationsService;
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $rfc = "LAN7008173R5";
    $uuid = "52c02b64-d12e-4163-b581-bf749238896d";
    relationsService::Set($params);
    $consultaRelacionados = relationsService::ConsultarCFDIRelacionadosUUID($rfc, $uuid);
    var_dump($consultaRelacionados);
```

Documentos relacionados por CSD Está modalidad recibe como parámetros el RFC del Receptor, Certificado y Llave privada \[En base64\], contraseña de Llave privada y el UUID a consultar.

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\Relations\RelationsService as relationsService;
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $cerB64 = base64_encode(file_get_contents('Test\Resources\CSD_Pruebas_CFDI_LAN7008173R5.cer'));
    $keyB64 = base64_encode(file_get_contents('Test\Resources\CSD_Pruebas_CFDI_LAN7008173R5.key'));
    $rfc = "LAN7008173R5";
    $uuid = "52c02b64-d12e-4163-b581-bf749238896d";
    relationsService::Set($params);
    $consultaRelacionados = relationsService::ConsultarCFDIRelacionadosCSD($rfc, $cerB64, $keyB64, $password, $uuid);
    var_dump($consultaRelacionados);
```

Documentos relacionados con PFX Está modalidad recibe como parámetros el RFC del Receptor, PFX \[En base64\], contraseña de Llave privada y el UUID a consultar.

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\Relations\RelationsService as relationsService;
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $pfxB64 = base64_encode(file_get_contents('Test\Resources\CSD_Pruebas_CFDI_LAN7008173R5.pfx'));
    $rfc = "LAN7008173R5";
    $uuid = "52c02b64-d12e-4163-b581-bf749238896d";
    relationsService::Set($params);
    $consultaRelacionados = relationsService::ConsultarCFDIRelacionadosPFX($rfc, $pfxB64, $password, $uuid);
    var_dump($consultaRelacionados);
```

Documentos relacionados con XML Está modalidad recibe como parámetro el XML para consulta de documentos relacionados.

XML a enviar

```

				4OL2v3i8dqK9qc4T4gbidVv0D3Q=

		br/VM4d589tNJFwoXSBxBGv8J8SDyrvun13m26+ohydrLuvNZXMDhffapexZRvIblcU8cEoD6LcWGv/PFzWb4CN2Yqc+uIllYPAVLO6e5kTPRWMQGRH6KPd8vohFEaIAYHVMkrlrHFi8FtH7b6aZHDuBexa8ZWdvSt/WXpudNK8SGtEv2yoGcyqSMxlJ/pysuvsksS/2qzpLeycoF+SLSw5VVLDM7YoW9C3k6QWxJBNo1KsYofBIE5Tk40i0BbKH5r79Xvs3Ye9Q1f0dwSXHooFjrR4s7E5ukBtpk325bHlwPmhGbk+vQrY7lKPQbo3SMJ13eFzlpfW8StNpCp8mpQ==

					OID.1.2.840.113549.1.9.2=Responsable: ACDMA, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET=&quot;Av. Hidalgo 77, Col. Guerrero&quot;, E=asisnet@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de Administración Tributaria, CN=A.C. 2 de pruebas(4096)
					286524172099382162235533054548081509963388170549

				MIIFxTCCA62gAwIBAgIUMjAwMDEwMDAwMDAzMDAwMjI4MTUwDQYJKoZIhvcNAQELBQAwggFmMSAwHgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2KTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0BCQIMElJlc3BvbnNhYmxlOiBBQ0RNQTAeFw0xNjEwMjUyMTUyMTFaFw0yMDEwMjUyMTUyMTFaMIGxMRowGAYDVQQDExFDSU5ERU1FWCBTQSBERSBDVjEaMBgGA1UEKRMRQ0lOREVNRVggU0EgREUgQ1YxGjAYBgNVBAoTEUNJTkRFTUVYIFNBIERFIENWMSUwIwYDVQQtExxMQU43MDA4MTczUjUgLyBGVUFCNzcwMTE3QlhBMR4wHAYDVQQFExUgLyBGVUFCNzcwMTE3TURGUk5OMDkxFDASBgNVBAsUC1BydWViYV9DRkRJMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgvvCiCFDFVaYX7xdVRhp/38ULWto/LKDSZy1yrXKpaqFXqERJWF78YHKf3N5GBoXgzwFPuDX+5kvY5wtYNxx/Owu2shNZqFFh6EKsysQMeP5rz6kE1gFYenaPEUP9zj+h0bL3xR5aqoTsqGF24mKBLoiaK44pXBzGzgsxZishVJVM6XbzNJVonEUNbI25DhgWAd86f2aU3BmOH2K1RZx41dtTT56UsszJls4tPFODr/caWuZEuUvLp1M3nj7Dyu88mhD2f+1fA/g7kzcU/1tcpFXF/rIy93APvkU72jwvkrnprzs+SnG81+/F16ahuGsb2EZ88dKHwqxEkwzhMyTbQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAJ/xkL8I+fpilZP+9aO8n93+20XxVomLJjeSL+Ng2ErL2GgatpLuN5JknFBkZAhxVIgMaTS23zzk1RLtRaYvH83lBH5E+M+kEjFGp14Fne1iV2Pm3vL4jeLmzHgY1Kf5HmeVrrp4PU7WQg16VpyHaJ/eonPNiEBUjcyQ1iFfkzJmnSJvDGtfQK2TiEolDJApYv0OWdm4is9Bsfi9j6lI9/T6MNZ+/LM2L/t72Vau4r7m94JDEzaO3A0wHAtQ97fjBfBiO5M8AEISAV7eZidIl3iaJJHkQbBYiiW2gikreUZKPUX0HmlnIqqQcBJhWKRu6Nqk6aZBTETLLpGrvF9OArV1JSsbdw/ZH+P88RAt5em5/gjwwtFlNHyiKG5w+UFpaZOK3gZP0su0sa6dlPeQ9EL4JlFkGqQCgSQ+NOsXqaOavgoP5VLykLwuGnwIUnuhBTVeDbzpgrg9LuF5dYp/zs+Y9ScJqe5VMAagLSYTShNtN8luV7LvxF9pgWwZdcM7lUwqJmUddCiZqdngg3vzTactMToG16gZA4CWnMgbU4E+r541+FNMpgAZNvs2CiW/eApfaaQojsZEAHDsDv4L5n3M1CC7fYjE/d61aSng1LaO6T1mh+dEfPvLzp7zyzz+UgWMhi5Cs4pcXx1eic5r7uxPoBwcCTt3YI1jKVVnV7/w=

```

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\Cancelation\CancelationService as cancelationService;
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $rfc = "LAN7008173R5";
    $uuid = "52c02b64-d12e-4163-b581-bf749238896d";
    $xml = file_get_contents('Test\Resources\fileRelations.xml');
    cancelationService::Set($params);
    $consultaRelacionados = cancelationService::ConsultarCFDIRelacionadosXML($xml);
    var_dump($consultaRelacionados);
```

Documentos relacionados con UUID Está modalidad recibe como parámetros el RFC del Receptor y el UUID a consultar.

Ejemplo de uso

```
    require_once 'SWSDK.php';
    use SWServices\Cancelation\CancelationService as cancelationService;
    $params = array(
        "url"=>"https://services.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $rfc = "LAN7008173R5";
    $uuid = "52c02b64-d12e-4163-b581-bf749238896d";
    cancelationService::Set($params);
    $consultaRelacionados = cancelationService::ConsultarCFDIRelacionadosUUID($rfc, $uuid);
    var_dump($consultaRelacionados);
```

Recuperar XML
-------------

[](#recuperar-xml)

Servicio para recuperar información de un XML timbrado con SW.

Recuperar por UUID Método para recuperar la información de un XML enviando el UUID de la factura, así como el token de la cuenta en la cual fue timbrada.

Este método recibe los siguientes parámetros:

- Url Api SW
- Url Servicios SW (Cuando se use usuario y contraseña)
- Usuario y contraseña ò token
- UUID

**Ejemplo de consumo de la libreria para la recuperación de XML**

```
    require_once 'SWSDK.php';
    use SWServices\Storage\StorageService as StorageService;

    $params = array(
        "urlApi" => "https://api.test.sw.com.mx",
        "user"=>"cuentaUsuario",
        "password"=> "contraseña"
    );

    $resend = StorageService::Set($params);
    $result = $resend::getXml("4714f6f7-ccb4-4eb5-8ba6-3a523092e2b4");
    var_dump($result);
```

Servicio PDF
------------

[](#servicio-pdf)

Generar PDF ### Generar PDF

[](#generar-pdf)

Servicio mediante el cual se genera un PDF a partir de un documento XML y una plantilla. Se puede utilizar una plantilla genérica o una personalizada más ajustada a sus necesidades.

La función recibe los siguientes parámetros:

- Datos de autenticación (url, urlapi, user, password)
- xml (es necesario que el xml esté timbrado)
- logo (en base64)
- templateId
- extras (datos adicionales a los contenidos en el xml)

Ejemplo de uso:

```
require_once 'SWSDK.php';
use SWServices\PDF\PDFService as pdfService;

    $xml = "
