RetailSolutions.Shared.Ifood
1.3.1388
dotnet add package RetailSolutions.Shared.Ifood --version 1.3.1388
NuGet\Install-Package RetailSolutions.Shared.Ifood -Version 1.3.1388
<PackageReference Include="RetailSolutions.Shared.Ifood" Version="1.3.1388" />
<PackageVersion Include="RetailSolutions.Shared.Ifood" Version="1.3.1388" />
<PackageReference Include="RetailSolutions.Shared.Ifood" />
paket add RetailSolutions.Shared.Ifood --version 1.3.1388
#r "nuget: RetailSolutions.Shared.Ifood, 1.3.1388"
#:package RetailSolutions.Shared.Ifood@1.3.1388
#addin nuget:?package=RetailSolutions.Shared.Ifood&version=1.3.1388
#tool nuget:?package=RetailSolutions.Shared.Ifood&version=1.3.1388
RetailSolutions.Shared.Ifood
Biblioteca .NET para integração com a API do iFood, fornecendo abstrações para autenticação OAuth, gerenciamento de tokens e clientes HTTP configurados.
Características
- ✅ Autenticação OAuth 2.0 com client credentials
- ✅ Cache de tokens no Redis com expiração automática
- ✅ HttpClients pré-configurados para API e autenticação
- ✅ Handler automático para adicionar token de autorização nas requisições
- ✅ Integração com Microsoft.Extensions.DependencyInjection
- ✅ Suporte a logging com Serilog
Instalação
Instale o pacote via NuGet:
dotnet add package RetailSolutions.Shared.Ifood
Ou via Package Manager:
Install-Package RetailSolutions.Shared.Ifood
Pré-requisitos
- .NET 10.0 ou superior
- Redis configurado e acessível
- Credenciais do iFood (ClientId, ClientSecret, BaseUrl, MerchantId)
Configuração
1. Configure o Redis
Certifique-se de que o Redis está configurado no seu projeto. Este pacote depende do RetailSolutions.Shared.Cache para gerenciar conexões Redis.
2. Configure o iFood
Adicione a configuração do iFood no seu appsettings.json:
{
"IfoodConfiguration": {
"ClientId": "seu-client-id",
"ClientSecret": "seu-client-secret",
"BaseUrl": "https://merchant-api.ifood.com.br",
"MerchantId": "seu-merchant-id"
}
}
3. Registre os serviços
No seu Program.cs ou Startup.cs, registre os serviços do iFood:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using RetailSolutions.Shared.Ifood;
var builder = Host.CreateApplicationBuilder(args);
// Configure o iFood via IOptions
builder.Services.Configure<IfoodConfiguration>(builder.Configuration.GetSection("IfoodConfiguration"));
// Adicione os HttpClients do iFood
var ifoodConfig = builder.Configuration.GetSection("IfoodConfiguration").Get<IfoodConfiguration>();
builder.AddIfoodHttpClient(ifoodConfig);
var app = builder.Build();
Uso
Obter Token de Acesso
O token é obtido automaticamente pelo AuthorizationHeaderHandler, mas você também pode obter manualmente:
using RetailSolutions.Shared.Ifood;
public class MeuServico {
private readonly ITokenService tokenService;
public MeuServico(ITokenService tokenService) {
this.tokenService = tokenService;
}
public async Task<string> ObterToken() {
return await tokenService.GetAccessTokenAsync();
}
}
Fazer Requisições para a API do iFood
Use o HttpClient nomeado ifood.api.client para fazer requisições. O token de autorização será adicionado automaticamente:
using Microsoft.Extensions.DependencyInjection;
public class MeuServico {
private readonly IHttpClientFactory httpClientFactory;
public MeuServico(IHttpClientFactory httpClientFactory) {
this.httpClientFactory = httpClientFactory;
}
public async Task<string> BuscarPedidos() {
var client = httpClientFactory.CreateClient(IfoodConstants.IFOOD_API);
var response = await client.GetAsync("/order/v1.0/events:polling");
return await response.Content.ReadAsStringAsync();
}
}
Estrutura
Classes Principais
IfoodExtension: Método de extensão para registrar serviçosIfoodTokenService: Serviço para gerenciar tokens OAuthAuthorizationHeaderHandler: Handler HTTP para adicionar token automaticamenteIfoodConfiguration: Classe de configuração
Constantes
IfoodConstants.IFOOD_TOKEN: Nome do HttpClient para autenticaçãoIfoodConstants.IFOOD_API: Nome do HttpClient para APIIfoodConstants.REDIS_IFOOD_TOKEN_KEY: Chave do token no Redis
Dependências
- Microsoft.Extensions.Http (10.0.1)
- Microsoft.Extensions.Logging (10.0.1)
- Microsoft.Extensions.Options (10.0.1)
- Microsoft.Extensions.Configuration (10.0.1)
- Microsoft.Extensions.DependencyInjection (10.0.1)
- RetailSolutions.Shared.Cache (1.2.73)
- Newtonsoft.Json (13.0.4)
- Serilog (4.1.0)
Cache de Tokens
Os tokens são automaticamente armazenados no Redis com expiração baseada no expiresIn retornado pela API do iFood. Isso reduz a quantidade de requisições de autenticação e melhora a performance.
Logging
O pacote utiliza ILogger e Serilog para logging. Certifique-se de configurar o logging adequadamente no seu projeto para visualizar as informações de autenticação e requisições.
Segurança
⚠️ Importante: O handler HTTP está configurado para aceitar certificados SSL inválidos (ServerCertificateCustomValidationCallback). Em produção, considere configurar adequadamente a validação de certificados.
Suporte
Para questões, bugs ou sugestões, entre em contato através do site da Retail Solutions.
Licença
Copyright © Retail Solutions. Todos os direitos reservados.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Configuration (>= 10.0.1)
- Microsoft.Extensions.DependencyInjection (>= 10.0.1)
- Microsoft.Extensions.Http (>= 10.0.1)
- Microsoft.Extensions.Logging (>= 10.0.1)
- Microsoft.Extensions.Options (>= 10.0.1)
- Newtonsoft.Json (>= 13.0.4)
- RetailSolutions.Shared.Cache (>= 1.2.73)
- Serilog (>= 4.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.