NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Purchases for Laravel

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=purchases

So 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;         // ?Carbon

Replay

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 date

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

Odoslaní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.