Tržba je Money z money-for-laravel zabalené v DTO Revenue, takže suma je presná v akejkoľvek veľkosti a nikdy neprejde cez float:
use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Plausible\DataTransferObjects\Revenue;
Revenue::of('49', 'eur'); // {"currency":"EUR","amount":"49.00"}
Revenue::of('1500', 'JPY'); // {"currency":"JPY","amount":"1500"}
Revenue::make(Money::ofMinor(1299, 'USD')); // {"currency":"USD","amount":"12.99"}
Revenue::make($order->total); // any Money you already hold
Revenue::of('92233720368547758.08', 'USD'); // beyond int64 — sent exactlyNa udalosti
use RoundlyConsulting\Plausible\DataTransferObjects\Revenue;
use RoundlyConsulting\Plausible\Facades\Plausible;
use RoundlyConsulting\Plausible\Requests\Events\CaptureEventRequest;
// With the event() shortcut
Plausible::events()->fromRequest(request())->event(
'purchase',
url: 'https://my-site.com/checkout',
revenue: Revenue::make($order->total),
);
// Or on an explicit request, queued
Plausible::events()
->fromRequest(request())
->captureQueued(CaptureEventRequest::make(
site: 'my-site.com',
url: 'https://my-site.com/checkout',
name: 'purchase',
revenue: Revenue::of('49.00', 'EUR'), // or Revenue::make($order->total)
props: ['plan' => 'pro'],
));Pravidlá
- of() berie hlavné jednotky ako desatinný reťazec alebo int — variant pre float neexistuje.
- make() berie akékoľvek Money, ktoré už máte, napríklad sumu objednávky.
- Suma v payloade je desatinný reťazec meny (toDecimal()); Plausible ju prijíma ako reťazec.
- Revenue za vás nikdy nezaokrúhľuje — ak má hodnota viac desatinných miest, než mena pripúšťa, zaokrúhlite ju najprv cez money.
Validácia
Tržbu, ktorej Plausible nerozumie, potichu zahodí, preto sa čokoľvek neplatné odmietne vopred výnimkou RoundlyConsulting\Plausible\Exceptions\InvalidRevenue (PlausibleException); výnimka z money je dostupná cez getPrevious():
- neznámy alebo chybný kód meny (EURO);
- vlastná mena mimo ISO 4217, napríklad vernostné body — Plausible prevádza len ISO meny a tržbu by potichu zahodil;
- viac desatinných miest, než mena pripúšťa (12.999 USD);
- chybne zapísaná suma (1,50 alebo 1e3).
use RoundlyConsulting\Plausible\Exceptions\InvalidRevenue;
try {
Revenue::of('12.999', 'USD'); // more decimals than USD allows
} catch (InvalidRevenue $e) {
$e->getMessage(); // "Invalid revenue amount [12.999]: …"
$e->getPrevious(); // the underlying money-for-laravel exception
}
Revenue::of('49', 'EURO'); // InvalidRevenue — not a 3-letter ISO 4217 code
Revenue::of('1,50', 'EUR'); // InvalidRevenue — malformed amount
Revenue::of('1e3', 'EUR'); // InvalidRevenue — malformed amountPrejavte 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.