Fronta, auditný log a replay
Spracovanie na pozadí
Nastavte PURCHASES_QUEUE_ENABLED=true, ak chcete overovať synchrónne, no ukladať cez frontu. Webhook aj tak odpovie 204 okamžite; úloha ProcessProviderNotification uloží výsledok na nakonfigurovanom spojení a fronte a označí auditný záznam ako spracovaný. Predvolená je synchrónna cesta:
PURCHASES_QUEUE_ENABLED=true
PURCHASES_QUEUE_CONNECTION=redis
PURCHASES_QUEUE_NAME=purchasesSo zapnutou frontou vracia handle() PurchaseNotification, ktorý opisuje, čo sa zaradilo do fronty — alebo neuložený zástupný objekt, ak je auditný log vypnutý.
Auditný log
Pri PURCHASES_AUDIT_ENABLED=true (predvolene) sa každá overená notifikácia uloží do purchase_notifications — poskytovateľ, typ, príznak overeného podpisu, snapshot normalizovaného výsledku a pôvodného payloadu a processed_at — ešte predtým, než sa premietne do stavu modelov. Rovnako aj každý výsledok odovzdaný do Purchases::sync(), so signature_verified false a pôvodom host, pretože ho balík nikdy neoveroval (vyhľadáte ho cez where('payload->origin', 'host')):
use RoundlyConsulting\Purchases\Models\PurchaseNotification;
PurchaseNotification::forProvider('apple')->pending()->get(); // recorded, not yet processed
$notification->provider; // 'apple'
$notification->type; // 'subscription', 'purchase', 'refund' …
$notification->signature_verified; // bool — false for a sync() row
$notification->origin(); // NotificationOrigin::Provider, or ::Host for a sync() row
$notification->payload; // Collection — the stored snapshot
$notification->processed_at; // ?CarbonReplay
purchases:replay vyberie uložené notifikácie a každú znova spracuje cez Purchases::replay() — vrátane udalostí —, takže sa zotavíte z chyby v nadväzujúcom kroku bez čakania, kým obchod niečo pošle znova. Notifikáciu, ktorú spracovať nesmie alebo nemôže (notifikácia poskytovateľa s neovereným podpisom alebo snapshot, ktorý sa už nedá obnoviť), vypíše ako preskočenú a pokračuje ďalej; záznamy z sync() sa spracujú:
php artisan purchases:replay # every stored notification
php artisan purchases:replay 42 # a single notification by id
php artisan purchases:replay --provider=stripe # one provider
php artisan purchases:replay --since=2026-01-01 # recorded on or after a datePrejavte 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.