agenciamav / laravel-ifood
Pacote Laravel para integração com as novas APIs do Ifood.
Fund package maintenance!
lucianotonet
Requires
- php: ^7.1|^8.0
- guzzlehttp/guzzle: ^7.3
- illuminate/support: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.5
README
Pacote Laravel para integração com as novas APIs do Ifood.
Instalação
Instale o pacote via composer:
composer require agenciamav/laravel-ifood
Obtenha as credenciais do seu aplicativo do tipo distribuído em developer.ifood.com.br e insira no arquivo .env
:
// .env IFOOD_CLIENT_ID=****** IFOOD_CLIENT_SECRET=******
Adicione o trait LaravelIfood
ao model que deseja integrar:
namespace App\Models; use Agenciamav\LaravelIfood\LaravelIfood; class User extends Model { use LaravelIfood; }
Isto irá adicionar ao model as funções necessárias para autenticação.
Caso precise de uma interface para autorização da aplicação, você pode publicar as configurações e assets do pacote:
php artisan vendor:publish --provider=Agenciamav\LaravelIfood\LaravelIfoodServiceProvider
Isto gerará um arquivo config/ifood.php
com as configurações do pacote e os arquivos de assets.
/config
/ifood.php
/resources
/js
/Pages
/Ifood
Auth.vue
Merchant.vue
Header.vue
...
Rode o comando php artisan migrate
para criar as tabelas necessárias.
Pronto! Agora você pode usar os recursos do iFood.
Como usar
Autorizando a aplicação:
$user = request()->user(); // Ou qualquer model que use o trait // 1. Obtém USER CODE para inserir no portal do iFood $user->getUserCode(); // Retorna: 'XXXX-XXXX' // 2. Após informar o USER CODE no portal do iFood, um AUTHORIZATION CODE será gerado $auth_code = 'XXXX-XXXX'; // O código de autorização gerado pelo iFood // 3. Passando o AUTHORIZATION CODE, obtém-se o token de acesso $user->getAccessToken($auth_code); // Retorna o ACCESS TOKEN
Com isto o token de acesso será armazenado no banco de dados e ficará salvo na seção para ser utilizado em todas as requisições.
Exemplo de uso:
use Agenciamav\LaravelIfood\Models\Merchant; Merchant::all(); // Obtém todas as lojas conectadas Merchant::show('xxx...'); // Obtém detalhes de uma loja via UUID
Outras funcionalidades estão sendo implementadas.
Você pode contribuir para o desenvolvimento do pacote. Faça um fork deste repositório e envie pull requests.
Você pode encontrar mais informações na documentação do iFood.
Sobre autorização e autenticação:
O Ifood fornece dois fluxos de autorização: o Fluxo de credencial de aplicativo e o Fluxo de código de autorização. Este pacote visa atender o fluxo de código de autorização para aplicativos cadastrados como tipo "distribuído".
Esse fluxo requer que o usuário do seu aplicativo seja capaz de se autenticar via Portal do Parceiro e autorizar a conexão solicitada pelo app.
Fluxo de código de autorização:
- Seu app solicita código de vínculo ✔
- Recebe código de vínculo e código verificador ✔
- Insere código de vínculo no Portal do Parceiro ✔
- Após autorizar o aplicativo, o código de autorização é digitado no aplicativo ✔
- Solicita token de acesso com código de autorização e código verificador ✔
- Aplicativo recebe token de acesso e refresh token ✔
- Aplicativo usa token para acessar recursos das lojas via as APIs do iFood ✔
- Aplicativo atualiza o token de acesso com o refresh token 🟠 WIP
Passo a passo aqui
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email agenciamav@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.