Enumy a výnimky
Status je normalizovaný stav ukladaný na nákupoch a predplatnom:
| Prípad | Hodnota | Zachová prístup |
|---|---|---|
New | new | Nie |
Pending | pending | Nie |
Processing | processing | Nie |
Completed | completed | Áno |
Failed | failed | Nie |
Canceled | canceled | Nie |
InGracePeriod | in_grace | Áno |
OnHold | on_hold | Nie |
Refunded | refunded | Nie |
Status::isActive() vracia true len pre Completed a InGracePeriod — stavy, ktoré zachovávajú nárok na prístup. Riadi sa ním Subscription::isActive() aj scope active().
ResultType
| Prípad | Hodnota | Význam |
|---|---|---|
Purchase | purchase | Jednorazový nákup — uloží sa ako Purchase. |
Subscription | subscription | Predplatné — uloží sa ako Subscription. |
Refund | refund | Refundácia alebo chargeback — uloží sa ako PurchaseRefund. |
Notification | notification | Notifikácia obchodu bez transakcie. |
Unknown | unknown | Nerozpoznaný payload. |
Výberové zoznamy a validácia
Oba enumy používajú trait Helpers z enums-for-laravel, takže filtre a formuláre v administrácii nepotrebujú vlastné polia ani jazykové súbory:
use RoundlyConsulting\Purchases\Enum\Status;
Status::options(); // list of {value, label, name} option DTOs for select inputs
Status::toOptions(); // ['completed' => 'Completed', 'in_grace' => 'In Grace', …]
Status::labels(); // human strings incl. "In Grace" / "On Hold" (no lang files)
Status::validationRule(); // "in:new,pending,processing,completed,failed,canceled,in_grace,on_hold,refunded"
$status = Status::tryFromLabel('On Hold'); // Status::OnHold
$status?->isActive(); // false — an account hold keeps no accessVýnimky
| Výnimka | Kedy nastane |
|---|---|
VerificationException | Zlyhá overenie podpisu alebo prístupových údajov — aj pri certifikáte Apple mimo obdobia platnosti. Webhook routa vráti 400. |
InvalidConfigurationException | Hodnota v konfigurácii je nepoužiteľná — certificate_clock_skew mimo 0–3600, trvanie, ktoré nie je celé číslo, URL či názov fronty, ktoré nie sú reťazcom, poskytovateľ, ktorý neimplementuje Provider. Zámerne nie VerificationException — chybná konfigurácia nie je podvrhnutá notifikácia. |
UnknownProviderException | Vyhľadáva sa poskytovateľ, ktorý nie je zaregistrovaný. |
InvalidProviderNotificationException | Payload notifikácie sa nedá dekódovať — alebo replay() notifikáciu odmietne (neuložená alebo soft-delete zmazaná, notifikácia poskytovateľa s neovereným podpisom alebo taká, ktorú už nemožno obnoviť). |
Všetky dedia z RoundlyConsulting\Purchases\Exceptions\Exception, ktorá pridáva pomenovaný konštruktor because(string $message, int $code = 0):
use RoundlyConsulting\Purchases\Exceptions\UnknownProviderException;
use RoundlyConsulting\Purchases\Exceptions\VerificationException;
use RoundlyConsulting\Purchases\Facades\Purchases;
try {
$result = Purchases::result('stripe', $request);
} catch (VerificationException $e) {
abort(400, $e->getMessage());
} catch (UnknownProviderException) {
abort(404);
}Výnimkou sú preklepy v konfigurácii, ktoré zachytí package toolkit: nečitateľný prepínač zapnuté/vypnuté (okrem autentifikácie pushov), key_type mimo bigint, uuid a ulid a trieda v models.*, ktorá nie je modelom balíka ani jeho podtriedou, vyhodia RoundlyConsulting\PackageToolkit\Exceptions\InvalidConfigurationException, ktorá nededí zo základnej výnimky balíka. Rovnako ako vlastná InvalidConfigurationException balíka uvádza názov kľúča.
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.