---
title: "Inštalácia — Webhooks for Laravel | Roundly"
description: "Inštalácia cez Composer, zverejnenie konfigurácie a migrácií príkazom webhooks:install, migrácia, potom worker frontu a plánovač."
url: https://roundly-consulting.com/sk/open-source/navody/webhooks-for-laravel/instalacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Webhooks for Laravel](https://roundly-consulting.com/sk/open-source/navody/webhooks-for-laravel.md)

# Inštalácia

Pridajte balík a spustite inštalátor. Service provider a alias fasády Webhooks sa zaregistrujú automaticky:

```bash
composer require roundly-consulting/webhooks-for-laravel
php artisan webhooks:install      # config + webhooks migrations + sentinel migrations
php artisan migrate
```

webhooks:install zverejní konfiguráciu, päť migrácií webhookov a migrácie Sentinelu — deduplikácia prichádzajúcich správ a idempotentný middleware jobov používajú tabuľku sentinel\_idempotency\_keys. Migrácie sa z balíka nenačítavajú: pred migráciou ich zverejnite (inštalátor to urobí). Ak majú vlastníci alebo tabuľky balíka používať kľúče uuid či ulid, nastavte najprv webhooks.key\_type a webhooks.primary\_key\_type (pozrite Konfigurácia).

## Tagy na zverejnenie

| Tag | Čo |
| --- | --- |
| `webhooks-config` | config/webhooks.php |
| `webhooks-migrations` | Päť migrácií s časovou pečiatkou pri zverejnení. |
| `webhooks-translations` | lang/vendor/webhooks/{en,sk}: commands, enums, exceptions, problems (nadpisy odmietnutí). |
| `webhooks-routes` | routes/webhooks.php — súbor prichádzajúcej trasy; načíta sa zverejnená kópia. |

```bash
php artisan vendor:publish --tag=webhooks-translations
```

## Prvý prijatý webhook

Jeden endpoint na odosielateľa. Odosielateľovi dajte URL adresu a tajný kľúč — ten sa zobrazí len raz:

```php
use RoundlyConsulting\Webhooks\Facades\Webhooks;

$inbound = Webhooks::for($team)->inbound()->create(handler: 'billing');
$inbound->url;     // https://app.test/webhooks/q8Zr…  (an unguessable 32-character key)
$inbound->secret;  // whsec_…  — never readable again
```

Alias handlera naviažte v config/webhooks.php a napíšte handler:

```php
// config/webhooks.php
'handlers' => ['billing' => App\Webhooks\BillingWebhookHandler::class],
```

```php
use RoundlyConsulting\Webhooks\Contracts\InboundHandler;
use RoundlyConsulting\Webhooks\DataTransferObjects\InboundWebhook;

final class BillingWebhookHandler implements InboundHandler
{
    public function handle(InboundWebhook $webhook): void
    {
        if ($webhook->type === 'invoice.paid') {
            // runs on the queue, once per delivery
        }
    }
}
```

## Prvý odoslaný webhook

URL adresa patrí príjemcovi vášho zákazníka — doručenie je podpísané, opakované, obmedzené a chránené pred SSRF. Ochrana adresu preloží už pri uložení endpointu, preto použite skutočnú https adresu, ktorá sa preloží na verejného hostiteľa; vymyslené meno sa odmietne:

```php
// $url — the https address your customer entered for their own receiver.
// The SSRF guard resolves it on save: it must be a public host that resolves.
$outbound = Webhooks::for($team)->outbound()->create($url, events: ['invoice.*']);
$outbound->secret; // whsec_… — hand it to the receiver once

Webhooks::send($outbound->endpoint, 'invoice.paid', ['invoice' => 42]);
```

## Worker frontu a plánovač

Doručenia sa spracúvajú len vo fronte: prichádzajúca trasa odpovie 202 a skončí, handler beží v ProcessInboundDelivery a každý odchádzajúci pokus v DeliverWebhook. Spustite worker pre webhooks.queue.connection a jeho fronty a spustite plánovač Laravelu — provider plánuje webhooks:retry každú minútu a webhooks:prune denne, oba s withoutOverlapping()->onOneServer(). Obmedzené a dlho odložené doručenia posúva ďalej len webhooks:retry.

- retry\_after spojenia musí byť dlhší ako DeliverWebhook::$timeout (celkový limit odosielania + 20 s) aj ako inbound.handler.timeout — webhooks:doctor kontroluje oboje.
- Úložisko http-client-rate-limits musí byť zdieľané (cache alebo redis), aby obmedzenie na endpoint platilo naprieč workermi; predvolené úložisko v pamäti platí len v rámci procesu.
- Cache úložisko prichádzajúcich limitérov a úložisko idempotencie Sentinelu musia byť zdieľané — nikdy array.
- Front sync funguje pre testy a malé aplikácie, no spracovanie potom beží v požiadavke; webhooks:doctor upozorní.

## Za proxy a limit tela

Za load balancerom alebo CDN nastavte dôveryhodné proxy Laravelu: strážca odmietnutí počíta podľa endpointu a IP klienta a bez nich by všetci odosielatelia zdieľali IP proxy.

```php
// bootstrap/app.php — behind a load balancer or a CDN
->withMiddleware(function (Middleware $middleware): void {
    $middleware->trustProxies(at: [/* your proxies */]);
})
```

Request::capture() v Laraveli prečíta a dekóduje celé telo JSON požiadavky ešte pred akýmkoľvek middleware, trasou či kódom balíka — kontrola 256 KB v balíku obmedzuje prácu s podpisom a ukladanie, nie toto prvé čítanie. Obmedzte preto telo na webovom serveri pre prefix prichádzajúcej trasy: nginx client\_max\_body\_size (alebo Apache LimitRequestBody) mierne nad inbound.max\_payload\_bytes\_ceiling (1 MB).

## Kontrola nastavenia

```bash
php artisan webhooks:doctor
```

Odhalí spracovanie v požiadavke, nestále úložiská limitérov a idempotencie, zastavený pravidelný beh opakovaní a ďalšie — pozrite Príkazy Artisan.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/webhooks-for-laravel.md)
