---
title: "DI a akcie — Purchases for Laravel | Roundly"
description: "Namiesto fasády injektujte PurchasesManager alebo spustite akciu za handle(), sync() či replay() — vždy beží ten istý kód."
url: https://roundly-consulting.com/sk/open-source/navody/purchases-for-laravel/bez-fasady
language: sk
---

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

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

# DI a akcie

K dispozícii sú tri rovnocenné vstupné body a všetky spúšťajú ten istý kód. Fasáda je najkratšia a odporúčaná voľba. RoundlyConsulting\\Purchases\\PurchasesManager — koreň fasády, singleton v kontajneri — poskytuje identické API ako explicitnú závislosť v konštruktore, bez statických volaní. A každá metóda, ktorá ukladá, je len tenké volanie jednoúčelovej akcie s metódou execute(), ktorú môžete skladať do vlastných jobov, príkazov či akcií:

```php
use RoundlyConsulting\Purchases\Actions\HandleProviderResultAction;
use RoundlyConsulting\Purchases\Actions\ReplayProviderNotificationAction;
use RoundlyConsulting\Purchases\Actions\SyncProviderResultAction;
use RoundlyConsulting\Purchases\PurchasesManager;

final class GrantEntitlement
{
    public function __construct(private PurchasesManager $purchases) {}

    public function __invoke(ProviderResult $result, User $user): bool
    {
        $this->purchases->sync($result);

        return $this->purchases->for($user)->subscribedTo('pro');
    }
}

// The raw actions — the same code the manager calls:
app(SyncProviderResultAction::class)->execute($result);                // = Purchases::sync()
app(ReplayProviderNotificationAction::class)->execute($notification);  // = Purchases::replay()
app(HandleProviderResultAction::class)->execute(                       // = Purchases::handle()
    app(PurchasesManager::class)->result('stripe', $request),
);
```

## Metóda fasády → akcia

| Metóda fasády | Akcia | Vstup |
| --- | --- | --- |
| `handle()` | `HandleProviderResultAction` | Overený ProviderResult — najprv zavolajte result(). |
| `sync()` | `SyncProviderResultAction` | `ProviderResult` |
| `replay()` | `ReplayProviderNotificationAction` | PurchaseNotification alebo jej id. |
| `result(), for(), provider(), providers(), has(), ids()` | — | Žiadna akcia — overenie u poskytovateľa, vyhľadanie a čítanie. |

Purchases::fake() nahradí PurchasesManager v kontajneri aj za fasádou. Webhook controller a príkazy purchases:providers, purchases:verify a purchases:replay manažéra injektujú, takže fake sa dostane aj k nim — a k vašim vlastným službám, ktoré ho injektujú.

## Interné stavebné bloky

RecordProviderResultAction, RecordPurchaseAction, RecordSubscriptionAction, RecordRefundAction a RecordProviderNotificationAction sú interné (@internal) stavebné bloky handle() a sync(). Z kódu aplikácie ich nevolajte — použite fasádu, manažéra alebo tri verejné akcie vyššie, ktoré sa postarajú aj o auditný záznam a udalosti.

## 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/purchases-for-laravel.md)
