Billing Engine for Laravel
Extension points
Extension points
Every module is contracts-first: a contract in */Contracts, an in-memory default
bound in the module's service provider, and a durable or fake alternative you swap
in. Nothing in the library is final — you replace a binding, you don't fork.
In this section
| Page | What |
|---|---|
| Contracts & bindings | The one contract per module and how to rebind it. |
| Storage adapters | memory vs database per module, and the ClickHouse seam. |
| Payment gateways | Implement PaymentGateway and the webhook verifier. |
| Domain events | The billing lifecycle events you listen for instead of editing the engine. |
| Testing | The InteractsWith* traits and Fake* doubles. |