Inštalácia
Pridajte balík, potom publikujte a spustite migrácie. Service provider sa zaregistruje automaticky a Composer doinštaluje balíky Roundly pre kryptografiu, enumy, peniaze a package-toolkit, na ktorých je postavený:
composer require roundly-consulting/purchases-for-laravel
php artisan vendor:publish --tag="purchases-migrations"
php artisan migrateMigrácie sa dajú použiť len po publikovaní — balík ich nikdy nenačítava automaticky, takže samotné php artisan migrate nevytvorí nič, kým nepublikujete tag purchases-migrations. Opätovné publikovanie súbory prepíše na mieste, nevytvorí druhú kópiu. Migrácie idú len dopredu — nemajú down(), takže ich migrate:rollback preskočí; ak by ste tabuľky niekedy potrebovali odstrániť, zmažte ich sami.
Konfigurácia a routy
Konfiguračný súbor je voliteľný — každý kľúč má predvolenú hodnotu z env. Publikujte ho, ak chcete niečo prepísať, a súbor rout len vtedy, ak si pribalenú webhook routu chcete zapojiť sami:
php artisan vendor:publish --tag="purchases-config"
php artisan vendor:publish --tag="purchases-routes"Sprievodca inštaláciou
purchases:install publikuje konfiguráciu a migrácie a ponúkne ich spustenie. S prepínačom --providers sa opýta, ktorých poskytovateľov používate, a doplní do .env ich env kľúče — len tie, ktoré tam ešte nie sú, pretože neskorší prázdny duplikát by vyhral, takže opätovné spustenie nikdy nevymaže tajný kľúč, ktorý ste už vyplnili. Blok pre Google obsahuje aj kľúče na autentifikáciu pushov:
php artisan purchases:install
php artisan purchases:install --providers # choose providers, append their missing .env keysVyplňte prístupové údaje každého poskytovateľa — Stripe potrebuje PURCHASES_STRIPE_SECRET aj PURCHASES_STRIPE_WEBHOOK_SECRET — a overte ich príkazmi purchases:providers a purchases:verify (pozrite Artisan príkazy).
Vlastníci s UUID alebo ULID
Nákupy a predplatné patria vlastníkovi cez voliteľný polymorfný stĺpec owner. Ak vaše modely vlastníkov používajú primárne kľúče UUID alebo ULID, nastavte typ kľúča ešte pred spustením migrácií — všetky modely vlastníkov musia mať rovnaký typ kľúča. Iná hodnota ako bigint, uuid alebo ulid vyhodí InvalidConfigurationException s názvom kľúča, takže preklep migráciu zastaví namiesto toho, aby stĺpec owner dostal nesprávny typ kľúča:
# Set before running the migrations when owners use UUID or ULID keys
PURCHASES_KEY_TYPE=uuidBalík vystavuje tri publish tagy: purchases-config, purchases-migrations a purchases-routes.
Prechod z verzie 1.0
Vydania 1.1 menia niekoľko správaní, na ktoré sa vaša aplikácia môže spoliehať:
- Chybný identifikátor, token či účtenku od klienta z callback() zachytávajte ako VerificationException, nie RequestException — pri Stripe, Google aj Apple. RequestException obchodu vráti jej getPrevious(); pozrite Callbacky z klienta.
- Keď predplatné vytvorené pred zaplatením (Stripe incomplete, Google pending) prvýkrát začne platiť, spustí sa SubscriptionStarted — nie SubscriptionRenewed —, takže listenery prepájajúce vlastníka bežia aj pri predplatnom s 3D Secure a default_incomplete.
- Jednorazová faktúra Stripe uložená z invoice.paid nesie ako transaction_id PaymentIntent, ktorý ju uhradil, takže sa s ňou prepoja jej refundácie aj spory a prepnú ju na Refunded. Nastavte PURCHASES_STRIPE_SECRET.
- RTDN z Google pre inú aplikáciu (zdieľaná téma Pub/Sub) sa len zaznamená do auditu a dostane odpoveď 204, nikdy sa neuplatní.
- Refundácie zo Stripe a Google ukladajú refunded_at a dátumy od poskytovateľov si zachovajú skutočný okamih aj na serveri, ktorého app.timezone nie je UTC.
- purchases:providers hlási Stripe ako pripravený len s oboma kľúčmi a Google až vtedy, keď sa dajú autentifikovať jeho pushe.
- Testy: assertSubscriptionStarted() prejde, len keď sa SubscriptionStarted naozaj spustí — pre „prišiel výsledok predplatného“ použite assertSubscriptionRecorded() — a FakeResult používa jedno id ako identifikátor u poskytovateľa aj identifikátor transakcie.
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.