PHPackages                             jorzelalves/laravel-hdi-seguros - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. jorzelalves/laravel-hdi-seguros

ActiveLibrary

jorzelalves/laravel-hdi-seguros
===============================

Pacote Laravel para integração completa com a API HDI Seguros

00PHP

Since Jan 27Pushed 3mo agoCompare

[ Source](https://github.com/Jorzel21/laravel-hdi-seguros)[ Packagist](https://packagist.org/packages/jorzelalves/laravel-hdi-seguros)[ RSS](/packages/jorzelalves-laravel-hdi-seguros/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel HDI Seguros
===================

[](#laravel-hdi-seguros)

[![Latest Version on Packagist](https://camo.githubusercontent.com/2f9e574a39af78ff1480973b7c984fbfadf3d71440d9a79d61976a2489a66e9c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a6f727a656c616c7665732f6c61726176656c2d6864692d73656775726f732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/jorzelalves/laravel-hdi-seguros)[![Total Downloads](https://camo.githubusercontent.com/45f4982b0d285379cdde2c5a21a176f2f6ba48a30e08ceff81e47a01cc975194/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a6f727a656c616c7665732f6c61726176656c2d6864692d73656775726f732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/jorzelalves/laravel-hdi-seguros)

Pacote Laravel completo para integração com a API HDI Seguros. Fornece uma interface simples e intuitiva para trabalhar com todos os endpoints da API HDI, incluindo autenticação, cotação, efetivação de propostas, consulta de apólices, sinistros e muito mais.

Características
---------------

[](#características)

- ✅ **Autenticação Automática** - Gerenciamento automático de tokens OAuth2 com cache
- ✅ **Todos os Endpoints** - Implementação completa de todos os endpoints da API HDI
- ✅ **Validação de Dados** - Form Requests para validação robusta de dados
- ✅ **Type Safety** - DTOs tipados para respostas da API
- ✅ **Fácil Configuração** - Arquivo de configuração simples e intuitivo
- ✅ **Tratamento de Erros** - Exceções customizadas para melhor debugging
- ✅ **Laravel 10 e 11** - Compatível com as versões mais recentes do Laravel

Requisitos
----------

[](#requisitos)

- PHP 8.1 ou superior
- Laravel 10.x ou 11.x
- GuzzleHTTP 7.x

Instalação
----------

[](#instalação)

Instale o pacote via Composer:

```
composer require jorzelalves/laravel-hdi-seguros
```

Publique o arquivo de configuração:

```
php artisan vendor:publish --tag=hdi-seguros-config
```

Configure suas credenciais no arquivo `.env`:

```
HDI_BASE_URL=https://openapi-int.hdi.com.br
HDI_API_KEY=sua_api_key_aqui
HDI_COMPANY_ID=01
HDI_APPLICATION_ID=01
HDI_USER_ID=seu_user_id

# Credenciais de Autenticação
HDI_CLIENT_ID=seu_client_id
HDI_CLIENT_SECRET=seu_client_secret
HDI_GRANT_TYPE=client_credentials

# Dados do Corretor
HDI_SUSEP_CODE=seu_codigo_susep
HDI_SUCURSAL_CODE=seu_codigo_sucursal

# Cache (Opcional)
HDI_CACHE_ENABLED=true
HDI_CACHE_TTL=3600
HDI_TIMEOUT=30
```

Uso
---

[](#uso)

### Autenticação

[](#autenticação)

A autenticação é gerenciada automaticamente pelo pacote. O token é armazenado em cache e renovado automaticamente quando necessário.

```
use HdiSeguros\Services\AuthService;

// Injeção de dependência
public function __construct(
    private AuthService $authService
) {}

// Autenticação manual (raramente necessário)
$token = $this->authService->authenticateAndGetToken();

// Limpar token do cache
$this->authService->clearToken();
```

### Cotação (Quote)

[](#cotação-quote)

#### Listar Portfólio

[](#listar-portfólio)

```
use HdiSeguros\Services\QuoteService;

public function __construct(
    private QuoteService $quoteService
) {}

public function getPortfolio()
{
    $portfolio = $this->quoteService->getPortfolioViewAll(
        sucursalCode: '001',
        susepCode: '00000000000001',
        skip: 0,
        limit: 10
    );

    return $portfolio;
}
```

#### Buscar Veículos

[](#buscar-veículos)

```
// Buscar por descrição
$vehicles = $this->quoteService->searchVehiclesByDescription(
    description: 'gsx-s',
    limit: 10
);

// Buscar por FIPE
$vehicles = $this->quoteService->searchVehiclesByFipe(
    fipe: '509365-1'
);

// Buscar por Chassi
$vehicles = $this->quoteService->searchVehiclesByChassis(
    chassi: '9BD5781FFKY323228'
);
```

#### Consultar Coberturas

[](#consultar-coberturas)

```
$coverages = $this->quoteService->getCoverages(
    postalCode: '05777190',
    sucursalCode: '001',
    susepCode: '00000000000001',
    vehicleCategory: 10
);
```

#### Gerar Cotação

[](#gerar-cotação)

```
$quoteData = [
    'prospect' => [
        'name' => 'João da Silva',
        'documents' => [
            [
                'type' => ['id' => 1],
                'number' => '12345678900'
            ]
        ],
        'contacts' => [
            [
                'type' => ['id' => 3],
                'data' => 'joao@example.com',
                'isAllowCampaign' => false
            ]
        ],
        'addresses' => [
            [
                'street' => 'Rua Exemplo',
                'district' => 'Centro',
                'number' => '123',
                'postalCode' => '01234567'
            ]
        ]
    ],
    'search' => [
        'segment' => [
            [
                'id' => '1',
                'components' => [
                    [
                        'id' => '1',
                        'compositions' => [
                            ['id' => '3']
                        ]
                    ]
                ]
            ]
        ],
        'businessItem' => [
            'insurance' => [
                'period' => [
                    'effectiveDate' => '2024-01-01',
                    'expirationDate' => '2025-01-01'
                ],
                'brokers' => [
                    [
                        'sucursalCode' => '001',
                        'susepCode' => '00000000000001',
                        'isMain' => true,
                        'percentageCommission' => 20,
                        'percentageParticipation' => 100
                    ]
                ],
                'autos' => [
                    // Dados do veículo, motorista e coberturas
                ]
            ]
        ]
    ]
];

$quote = $this->quoteService->generateQuote($quoteData);
```

#### Imprimir Cotação (PDF)

[](#imprimir-cotação-pdf)

```
$pdfContent = $this->quoteService->printQuote(
    offerId: 'uuid-da-oferta',
    itemId: 1
);

// Salvar PDF
file_put_contents('cotacao.pdf', $pdfContent);

// Ou retornar para download
return response($pdfContent)
    ->header('Content-Type', 'application/pdf')
    ->header('Content-Disposition', 'attachment; filename="cotacao.pdf"');
```

### Proposta (Proposal)

[](#proposta-proposal)

#### Criar Proposta (Efetivação)

[](#criar-proposta-efetivação)

```
use HdiSeguros\Services\ProposalService;

public function __construct(
    private ProposalService $proposalService
) {}

public function createProposal()
{
    $proposalData = [
        'prospect' => [
            [
                'name' => 'João da Silva',
                'occupationClassificationCode' => 9,
                'salaryRangeCode' => 9,
                'isAwareName' => true,
                'isAwareAddress' => true,
                'isPoliticallyExposedPerson' => false,
                'document' => [
                    [
                        'type' => ['id' => '3'],
                        'number' => '12345678900',
                        'issuer' => 'SSP-SP',
                        'issueDate' => '2000-12-30'
                    ]
                ],
                'contacts' => [
                    [
                        'type' => ['id' => '3'],
                        'data' => 'joao@example.com',
                        'isAllowCampaign' => true
                    ]
                ],
                'addresses' => [
                    [
                        'street' => 'Rua Exemplo',
                        'district' => 'Centro',
                        'number' => 123,
                        'postalCode' => '01234567',
                        'city' => 'São Paulo',
                        'state' => 'SP'
                    ]
                ]
            ]
        ],
        'businessItem' => [
            'offerId' => 'uuid-da-cotacao',
            'insurance' => [
                'installments' => [
                    'numberOfInstallments' => 1,
                    'billingTypeId' => 7 // 1=Cartão, 2=Débito, 7=Carnê
                ],
                'broker' => [
                    [
                        'sucursalCode' => '001',
                        'typeCode' => 'C',
                        'susepCode' => '00000000000001',
                        'isMain' => true,
                        'percentageParticipation' => 100
                    ]
                ],
                'autos' => [
                    [
                        'taxInvoiceNumber' => '1',
                        'isTaxInvoiceOnInspection' => true,
                        'vehicle' => [
                            'chassisCode' => 'KMHJN81BBA179136',
                            'licensePlateCode' => 'ABC1234',
                            'stateLicensePlateCode' => 'SP'
                        ]
                    ]
                ]
            ]
        ]
    ];

    $proposal = $this->proposalService->createProposal($proposalData);

    return $proposal;
}
```

#### Listar Propostas

[](#listar-propostas)

```
$proposals = $this->proposalService->listProposalsWithStatus(
    registrationDate: '2024-01-01'
);
```

#### Imprimir Proposta

[](#imprimir-proposta)

```
$pdfContent = $this->proposalService->printProposal(
    offerId: 'uuid-da-oferta',
    itemId: 1
);
```

#### Excluir Proposta

[](#excluir-proposta)

```
$result = $this->proposalService->deleteProposal(
    proposalNumber: '1234567'
);
```

### Apólice (Policy)

[](#apólice-policy)

```
use HdiSeguros\Services\PolicyService;

public function __construct(
    private PolicyService $policyService
) {}

// Listar apólices emitidas
$policies = $this->policyService->listIssuedPolicies(
    processDate: '2024-01-01'
);

// Detalhe da apólice
$policyDetail = $this->policyService->getPolicyDetail(
    id: '123456',
    policyCode: '123456'
);

// Buscar apólices (2ª via)
$policies = $this->policyService->listPolicyDetails(
    limit: 10,
    skip: 0,
    policyCode: '123456'
);

// Imprimir apólice (PDF)
$pdfContent = $this->policyService->printPolicy(
    policyCode: '123456',
    brokerType: 'C',
    brokerCode: '001'
);

// Extrato de comissões
$commissions = $this->policyService->getCommissionStatement(
    companyId: '01',
    startDate: '2024-01-01',
    endDate: '2024-12-31'
);

// Status de parcelas
$installments = $this->policyService->listInstallmentStatus(
    policyCode: '123456',
    status: 'ALL' // ALL, PAID, PENDING, OVERDUE
);

// Extrato de conta corrente
$statement = $this->policyService->getAccountStatement(
    daysRange: 90
);
```

### Sinistro (Claim)

[](#sinistro-claim)

```
use HdiSeguros\Services\ClaimService;

public function __construct(
    private ClaimService $claimService
) {}

// Listar sinistros
$claims = $this->claimService->listClaims(
    dateOfClaim: '2024-01-01'
);

// Detalhe do sinistro
$claimDetail = $this->claimService->getClaimDetail(
    claimId: '123456'
);
```

### Usando Facade

[](#usando-facade)

Você também pode usar a Facade para acesso rápido aos serviços:

```
use HdiSeguros\Facades\HdiSeguros;

// Autenticação
$token = HdiSeguros::auth()->authenticateAndGetToken();

// Cotação
$vehicles = HdiSeguros::quote()->searchVehiclesByDescription('civic');

// Proposta
$proposal = HdiSeguros::proposal()->createProposal($data);

// Apólice
$policies = HdiSeguros::policy()->listIssuedPolicies('2024-01-01');

// Sinistro
$claims = HdiSeguros::claim()->listClaims('2024-01-01');
```

Validação de Dados
------------------

[](#validação-de-dados)

O pacote inclui Form Requests para validação de dados:

```
use HdiSeguros\Http\Requests\GenerateQuoteRequest;
use HdiSeguros\Http\Requests\CreateProposalRequest;

public function store(GenerateQuoteRequest $request)
{
    // Dados já validados
    $validated = $request->validated();

    $quote = $this->quoteService->generateQuote($validated);

    return response()->json($quote);
}
```

### Form Requests Disponíveis

[](#form-requests-disponíveis)

- `AuthenticationRequest` - Validação de autenticação
- `TokenRequest` - Validação de token
- `GenerateQuoteRequest` - Validação para gerar cotação
- `CreateProposalRequest` - Validação para criar proposta
- `SearchVehicleRequest` - Validação para buscar veículos
- `GetCoveragesRequest` - Validação para consultar coberturas

DTOs (Data Transfer Objects)
----------------------------

[](#dtos-data-transfer-objects)

O pacote fornece DTOs tipados para trabalhar com as respostas da API:

```
use HdiSeguros\DTOs\QuoteDTO;
use HdiSeguros\DTOs\ProposalDTO;
use HdiSeguros\DTOs\TokenDTO;

$quoteResponse = $this->quoteService->generateQuote($data);
$quoteDTO = QuoteDTO::fromArray($quoteResponse);

if ($quoteDTO->hasErrors()) {
    // Tratar erros
    return response()->json($quoteDTO->errors, 422);
}

return response()->json($quoteDTO->toArray());
```

Tratamento de Erros
-------------------

[](#tratamento-de-erros)

O pacote lança exceções customizadas para facilitar o tratamento de erros:

```
use HdiSeguros\Exceptions\HdiApiException;

try {
    $quote = $this->quoteService->generateQuote($data);
} catch (HdiApiException $e) {
    // Status HTTP
    $statusCode = $e->getCode();

    // Mensagem de erro
    $message = $e->getMessage();

    // Dados completos da resposta
    $responseData = $e->getResponseData();

    return response()->json([
        'error' => $message,
        'details' => $responseData
    ], $statusCode);
}
```

Configuração Avançada
---------------------

[](#configuração-avançada)

### Cache de Token

[](#cache-de-token)

Por padrão, o token de autenticação é armazenado em cache. Você pode configurar isso no arquivo `config/hdi-seguros.php`:

```
'cache' => [
    'enabled' => true,
    'ttl' => 3600, // 1 hora em segundos
    'prefix' => 'hdi_seguros_',
],
```

### Timeout de Requisições

[](#timeout-de-requisições)

Configure o timeout das requisições HTTP:

```
'timeout' => 30, // segundos
```

### Trace ID Customizado

[](#trace-id-customizado)

Você pode definir um Trace ID customizado para rastreamento:

```
use HdiSeguros\Services\HdiClient;

$client = app(HdiClient::class);
$client->setTraceId('meu-trace-id-123');
```

Testes
------

[](#testes)

```
composer test
```

Changelog
---------

[](#changelog)

Por favor, veja [CHANGELOG](CHANGELOG.md) para mais informações sobre o que mudou recentemente.

Contribuindo
------------

[](#contribuindo)

Por favor, veja [CONTRIBUTING](CONTRIBUTING.md) para detalhes.

Segurança
---------

[](#segurança)

Se você descobrir alguma questão de segurança, por favor envie um email para  em vez de usar o issue tracker.

Créditos
--------

[](#créditos)

- [Seu Nome](https://github.com/jorzelalves)
- [Todos os Contribuidores](../../contributors)

Licença
-------

[](#licença)

The MIT License (MIT). Por favor, veja [License File](LICENSE.md) para mais informações.

Endpoints Implementados
-----------------------

[](#endpoints-implementados)

### Autenticação

[](#autenticação-1)

- ✅ POST `/corporate/security/v3/authorize` - Autenticação
- ✅ POST `/corporate/security/v3/token` - Obter Token

### Cotação

[](#cotação)

- ✅ GET `/marketplace/offer/v1/portfolio/viewAll` - Listar Portfólio
- ✅ GET `/marketplace/offer/v1/portfolio/component` - Detalhe do Componente
- ✅ GET `/marketplace/offer/v1/insurance/coverages` - Lista de Coberturas
- ✅ GET `/marketplace/offer/v1/vehicles/models` - Buscar Veículos
- ✅ GET `/marketplace/offer/v1/components/compositions/questionnaires` - Questionário
- ✅ POST `/marketplace/offer/v1/offers` - Gerar Cotação
- ✅ PUT `/marketplace/offer/v1/offers` - Recalcular Cotação
- ✅ POST `/marketplace/sales/v1/offers/{offerId}/items/{itemId}/checkingAccount/recalculation` - Aplicar Desconto Conta Corrente
- ✅ GET `/marketplace/broker/v1/account/balance` - Saldo Conta Corrente
- ✅ GET `/marketplace/offer/v1/offers/{offerId}/items/{itemId}/insurance/document` - Imprimir Cotação

### Proposta

[](#proposta)

- ✅ POST `/marketplace/offer/v1/offers/proposal` - Criar Proposta
- ✅ GET `/marketplace/offer/v1/offers/{offerId}/items/{itemId}/insurance/proposals/document` - Imprimir Proposta
- ✅ GET `/proposals/status/v1/proposals` - Listar Propostas com Status
- ✅ DELETE `/marketplace/proposal/v1/proposal/delete/{proposalNumber}` - Excluir Proposta

### Pós-venda

[](#pós-venda)

- ✅ GET `/corporate/party/v1/backoffice/document/detail` - Detalhe da Apólice
- ✅ GET `/corporate/party/v1/backoffice/document/list` - Listar Apólices Emitidas
- ✅ GET `/insurance/policy/v1/policies/details` - Lista de Apólices (2ª via)
- ✅ GET `/insurance/policy/v1/policies/{policyCode}/document` - Imprimir Apólice
- ✅ GET `/corporate/finance/v1/commission/list` - Extrato de Comissões
- ✅ GET `/insurance/policy/v1/installment/status/list` - Status de Parcelas
- ✅ GET `/marketplace/broker/v1/account/statement` - Extrato Conta Corrente
- ✅ GET `/insurance/claim/v1/netx/claim/opening-payment/list` - Listar Sinistros
- ✅ GET `/insurance/claim/v1/claim/detail/{claimId}` - Detalhe do Sinistro

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance54

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/877555b5761ecafd8257f3a8fa201c68360a23ebee4d80b7d4dc13c7691aee4e?d=identicon)[Jorzel21](/maintainers/Jorzel21)

### Embed Badge

![Health badge](/badges/jorzelalves-laravel-hdi-seguros/health.svg)

```
[![Health](https://phpackages.com/badges/jorzelalves-laravel-hdi-seguros/health.svg)](https://phpackages.com/packages/jorzelalves-laravel-hdi-seguros)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
