tepuilabs / mini-meli
Genera access token para poder tener acceso a los recursos disponibles de Mercado libre
Fund package maintenance!
angelcruz.dev/donate
Requires
- php: ^8.3
- guzzlehttp/guzzle: ^7.9
Requires (Dev)
- laravel/pint: ^1.24
- pestphp/pest: ^3.8.2
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^2.0
This package is auto-updated.
Last update: 2025-07-28 11:42:17 UTC
README
Genera access token de Mercado Libre con las últimas funcionalidades de PHP 8.3.
Características
- ✅ PHP 8.3+ - Aprovecha las últimas funcionalidades del lenguaje
- ✅ Type Safety - Tipado estricto y union types
- ✅ Readonly Properties - Inmutabilidad donde sea apropiado
- ✅ Match Expressions - Lógica más clara y eficiente
- ✅ Named Arguments - Mejor legibilidad del código
- ✅ First-class Callable Syntax - Sintaxis moderna para callbacks
- ✅ Improved Error Handling - Manejo de errores más específico
- ✅ Backward Compatibility - Compatible con versiones anteriores
Instalación
composer require tepuilabs/mini-meli
Configuración
Variables de Entorno
Agrega en tu archivo de configuración:
GRANT_TYPE=authorization_code CLIENT_ID=tu_client_id CLIENT_SECRET=tu_client_secret REDIRECT_URL=http://localhost:9000
Note
Estos datos los debes configurar en Mercado Libre cuando crees una aplicación. Solo necesitas el client_id y client_secret.
Uso
Método Moderno (Recomendado)
<?php use Tepuilabs\MeliServices\MeliServices; require 'vendor/autoload.php'; // Crear desde variables de entorno $meli = MeliServices::fromEnvironment(); $response = $meli->generateAccessToken(); // Acceder a los datos de la respuesta echo $response->getAccessToken(); echo $response->getRefreshToken(); echo $response->getExpiresIn(); // O convertir a array $data = $response->toArray();
Método con Configuración Manual
<?php use Tepuilabs\MeliServices\MeliConfig; use Tepuilabs\MeliServices\MeliServices; require 'vendor/autoload.php'; $config = new MeliConfig( clientId: 'tu_client_id', clientSecret: 'tu_client_secret', code: $_GET['code'], // desde la URL redirectUri: 'http://localhost:9000' ); $meli = new MeliServices($config); $response = $meli->generateAccessToken();
Método Legacy (Compatibilidad)
<?php use Tepuilabs\MeliServices\MeliServices; require 'vendor/autoload.php'; $params = [ 'grant_type' => 'authorization_code', 'client_id' => 'tu_client_id', 'code' => $_GET['code'], // desde la URL 'client_secret' => 'tu_client_secret', 'redirect_uri' => 'http://localhost:9000' ]; $response = (new MeliServices($params))->generateAccessTokenArray();
API Reference
MeliServices
Métodos Estáticos
fromArray(array $params): self
- Crear desde arrayfromEnvironment(): self
- Crear desde variables de entorno
Métodos de Instancia
generateAccessToken(): MeliResponse
- Generar token (nuevo)generateAccessTokenArray(): array
- Generar token (legacy)getConfig(): MeliConfig
- Obtener configuraciónisValid(): bool
- Verificar si la configuración es válida
MeliResponse
Propiedades
data: array
- Datos de la respuestastatusCode: int
- Código de estado HTTP
Métodos
getAccessToken(): ?string
- Obtener access tokengetRefreshToken(): ?string
- Obtener refresh tokengetTokenType(): ?string
- Obtener tipo de tokengetExpiresIn(): ?int
- Obtener tiempo de expiracióngetScope(): ?string
- Obtener scopegetUserId(): ?int
- Obtener ID de usuariohasAccessToken(): bool
- Verificar si tiene access tokenhasRefreshToken(): bool
- Verificar si tiene refresh tokentoArray(): array
- Convertir a arraytoJson(): string
- Convertir a JSONisSuccessful(): bool
- Verificar si la respuesta es exitosagetErrorMessage(): ?string
- Obtener mensaje de errorgetErrorDescription(): ?string
- Obtener descripción del error
MeliConfig
Métodos Estáticos
fromArray(array $params): self
- Crear desde arrayfromEnvironment(): self
- Crear desde variables de entorno
Métodos de Instancia
toArray(): array
- Convertir a arrayisValid(): bool
- Verificar si es válido
Manejo de Errores
La librería incluye manejo de errores específico:
try { $response = $meli->generateAccessToken(); } catch (GenericException $e) { echo "Error: " . $e->getMessage(); }
Tipos de Error
- 400 - Solicitud inválida
- 401 - Credenciales inválidas
- 403 - Acceso denegado
- 404 - Endpoint no encontrado
- 429 - Demasiadas solicitudes
- 5xx - Error del servidor
Testing
# Ejecutar tests composer test # Ejecutar tests con coverage composer test-coverage # Formatear código composer format
Contribuir
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature
) - Commit tus cambios (
git commit -m 'Add some AmazingFeature'
) - Push a la rama (
git push origin feature/AmazingFeature
) - Abre un Pull Request
Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE.md para más detalles.