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

Enumy a výnimky

Status je normalizovaný stav ukladaný na nákupoch a predplatnom:

PrípadHodnotaZachová prístup
NewnewNie
PendingpendingNie
ProcessingprocessingNie
CompletedcompletedÁno
FailedfailedNie
CanceledcanceledNie
InGracePeriodin_graceÁno
OnHoldon_holdNie
RefundedrefundedNie

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ípadHodnotaVýznam
PurchasepurchaseJednorazový nákup — uloží sa ako Purchase.
SubscriptionsubscriptionPredplatné — uloží sa ako Subscription.
RefundrefundRefundácia alebo chargeback — uloží sa ako PurchaseRefund.
NotificationnotificationNotifikácia obchodu bez transakcie.
UnknownunknownNerozpoznaný 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 access

Výnimky

VýnimkaKedy nastane
VerificationExceptionZlyhá overenie podpisu alebo prístupových údajov — aj pri certifikáte Apple mimo obdobia platnosti. Webhook routa vráti 400.
InvalidConfigurationExceptionHodnota 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.
UnknownProviderExceptionVyhľadáva sa poskytovateľ, ktorý nie je zaregistrovaný.
InvalidProviderNotificationExceptionPayload 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 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.