定制 hongayetu/logigate-sdk 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hongayetu/logigate-sdk

最新稳定版本:v1.1.0

Composer 安装命令:

composer require hongayetu/logigate-sdk

包简介

SDK para integração com a API do Logigate ERP da plataforma Honga Yetu

README 文档

README

SDK oficial para integrar com a API do Logigate ERP da plataforma Honga Yetu.

Funciona em qualquer projecto PHP 8.1+ e tem integração nativa com Laravel.

Documentação

Consulte a documentação completa da API em: https://logigate.hongayetu.com/desenvolvedores/docs

Instalação

composer require hongayetu/logigate-sdk

Configuração

PHP Puro

use HongaYetu\LogigateSDK\LogigateClient;

$logigate = new LogigateClient(
    token: 'seu_token_api',
    baseUrl: 'https://api.honga.com/logigate/v1'
);

Laravel

Publique o ficheiro de configuração:

php artisan vendor:publish --tag=logigate-sdk-config

Adicione ao .env:

LOGIGATE_API_TOKEN=seu_token_api
LOGIGATE_API_URL=https://api.honga.com/logigate/v1

Use via Facade ou helper:

use HongaYetu\LogigateSDK\Facades\Logigate;

// Facade
$clientes = Logigate::clientes()->listar();

// Helper
$clientes = logigate()->clientes()->listar();

Utilização

Autenticação

// Verificar se o token é válido
$auth = $logigate->auth()->verificar();
echo $auth['data']['empresa']['nome']; // Nome da empresa

Clientes

// Listar clientes (paginado)
$clientes = $logigate->clientes()->listar(['por_pagina' => 20]);

// Ver cliente
$cliente = $logigate->clientes()->ver(1);

// Criar cliente
$novo = $logigate->clientes()->criar([
    'nome' => 'João Silva',
    'tipo' => 0, // 0 = Pessoa Singular, 1 = Empresa
    'nif' => '001234567LA041',
    'telefone' => 923456789,
    'email' => 'joao@email.com',
]);

// Actualizar cliente
$logigate->clientes()->actualizar(1, ['nome' => 'João Silva Actualizado']);

// Eliminar cliente
$logigate->clientes()->eliminar(1);

Produtos

$produtos = $logigate->produtos()->listar();
$produto = $logigate->produtos()->ver(1);
$novo = $logigate->produtos()->criar([
    'nome' => 'Produto Novo',
    'preco' => 5000.00,
    'taxa' => 14,
]);

Serviços

$servicos = $logigate->servicos()->listar();
$servico = $logigate->servicos()->criar([
    'nome' => 'Consultoria',
    'preco' => 25000.00,
]);

Facturas

// Listar facturas
$facturas = $logigate->facturas()->listar([
    'start' => '2026-01-01',
    'end' => '2026-12-31',
    'por_pagina' => 20,
]);

// Ver factura
$factura = $logigate->facturas()->ver(50);

// Emitir factura
$resultado = $logigate->facturas()->emitir([
    'tipo' => 0,              // 0=FR, 1=FT, 3=FP
    'tipo_pagamento' => 0,    // 0=Dinheiro, 1=TPA, 2=Transf. Bancária
    'cliente_id' => 535,
    'estabelecimento_id' => 21,
    'artigos' => [
        ['artigo_id' => 1, 'quantidade' => 2, 'preco' => 5000],
        ['artigo_id' => 3, 'quantidade' => 1],
    ],
]);

echo $resultado['data']['texto']; // "Factura FR EMP012026/01 emitida com sucesso"

// Obter PDF (base64)
$pdf = $logigate->facturas()->pdf(50);
file_put_contents('factura.pdf', base64_decode($pdf['data']['pdf_base64']));

// URL directa do PDF (para abrir no browser)
$url = $logigate->facturas()->pdfUrl(50);

Estabelecimentos

$estabelecimentos = $logigate->estabelecimentos()->listar();

Logística

// Fornecedores
$fornecedores = $logigate->fornecedores()->listar();
$logigate->fornecedores()->criar([
    'nome' => 'Fornecedor ABC',
    'tipo' => 1,
    'endereco' => 'Rua Principal, 100',
    'is_estrangeiro' => false,
]);

// Estoques
$estoques = $logigate->estoques()->listar(['estabelecimento_id' => 1]);
$logigate->estoques()->criar([
    'tipo_estoque' => 0,        // 0=Produto, 1=Matéria-Prima
    'produto_id' => 1,
    'quantidade' => 100,
    'preco_compra' => 5000.00,
    'data_entrada' => '2026-03-01',
    'estabelecimento_id' => 1,
]);

// Matérias-Primas
$materias = $logigate->materiasPrimas()->listar();

// Movimentações (apenas leitura)
$movimentacoes = $logigate->movimentacoes()->listar([
    'data_inicio' => '2026-01-01',
    'data_fim' => '2026-03-31',
]);

Relatórios

Os relatórios podem ser gerados imediatamente ou em segundo plano (quando o volume excede o threshold).

// Gerar relatório de facturas em PDF
$relatorio = $logigate->relatorios()->facturas([
    'tipo' => 'pdf',
    'formato' => 'base64',      // ou 'link'
    'start' => '2026-01-01',
    'end' => '2026-03-31',
]);

if ($relatorio['tipo_resposta'] === 'imediato') {
    // Relatório gerado imediatamente
    file_put_contents('relatorio.pdf', base64_decode($relatorio['data']['ficheiro_base64']));
} else {
    // Relatório em background — monitorar via processos
    $processoId = $relatorio['data']['processo_id'];
    echo "A gerar em background. Processo: {$processoId}";
}

// Outros relatórios disponíveis:
$logigate->relatorios()->clientes(['tipo' => 'excel']);
$logigate->relatorios()->produtos(['tipo' => 'pdf']);
$logigate->relatorios()->servicos(['tipo' => 'excel']);
$logigate->relatorios()->documentosEmitidos(['tipo' => 'pdf']);
$logigate->relatorios()->detalhado(['tipo' => 'pdf']);
$logigate->relatorios()->produtosMovimentos(['tipo' => 'pdf']);

Processos

Monitorizar tarefas em segundo plano (relatórios, exportações).

// Listar processos
$processos = $logigate->processos()->listar();

// Ver estado de um processo
$processo = $logigate->processos()->ver(123);
echo $processo['data']['status_texto']; // "Concluído"

// Download do ficheiro
$ficheiro = $logigate->processos()->download(123, 'base64');
file_put_contents('export.pdf', base64_decode($ficheiro['data']['ficheiro_base64']));

// Ou obter link temporário (válido 30 min)
$link = $logigate->processos()->download(123, 'link');
echo $link['data']['download_url'];

Webhooks

Receba notificações em tempo real quando ocorrem eventos.

// Criar webhook
$webhook = $logigate->webhooks()->criar([
    'url' => 'https://meusite.com/webhook',
    'eventos' => ['factura.emitida', 'cliente.criado'],
    'descricao' => 'Webhook principal',
]);

// Guardar o secret (retornado apenas na criação)
$secret = $webhook['data']['secret']; // whsec_...

// Listar webhooks
$webhooks = $logigate->webhooks()->listar();

// Testar webhook
$logigate->webhooks()->testar(1);

// Ver entregas
$entregas = $logigate->webhooks()->entregas(1);

// Actualizar
$logigate->webhooks()->actualizar(1, ['eventos' => ['*']]);

// Eliminar
$logigate->webhooks()->eliminar(1);

Validar webhooks recebidos

Quando receber um webhook, valide a assinatura HMAC-SHA256:

use HongaYetu\LogigateSDK\Support\WebhookValidator;

$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_LOGIGATE_SIGNATURE'] ?? '';
$secret = 'whsec_seu_secret_aqui';

if (WebhookValidator::validar($payload, $signature, $secret)) {
    $evento = json_decode($payload, true);
    // Processar evento...
} else {
    http_response_code(401);
    echo 'Assinatura inválida';
}

Eventos disponíveis

Evento Descrição
processo.iniciado Processo de exportação iniciado
processo.concluido Processo concluído com sucesso
processo.erro Processo falhou
factura.emitida Nova factura emitida
factura.anulada Factura anulada
cliente.criado Novo cliente criado
cliente.actualizado Cliente actualizado
cliente.eliminado Cliente eliminado
* Todos os eventos

Tratamento de erros

O SDK converte erros HTTP em excepções específicas:

use HongaYetu\LogigateSDK\Exceptions\AuthenticationException;
use HongaYetu\LogigateSDK\Exceptions\ValidationException;
use HongaYetu\LogigateSDK\Exceptions\RateLimitException;
use HongaYetu\LogigateSDK\Exceptions\LogigateException;

try {
    $logigate->clientes()->criar(['nome' => '']);
} catch (AuthenticationException $e) {
    // 401 — Token inválido ou expirado
    echo $e->getCodigoErro(); // TOKEN_INVALIDO, TOKEN_EXPIRADO, TOKEN_AUSENTE
} catch (ValidationException $e) {
    // 422 — Dados inválidos
    echo $e->getMessage();
    print_r($e->errors()); // ['nome' => ['O nome é obrigatório']]
} catch (RateLimitException $e) {
    // 429 — Limite de requisições excedido
    echo "Tentar novamente em {$e->retryAfter()} segundos";
} catch (LogigateException $e) {
    // Outros erros
    echo $e->getMessage();
    echo $e->getCodigoErro();
}

Respostas paginadas

use HongaYetu\LogigateSDK\Support\PaginatedResponse;

$resposta = $logigate->clientes()->listar(['por_pagina' => 10]);
$paginacao = new PaginatedResponse($resposta);

echo "Página {$paginacao->paginaActual} de {$paginacao->ultimaPagina}";
echo "Total: {$paginacao->total}";

foreach ($paginacao as $cliente) {
    echo $cliente['nome'];
}

if ($paginacao->temProximaPagina()) {
    // Carregar próxima página
    $proxima = $logigate->clientes()->listar(['por_pagina' => 10, 'p' => $paginacao->paginaActual + 1]);
}

Requisitos

  • PHP 8.1+
  • Guzzle 7.0+
  • Laravel 10/11/12 (opcional, para integração Laravel)

Licença

MIT

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固