recurly/recurly-client
Official PHP client for Recurly's V3 API. Install via Composer (recurly/recurly-client), create a client with your API key, and access billing, subscription, and account operations in one place. Supports EU region and PSR-3 logging.
\Recurly\Client with methods for all API operations, PSR-3 logging, pagination via a Pager that implements Iterator, and structured error exceptions. It does not ship with Laravel-specific bindings (service provider, facade, config), so integration requires a thin wrapper. For a Laravel/PHP application already committed to Recurly for subscription billing, this is a natural fit because it is the official SDK and handles auth, pagination, response metadata, and typed errors.recurly/recurly-client:^4). Initialisation requires only an API key and optional region (eu). The client can be bound as a singleton in a Laravel service provider using environment-based configuration. The absence of dependents (0) and a modest star count (172) suggests limited community validation, but official maintenance and generated releases reduce the risk of abandonment. The future-dated last release (2026-10-22) should be verified; the changelog shows a high, mostly automated release cadence (“Generated Latest Changes”), which implies frequent minor updates but low manual churn.RECURLY_API_KEY and RECURLY_REGION from environment, bind \Recurly\Client as a singleton, and inject it where needed. A facade is optional but improves developer ergonomics. No database migrations or frontend changes are required from the package itself.getResponse()->getRateLimitRemaining(). (4) Add automated tests with a mocked HTTP layer or Recurly’s test credentials. (5) Integrate into core flows (signup, billing portal, invoice retrieval). (6) Build a separate webhook endpoint with signature verification. (7) Roll out to staging, then production with monitoring.getCount() support efficient large-dataset traversal. Rate limits are exposed via response headers, but the client does not throttle or retry automatically—implement backoff and queueing for bulk operations. For high-volume billing flows, consider asynchronous processing (queues) to avoid blocking user requests.Validation, NotFound, and base RecurlyError to differentiate user-facing vs. system errors. Log request IDs from getResponse()->getRequestId() for troubleshooting, but never log full requests/responses containing PII. Implement idempotency keys for create operations to prevent duplicate charges. Monitor rate-limit headers and alert on low remaining counts. Webhook processing must be idempotent and independently verified.How can I help you explore Laravel packages today?