Download the PHP package webneex/sw-sdk-php without Composer
On this page you can find all versions of the php package webneex/sw-sdk-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download webneex/sw-sdk-php
More information about webneex/sw-sdk-php
Files in webneex/sw-sdk-php
Package sw-sdk-php
Short Description PHP Library for SW Services
License MIT
Homepage https://github.com/lunasoft/sw-sdk-php
Informations about the package sw-sdk-php
A continuación encontrara la documentación necesaria para consumir nuestro SDK de servicios proveido por SmarterWeb para Timbrado de CFDI 3.3 y CFDI 4.0 mediante un servicio API REST
Estado Actual
Compatibilidad
- CFDI 3.3
- CFDI 4.0
- PHP 5.6 ó en su versión PHP 7
Dependencias
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
- Paso 1: Dirigirnos a la siguiente pagina web https://getcomposer.org/
- 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
-
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
- Paso 2 Dentro de tu carpeta de tu proyecto abrir CMD o PowerShell y escribir lo siguiente:
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
Se puede hacer uso de las clases mediante la implementacion manual haciendo uso del archivo SWSDK.php en lugar del archivo vendor.php
Implementación
La librería cuenta con dos servicios principales los que son la Autenticacion y el Timbrado de CFDI (XML).
Nueva funcionalidad para el 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.
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
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el Token
Timbrar CFDI V1
StampV1 Recibe el contenido de un XML ya emitido (sellado) en formato String, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD), en caso contrario lanza una excepción.
Timbrar XML en formato string utilizando usuario y contraseña
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el TFD
Timbrar XML en formato string utilizando token
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el TFD
Nueva funcionalidad para el 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".
Timbrar CFDI V2
StampV2 Recibe el contenido de un XML ya emitido (sellado) en formato String, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD),asi como el comprobante ya timbrado en formato string (CFDI), en caso contrario lanza una excepción.
Timbrar XML en formato string utilizando usuario y contraseña
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el TFD
Timbrar XML en formato string utilizando token
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el TFD y el CFDI
Timbrar XML en formato base64 utilizando token/credenciales
Si se desea, se puede usar la version 2 en la modalidad base64, esto quiere decir que se puede enviar el xml previamente sellado en formato base64, y la libreria le respondera la misma estructura de respuesta que se usa en v2 normal con el tfd, y cfdi en base64 tambien.
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el TFD y el CFDI en base64
Timbrar CFDI V3
StampV3 Recibe el contenido de un XML ya emitido (sellado) en formato String, posteriormente si la factura y el token son correctos devuelve el comprobante ya timbrado en formato string (CFDI), en caso contrario lanza una excepción.
Timbrar XML en formato string utilizando usuario y contraseña
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el CFDI
Timbrar XML en formato string utilizando token
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el CFDI
Timbrar XML Issue V4 CustomId issueV4CustomIdPdfV1 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD), en caso contrario lanza una excepción.
issueV4CustomIdPdfV2 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD), asi como el comprobante ya timbrado en formato string (CFDI) en caso contrario lanza una excepción.
issueV4CustomIdPdfV3 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String, posteriormente si la factura y el token son correctos devuelve el comprobante ya timbrado en formato string (CFDI), en caso contrario lanza una excepción.
issueV4CustomIdPdfV4 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String, posteriormente regresara todos los datos del timbrado , en caso contrario lanza una excepción.
Timbrar XML Issue V4 CustomId issueV4CustomIdEmailV1 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD), en caso contrario lanza una excepción.
issueV4CustomIdEmailV2 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String , se manda un parametro email en formato String o un Array de hasta maximo 5 correos electronicos, Se genera un pdf por default con este metodo, posteriormente si la factura y el token son correctos devuelve el complemento timbre en un string (TFD),asi como el comprobante ya timbrado en formato string ( CFDI**) en caso contrario lanza una excepción.
issueV4CustomIdEmailV3 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String , se manda un parametro email en formato String o un Array de hasta maximo 5 correos electronicos, Se genera un pdf por default con este metodo, posteriormente si la factura y el token son correctos devuelve el comprobante ya timbrado en formato string (CFDI), en caso contrario lanza una excepción.
issueV4CustomIdEmailV4 Recibe el contenido de un XML sin sellar en formato String se pasa un parametro customId en formato String, , se manda un parametro email en formato String o un Array de hasta maximo 5 correos electronicos, Se genera un pdf por default con este metodo, posteriormente regresara todos los datos del timbrado , en caso contrario lanza una excepción.
Timbrar XML en formato base64 utilizando token/credenciales
Si se desea, se puede usar la version 3 en la modalidad base64, esto quiere decir que se puede enviar el xml previamente
sellado en formato base64, y la libreria le respondera la misma estructura de respuesta que se usa en v3 normal con el
cfdi en base64 tambien.
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el CFDI en base64
Timbrar CFDI V4
StampV4 Recibe el contenido de un XML ya emitido (sellado) en formato String, posteriormente si la factura y el token son correctos devuelve el comprobante ya timbrado en formato string (CFDI), asi como otros campos por ejemplo: cadenaOriginalSAT, noCertificadoSAT, noCertificadoCFDI, uuid, etc , en caso contrario lanza una excepción.
Timbrar XML en formato string utilizando usuario y contraseña
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el CFDI
Timbrar XML en formato string utilizando token
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el CFDI
Timbrar XML en formato base64 utilizando token/credenciales
Si se desea, se puede usar la version 4 en la modalidad base64, esto quiere decir que se puede enviar el xml previamente
sellado en formato base64, y la libreria le respondera la misma estructura de respuesta que se usa en v4 normal con el
cfdi en base64 tambien.
El ejemplo anterior la respuesta es un objeto tipo JSON y dentro de el se encuentra el CFDI en base64
Emisión Timbrado
Emisión Timbrado Recibe el contenido de un XML en formato String, posteriormente si la factura y el token son correctos, genera el sellado, y devuelve el comprobante ya timbrado en formato string (CFDI), en caso contrario lanza una excepción.
Emisión timbrado V1
Está versión de timbrado regresa únicamente el TFD.
Ejemplo de uso
Emisión timbrado V2
Está versión de timbrado regresa TFD y el CFDI.
Ejemplo de uso
Emisión timbrado V3
Está versión de timbrado regresa únicamente el CFDI.
Ejemplo de uso
Emisión timbrado V4
Está versión de timbrado regresa CFDI, CadenaOriginalSAT, noCertificadoSat, noCertificadoCFDI, UUID, selloSAT, selloCFDI, fechaTimbrado y QRCode.
Ejemplo de uso
Emisión Timbrado JSON
Emisión Timbrado JSON Recibe el contenido de un JSON en formato String, posteriormente si el JSON y el token son correctos, genera el armado y sellado del XML, posteriormente devuelve el comprobante ya timbrado en formato string (CFDI), en caso contrario mostrará error al ser enviado a timbrar.
Emisión timbrado JSON V1
Está versión de timbrado regresa únicamente el TFD.
Ejemplo de uso
Emisión timbrado JSON V2
Está versión de timbrado regresa el TFD y CFDI.
Ejemplo de uso
Emisión timbrado JSON V3
Está versión de timbrado regresa únicamente el CFDI.
Ejemplo de uso
Emisión timbrado JSON V4
Está versión de timbrado regresa CFDI, CadenaOriginalSAT, noCertificadoSat, noCertificadoCFDI, UUID, selloSAT, selloCFDI, fechaTimbrado y QRCode.
Ejemplo de uso
Cancelación CFDI 3.3
Cancelación por CSD
Se deben incluir los siguientes datos:
- Certificado (.cer)
- Key (.key)
- Password del archivo key
- RFC emisor
- UUID
- Motivo
- Folio Sustitución
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea, se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la cancelación y por supuesto el token de acceso anteriormente generado.
Cabe mencionar que los archivos .cer y .key, al ser binarios, deberán enviarse en formato base64 para que podamos procesarlos en nuestro servidor.
Cancelación por XML
Como su nombre lo indica, este servicio recibe únicamente el XML sellado con los UUID a cancelar.
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea, se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la cancelación, que únicamente es el XML y el token obtenido previamente.
Cancelación por PFX
Se deben incluir los siguientes datos:
- Pfx
- Password del archivo key
- RFC emisor
- UUID
- Motivo
- Folio Sustitución
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea, se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la cancelación y el token obtenido previamente.
Cancelación por UUID
Se deben incluir los siguientes datos:
- RFC emisor
- UUID
- Motivo
- Folio Sustitución
Paso 1: Obtener token de acceso, o en su defecto usar token infinito
Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea, se puede usar el token infinito.
Paso 2: Enviar datos necesarios
Se envían los datos necesarios para la cancelación y el token obtenido previamente.
Respuestas de cancelación
Todos los response de cancelación retornan la misma estructura en caso de error o en caso de petición satisfactoria, las cuales son las siguientes:
Tipos de respuesta
En caso de una respuesta exitosa, se regresará un 200. En caso de una respuesta no exitosa, se regresará un código diferente de 200, el código puede variar dependiendo del problema dado.
Respuesta exitosa
En este caso se recibe un mensaje JSON, el cual contiene los siguientes datos:
- Acuse: Xml de acuse que regresa el SAT cuando se cancela un CFDI.
- UUID: uuid cancelado y el estatus de el. (Para más información, consulte la lista de códigos de respuesta de UUID aquí)
Respuesta no exitosa
Códigos de respuesta de folios de cancelación
Código | Mensaje | Descripcion | ||||
---|---|---|---|---|---|---|
201 | Se considera una solicitud de cancelación exitosa, sin embargo esto no asegura su cancelación. | |||||
202 | Folio Fiscal Previamente cancelado | Se considera solicitud de cancelación previamente enviada. Estatus Cancelado ante el SAT. | ||||
203 | Folio Fiscal No corresponde al emisor. | |||||
204 | Folio Fiscal No Aplicable a Cancelación. | |||||
205 | Folio Fiscal No Aplicable a Cancelación. | El sat da una prorroga de 48 hrs para que el comprobante aparezca con estatus Vigente posterior al envió por parte del Proveedor de Certificación de CFDI. Puede que algunos comprobantes no aparezcan al | 204 | Folio Fiscal No Aplicable a Cancelación. | momento, es necesario esperar por lo menos 48 hrs. | |
206 | UUID no corresponde a un CFDI del Sector Primario. | |||||
207 | No se especificó el motivo de cancelación o el motivo no es valido. | |||||
208 | Folio Sustitución invalido. | |||||
209 | Folio Sustitución no requerido. | |||||
210 | La fecha de solicitud de cancelación es mayor a la fecha de declaración. | |||||
211 | La fecha de solicitud de cancelación límite para factura global. | |||||
212 | Relación no valida o inexistente. | |||||
300 | Usuario No Válido. | |||||
301 | XML Mal Formado. | Este código de error se regresa cuando el request posee información invalida, ejemplo: un RFC de receptor no válido. | ||||
302 | XML Mal Formado. | |||||
304 | Certificado Revocado o Caduco. | El certificado puede ser inválido por múltiples razones como son el tipo, la vigencia, etc. | ||||
305 | Certificado Inválido. | El certificado puede ser inválido por múltiples razones como son el tipo, la vigencia, etc. | ||||
309 | Certificado Inválido. | El certificado puede ser inválido por múltiples razones como son el tipo, la vigencia, etc. | ||||
310 | CSD Inválido. |
Consultar Saldo CFDI 3.3
Este servicio recibe el token y genera los elementos que componen la consulta de saldos:
- ID saldo cliente
- ID cliente usuario
- Saldo timbres
- Timbres utilizados
- Fecha de expiracion
- Ilimitado
- Timbres asignados
Paso 1: Obtener token de acceso, o en su defecto usar token infinito. Primeramente se deberá autenticar en nuestros servicios en orden de obtener token de acceso, o si se desea, se puede usar el token infinito.
Paso 2: Enviar token de acceso. Se envía el token para realizar la consulta de saldo.
Respuestas de consulta de saldo
El response de consulta de saldo retorna la siguiente estructura en caso de error o en caso de petición satisfactoria:
Tipos de respuesta En caso de una respuesta exitosa, se regresará un 200. En caso de una respuesta no exitosa, se regresará un código > diferente de 200, el código puede variar dependiendo del problema dado.
Respuesta exitosa
En este caso se recibe un mensaje JSON, el cual contiene los siguientes datos:
- idSaldoCliente: Id del registro.
- idClienteUsuario: Id del usuario.
- saldoTimbres: saldo de los timbres.
- timbresUtilizados: timbres utilizados.
- fechaExpiracion: fecha de expiración.
- unlimited: En caso de que sea verdadero la forma de validar el saldo depende del numero de timbres que tenga el distribuidor. En caso de verdadero le descontará los timbres al distribuidor.
- timbresAsignados: timbres asignados.
Respuesta no exitosa
Consulta Status 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
Consulta de Solicitudes pendientes de Aceptar/Rechazar
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.
Ejemplo de uso
Aceptar/Rechazar 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 con CSD
Está modalidad recibe como parámetros el RFC del Receptor, Certificado y llave privada [En base64], contraseña de Llave privada y una lista de UUID con su respectiva respuesta.
Ejemplo de uso
Aceptar/Rechazar con PFX
Está modalidad recibe como parámetros el RFC del Receptor, PFX [En base64], contraseña de Llave privada y una lista de UUID con su respectiva respuesta.
Ejemplo de uso
Aceptar/Rechazar con XML
Está modalidad recibe como parámetros el XML de Aceptación/Rechazo, dentro del cual ya vienen especificados los UUID y su correspondiente respuesta.
XML a envíar
Ejemplo de uso
Aceptar/Rechazar con UUID
Está modalidad recibe como parámetros el RFC del Receptor, el UUID, así como su acción a tomar. Es importante decir que los certificados correspondientes al RFC deben estar en el administrador de timbres.
Ejemplo de uso
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 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
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
Documentos relacionados con XML
Está modalidad recibe como parámetro el XML para consulta de documentos relacionados.
XML a enviar
Ejemplo de uso
Documentos relacionados con UUID
Está modalidad recibe como parámetros el RFC del Receptor y el UUID a consultar.
Ejemplo de uso
Servicio 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:
Plantilla con datos adicionales
Regenerar PDF
El servicio podrá generar o regenerar un PDF de un CFDI previamente timbrado y podrá guardar o remplazar el archivo PDF para ser visualizado posteriormente desde el portal ADT.
La función recibe los siguientes parámetros:
- Folio fiscal del comprobante(uuid)
- Extras (datos adicionales a los contenidos en el xml)
Ejemplo de uso
Con datos adicionales
Servicio Reenvío
Servicio de reenvio de email, recibe el uuid del comprobante previamente timbrado y el/los correos a los que se les hará el reenvío.
Crear una instancia
-
Usuario y contraseña:
- Token:
Reenvío Email
-
Un correo:
- Multiples correos (Max 5):
All versions of sw-sdk-php with dependencies
ext-curl Version *