Download the PHP package ecuafact/sdk without Composer

On this page you can find all versions of the php package ecuafact/sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package sdk

ecuafact/sdk (PHP)

Cliente oficial en PHP del API publico de facturacion electronica Ecuafact (contrato v1). Cubre autenticacion, idempotencia, reintentos configurables, espera del resultado, recorrido de paginas, logo del perfil y firma de webhooks. Compatible con PHP 8.2+.

Instalacion

Requisitos

Uso

La identificacion de cada ruta es el valor identificacion que devuelve GET /v1/contexto para tu contribuyente (por ejemplo 0123456789).

Multi-RUC

La vista expone emitir, listarEmitidos, iterarEmitidos, descargarRide, descargarXml, enviarCorreo, getPerfil, actualizarPerfil, actualizarLogo, esperarResultado y getConsumo.

Variables de entorno

Variable Se usa cuando Ejemplo
ECUAFACT_API_KEY No pasas apiKey (o pasas null/false) ek_live_...
ECUAFACT_BASE_URL No pasas baseAddress (o pasas null/false) https://staging-api.mynexusapi.com/

El SDK no distingue ambientes: el ambiente lo define la URL. La URL debe ser absoluta (http o https) y no debe terminar en /v1: el SDK agrega /v1 a cada ruta. Una URL invalida o una API Key con espacios al inicio o al final o con caracteres de control lanza EcuafactConfigurationException.

Importes exactos

Importes, cantidades, precios y tarifas de la solicitud aceptan float o string decimal. El string ('11.50') viaja como numero JSON literal (11.50), sin pasar por float. Un float se envia con 15 digitos significativos: 0.1 + 0.2 viaja como 0.3. Un string que no sea decimal ('1e3') lanza EcuafactSdkException antes de enviar. En las respuestas, Comprobante::$total y CatalogoItem::$tarifa se leen como float (precision de double).

Hydrator::hydrate() convierte cada valor al tipo declarado y, si no puede, lanza EcuafactSdkException (nunca un TypeError).

Idempotencia

idempotencyKey es opcional: si no se envia, el SDK la genera, la reutiliza en los reintentos y la devuelve en resultado->idempotencyKey (y en el error, como ->idempotencyKey). Formato: solo letras, digitos y - _ . : /, maximo 128 caracteres; otra clave lanza EcuafactSdkException sin llamar al API. Al reintentar, reutiliza la clave devuelta. La correlacion queda en resultado->correlationId (o ->idSeguimiento en el error).

getOperacion, consultarOperacion y esperarResultado exigen un idOperacion UUID.

Reintentos

Se reintentan solo solicitudes idempotentes (GET, o POST/PUT con Idempotency-Key) ante errores de red y los estados de retryableStatusCodes (408, 425, 500, 502, 503, 504).

Opciones

Opcion Default Descripcion
baseAddress ECUAFACT_BASE_URL URL base del despliegue, sin /v1
apiKey ECUAFACT_API_KEY Credencial X-Api-Key; no se muestra en var_dump, print_r ni trazas
identificacion null Contribuyente por defecto (opcional)
timeout 100.0 Tiempo maximo por intento, en segundos (admite fracciones)
userAgent Ecuafact.Sdk/1.0 User-Agent
retryTransientFailures true false desactiva todos los reintentos
maxAttempts 3 Intentos por solicitud (minimo 1)
respectRetryAfter true Espera al menos lo que indica Retry-After
maxRetryDelaySeconds 60.0 Espera maxima entre reintentos (0 = sin tope)
retryRateLimited false Reintenta el 429/104
retryableStatusCodes [408, 425, 500, 502, 503, 504] Estados HTTP reintentables
retryBaseDelaySeconds 0.2 Espera base entre reintentos
retryBackoff RetryBackoff::Linear Linear (base x intento) o Exponential (base x 2^(intento-1)); acepta 'linear'/'exponential'
retryJitterSeconds 0.05 Variacion aleatoria maxima (por intento en Linear)
totalTimeoutSeconds null Tope de toda la llamada, incluidos reintentos (EcuafactTimeoutException)
transport CurlTransport Transporte propio (TransportInterface) o Psr18Transport
connectTimeout null Tiempo maximo de conexion, en segundos (solo cURL)
proxy null URL del proxy (solo cURL)
caInfo null Bundle de CA en PEM (solo cURL)
verifyPeer true false desactiva la validacion TLS; solo pruebas locales (solo cURL)
curlOptions [] Opciones CURLOPT_* extra (solo cURL)

El transporte cURL reutiliza el mismo handle (keep-alive). Para usar Guzzle o Symfony HttpClient, instala psr/http-client y psr/http-factory y pasa transport: new Psr18Transport($cliente, $requestFactory, $streamFactory); el timeout, el proxy y TLS los configura tu cliente.

Opciones por llamada

Todos los metodos que llaman al API (tambien para(), esperarResultado e iterarEmitidos) aceptan como ultimo argumento ?RequestOptions $opciones. Solo afectan a esa llamada.

Constructores de comprobantes

Opcionales. Producen el mismo ComprobanteRequest; puedes seguir armandolo a mano.

Recorrer paginas

desde/hasta son fechas de calendario de Ecuador (Y-m-d). Un DateTimeInterface se formatea como Y-m-d en su propia zona horaria. iterarEmitidos pide cada pagina solo cuando la necesitas y para con hayMas = false o en la pagina 10000.

Estados tipados

Operation::estadoOperacion() (EstadoOperacion), Operation::estadoAutorizacionTipado() (EstadoAutorizacion), Operation::tipoComprobante() (TipoComprobante), Operation::esFinal() y Operation::esAutorizado(). Un valor nuevo del API se lee como Desconocido (o null en TipoComprobante); los campos string originales no cambian.

Errores

Excepcion Cuando Que hacer
EcuafactAuthException 401/403 Revisa la API Key y el contribuyente autorizado
EcuafactValidationException 400/422 Corrige los datos segun errores
EcuafactNotFoundException 404 Revisa la identificacion, la clave o el id
EcuafactConflictException 409 Misma Idempotency-Key con otro contenido, o comprobante duplicado
EcuafactRateLimitException 429/104 Espera retryAfter segundos y repite
EcuafactQuotaException 429/501 Compra cupo; no repitas
EcuafactServerException 5xx Repite con la misma Idempotency-Key si esReintentable
EcuafactConnectionException Sin respuesta HTTP Repite con la misma Idempotency-Key
EcuafactTimeoutException Tiempo agotado Consulta la operacion o repite con la misma clave
EcuafactConfigurationException Opcion invalida Corrige la configuracion
EcuafactWebhookException Firma de webhook invalida Responde 400 y no proceses el evento

Las de API heredan de EcuafactApiException (codigo, mensaje, errores, estadoHttp, idSeguimiento, idempotencyKey, retryAfter, esReintentable); todas heredan de EcuafactSdkException.

Webhooks

WebhookSignature::verify($secretos, $cabecera, $cuerpo) devuelve false (nunca lanza) ante una cabecera malformada, vencida o con firma distinta.

Documentacion

Licencia

MIT.


All versions of sdk with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
ext-curl Version *
ext-json Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package ecuafact/sdk contains the following files

Loading the files please wait ...