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í:
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 kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
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.