Open source
Purchases for Laravel
composer require roundly-consulting/purchases-for-laravelPrehľad
Jednotná sada nástrojov pre in-app nákupy a platby v Laraveli: jedno API pre nákupy a predplatné z Apple App Store, Google Play a Stripe. Podpísané dáta každého obchodu natívne overí, dekóduje do jedného výsledku nezávislého od poskytovateľa, uloží ako Eloquent modely a spustí udalosti životného cyklu, na ktoré môžete reagovať — vrátane refundácií, chargebackov, obdobia odkladu platby (grace period) a pozastaveného predplatného — a fakturuje cez Stripe: zákazníci, predplatné na miesta, podľa spotreby aj so zmiešanými intervalmi, skúšobné obdobie bez karty a Customer Portal. Balík je pod licenciou MIT a stojí len na HTTP klientovi Laravelu a vlastných balíkoch Roundly pre kryptografiu, enumy, peniaze a package-toolkit — bez stripe/stripe-php, bez google/apiclient, bez SDK tretích strán.
Čo získate
Jedno API, tri obchody
Apple App Store, Google Play a Stripe za jednou fasádou Purchases — overenie, dekódovanie a uloženie jedným volaním.
Natívne overovanie
ES256 JWS s pripnutými certifikátmi Apple, OAuth2 JWT-bearer grant pre Google a HMAC webhooky Stripe — bez SDK.
Jednotný výsledok
Každý payload sa mapuje na jeden ProviderResult: typ, stav, cena, dátumy, položky aj pôvodné dáta.
Modely, scopy a udalosti
Nákupy, predplatné a refundácie ako Eloquent modely s udalosťami životného cyklu vrátane obdobia odkladu a chargebackov.
Presné peniaze
Ceny ako Money s ľubovoľnou presnosťou v najmenších jednotkách meny, prevedené podľa pravidiel každého obchodu.
Audit, fronta a replay
Zaznamenajte každý overený payload, spracujte každú udalosť obchodu len raz, ukladajte cez frontu a uložené notifikácie znova spracujte jedným príkazom.
Fakturácia cez Stripe
Zákazníci, predplatné na počet miest aj podľa spotreby, plány so zmiešanými intervalmi, skúšobné obdobie bez karty, jedno predplatné na vlastníka, merače spotreby a Customer Portal.
Fasáda, DI alebo akcie
Jedna fasáda Purchases nad injektovateľným PurchasesManager a verejnými akciami, plus zaznamenávajúci fake, v ktorom beží skutočný pipeline.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie migrácií (len cez publish) a voliteľne konfigurácie a súboru webhook rout.
Konfigurácia
Každý konfiguračný kľúč a env premenná — modely, poskytovatelia, audit, fronta, webhook routy a prístupové údaje Apple, Google a Stripe.
Fasáda Purchases
Všetky metódy fasády Purchases — result() a handle() pre požiadavky, sync() a replay() pre hotové výsledky, for($owner) a vyhľadanie poskytovateľov.
DI a akcie
Namiesto fasády injektujte PurchasesManager alebo spustite akciu za handle(), sync() či replay() — vždy beží ten istý kód.
Jednotný výsledok
Každý poskytovateľ sa mapuje na jeden ProviderResult — typ, stav, identifikátory, cena, dátumy, položky a pôvodný payload obchodu.
Ukladanie výsledkov
Ako handle(), sync() a replay() premenia výsledok na Purchase, Subscription alebo PurchaseRefund — s auditom, idempotentne, udalosti len pri zmene.
Udalosti
Štrnásť udalostí — nákupy, predplatné, obdobie odkladu, pozastavenie a obnovenie, refundácie, chargebacky a signály Stripe o skúšobnom období a platbe.
Modely a trait vlastníka
Sedem vymeniteľných Eloquent modelov, trait HasPurchases pre vlastníka, scopy a pomocníky predplatného a databázová schéma.
Peniaze a ceny
Ceny ako Money z money-for-laravel s ľubovoľnou presnosťou, uložené v dvoch stĺpcoch a presne prevedené z formátu každého obchodu.
Refundácie a chargebacky
Refundácie a spory z Apple, Google a Stripe sa dekódujú do záznamov PurchaseRefund prepojených s nákupom, ktorý rušia.
Apple App Store
Overujte podpísané serverové notifikácie App Store, vyhľadávajte transakcie cez App Store Server API a mapujte stavy Apple.
Google Play
Overujte jednorazové produkty a nákupy subscriptionsv2, automaticky ich potvrdzujte a dekódujte real-time developer notifikácie.
Stripe
Overujte podpisy webhookov Stripe natívne, mapujte udalosti platieb, predplatného, faktúr a sporov a čítajte REST objekty.
Fakturácia cez Stripe
Fakturácia v Stripe — zákazníci, predplatné na miesta aj podľa spotreby, zmiešané intervaly, skúšobné obdobie bez karty, jedno na vlastníka, merače.
Callbacky z klienta
Overte, čo pošle klient — účtenku Apple, token Google, session id zo Stripe — a rozlíšte chybný vstup od výpadku obchodu či prístupových údajov.
Overovanie podpisov a dôvera
Ako sa overuje podpis každého obchodu — primitíva z crypto-for-laravel, pripnuté certifikáty Apple a validovaná tolerancia posunu hodín.
Webhook routy
Voliteľný endpoint POST /purchases/webhooks/{provider}, ktorý overí, uloží, spustí udalosti a odpovie 204.
Fronta, auditný log a replay
Ukladajte overené notifikácie cez frontu, veďte auditný log každého payloadu a znova ho spracujte príkazom purchases:replay.
Vlastní poskytovatelia
Pridajte vlastného platobného poskytovateľa implementáciou kontraktu Provider a vrátením GenericResult.
Enumy a výnimky
Enumy Status a ResultType s pomocníkmi pre výberové zoznamy a validáciu, ako aj typy výnimiek balíka.
Artisan príkazy
Inštalujte a nastavte poskytovateľov, vypíšte ich pripravenosť, overte prístupové údaje priamo v obchodoch a znova spracujte notifikácie.
Testovanie
Testujte nákupné toky bez skutočných platieb a sieťových volaní — Purchases::fake() zaznamená handle(), sync() aj replay(); FakeResult a PayloadFactory.
Požiadavky
PHP 8.4+ s ext-bcmath, Laravel 13 a balíky Roundly pre kryptografiu, enumy, peniaze a package-toolkit — bez SDK tretích strán.
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.