Una interfaz simple creada en PHP para comunicarte con la API de Laudus.
API_LAUDUS_USERNAME =
API_LAUDUS_PASSWORD =
API_LAUDUS_VATID =
use Jsanbae\LaudusAPIPHP\LaudusAPI;
use Jsanbae\LaudusAPIPHP\Credentials\LaudusCredential;
$username = $_ENV['API_LAUDUS_USERNAME'];
$password = $_ENV['API_LAUDUS_PASSWORD'];
$vatid = $_ENV['API_LAUDUS_VATID'];
$api_client = new LaudusAPI(new LaudusCredential($username, $password, $vatid));
// Obten una factura de proveedor por ID
$doc_id = 100;
$data_from_api = $api_client->Compras()->Facturas()->get($doc_id);
//Obtener una lista de facturas de proveedor
use Jsanbae\LaudusAPIPHP\RequestSettings\SettingsList;
use Jsanbae\LaudusAPIPHP\RequestSettings\FilterList;
use Jsanbae\LaudusAPIPHP\RequestSettings\OptionsList;
use Jsanbae\LaudusAPIPHP\RequestSettings\OrderByList;
$doc_number = 100;
$settingsList = new SettingsList();
$settingsList->setFields($api_client->Compras()->Facturas()->getFields())
->addFilter(new FilterList("docNumber", "=", $doc_number))
->addOrderBy(new OrderByList('docNumber', 'DESC'))
->paginate(0, 1)
;
$data_from_api = $api_client->Compras()->Facturas()->list($settingsList);
Los servicios que lo soportan también permiten crear, modificar y eliminar:
// Crear un cliente
$data_from_api = $api_client->Ventas()->Clientes()->create([
"name" => "GONZALO JOSE QUEZADA ROSS",
"legalName" => "GONZALO JOSE QUEZADA ROSS",
"VATId" => "6.286.477-K",
]);
// Modificar un cliente (se recomienda enviar el objeto completo)
$customer_id = 1;
$cliente = $api_client->Ventas()->Clientes()->get($customer_id)['data'];
$cliente['notes'] = 'Cliente actualizado';
$data_from_api = $api_client->Ventas()->Clientes()->update($customer_id, $cliente);
// Eliminar un cliente
$data_from_api = $api_client->Ventas()->Clientes()->delete($customer_id);
Cuenta con unos pocos, se irán agregando en la medida que los vaya necesitando. Sientanse libres de enviar PR con sus propios servicios.
- Generar Token (JWT)
- Validar Token
- ReValidar Token
- Obtener Factura por ID
- Listar Facturas (Filtrable)
- Obtener Proveedor por ID
- Listar Proveedores (Filtrable)
- Crear Proveedor
- Obtener Pago por ID
- Listar Pagos (Filtrable)
- Realizar Pago
- Obtener Factura por ID
- Listar Facturas (Filtrable)
- Obtener Cliente por ID
- Listar Clientes (Filtrable)
- Crear Cliente
- Modificar Cliente
- Eliminar Cliente
- Obtener Cobro por ID
- Listar Cobros (Filtrable)
- Realizar Cobro
- Obtener Cuenta de Banco por ID
- Listar Cuentas de Bancos (Filtrable)
- Obtener Cuenta Contable por ID
- Listar Cuentas Contables (Filtrable)
- Listar Libro de Remuneraciones (Filtrable)
- Obtener Empleado por ID
- Listar Empleados (Filtrable)
- Crear Empleado
- Modificar Empleado
- Eliminar Empleado
Al crear un empleado, la API de Laudus exige más datos que en otras entidades: birthDate, contractStartDate, gender, type (tipo de trabajador), contractType, workingDayType, healthPlan.isapre.isapreId, healthPlan.planType y una previsión (AFP.AFPId o exCaja.exCajaId). Los códigos válidos se pueden obtener consultando un empleado existente.
$data_from_api = $api_client->Remuneracion()->Empleado()->create([
"firstName" => "GONZALO JOSE",
"lastName1" => "QUEZADA",
"lastName2" => "ROSS",
"VATId" => "6.286.477-K",
"gender" => "M",
"birthDate" => "1960-01-01 00:00:00",
"contractStartDate" => "2026-10-01 00:00:00",
"type" => "...",
"contractType" => "...",
"workingDayType" => "...",
"healthPlan" => [
"isapre" => ["isapreId" => "..."],
"planType" => "...",
],
"AFP" => ["AFPId" => "..."],
]);
Para crear un servicio solo debe extender de la clase APIBase. Los endpoints que no soporte el servicio se dejan como string vacío. updateEndpoint() es opcional y solo se define si el servicio permite modificar.
<?php
use Jsanbae\LaudusAPIPHP\APIBase;
class Clientes extends APIBase
{
protected $fields = []; // Campos del Endpoint
protected function getEndpoint(): string
{
return 'url_endpoint_get'; // Ejemplo: 'https://api.laudus.cl/sales/customers/';
}
protected function listEndpoint(): string
{
return 'url_endpoint_list'; // Ejemplo: 'https://api.laudus.cl/sales/customers/list';
}
protected function createEndpoint(): string
{
return 'url_endpoint_create'; // Ejemplo: 'https://api.laudus.cl/sales/customers/';
}
protected function updateEndpoint(): string
{
return 'url_endpoint_update'; // Ejemplo: 'https://api.laudus.cl/sales/customers/';
}
protected function deleteEndpoint(): string
{
return 'url_endpoint_delete'; // Ejemplo: 'https://api.laudus.cl/sales/customers/';
}
}
Cada servicio expone los métodos get($id), list($settings), create($body), update($id, $body) y delete($id).
Con el objetivo de homologar todas las response del API de Laudus, se creó una clase que estandariza las respuestas.
// Estructura del StdResponse, retorna un Array
$stdResponse = [
"status" => '', // 'success' ó 'error'
"statusCode" => '', // 200, 400's, 500
"message" => '', // Bueno o malo
"data" => [], // Viene vacío en caso de error y poblado en caso de éxito.
"error" => [], // Viene vacío en caso de éxito y poblado en caso de error.
"extra" => '', // Alguna información adicional
'timestamp' => new \DateTimeImmutable() // Momento en que se generó el response
];
Ejecuta los tests con PHPUnit:
./vendor/bin/phpunit ./test
Esta API quedá abierto a cualquier sugerencia, mejoras, etc. No dudes en forkear y enviar tus PRs.