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 a obdobia odkladu platby (grace period). Balík je pod licenciou MIT a stojí len na HTTP klientovi Laravelu a vlastných balíkoch Roundly pre kryptografiu, enumy a peniaze — 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, ukladajte cez frontu a uložené notifikácie znova spracujte jedným príkazom.
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
Desať udalostí životného cyklu — nákupy, predplatné, obdobie odkladu, refundácie a chargebacky — každá nesie model aj výsledok.
Modely a trait vlastníka
Šesť 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.
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 12 alebo 13 a balíky Roundly pre kryptografiu, enumy a peniaze — 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.