nexa-merchant/googleplaces
Nexa Merchant Google Places is a Laravel package that wraps the Google Places API, letting you search locations, fetch place details, autocomplete addresses, and integrate place data into PHP applications through a simple, fluent interface.
composer require nexamerchant/google-places and let Laravel auto-discover the service provider.php artisan vendor:publish --tag=googleplaces-config or the tag listed in the package README) so you have a local config/googleplaces.php to edit..env — typically GOOGLE_PLACES_API_KEY=... — and confirm the Places API (and any separate Places API (New) / Geocoding API you use) is enabled in the Google Cloud console for that key.php artisan config:clear.Given the current release line (V1.0.9, compared against V1.0.7), this is a patch-level package — treat the README and the config/googleplaces.php file as the source of truth for method names, since the public API surface may differ from other Google Places wrappers.
PlaceLookupService gives you one place to add caching, retries, and error normalisation, and makes it trivial to swap the package later.place_id through, not the raw query string.place_id or normalised address with a TTL of hours-to-days. Use a tagged cache store if you also need to bust it after data imports./api/places/autocomplete?q=..., debounce input (~250–300ms), and abort in-flight requests on new keystrokes.status field; map that into a small DTO or array shape your views expect so a package upgrade or API version bump doesn't ripple through your templates.RateLimited middleware or Redis::throttle), not in a request cycle.Http::fake() with recorded Google responses so tests assert your parsing and error handling without burning quota.REQUEST_DENIED. A key restricted to HTTP referrers won't work from server-side PHP; use IP restrictions for server calls, or a separate key per platform. Also confirm the specific API is enabled and that billing is active on the project.env() inside the package config are frozen once config:cache runs. Always read settings through config('googleplaces.…') in your own code, never env() directly.OK/ZERO_RESULTS, others an error_message. Handle ZERO_RESULTS as a valid empty state — don't surface it as a 500.photo_reference; you must construct a separate photo request (and typically proxy it) to render an image. Don't cache the reference indefinitely — they can expire.debug level behind a config flag; the package's exception messages are often less informative than Google's error_message. Check storage/logs/laravel.log and the Google Cloud console's quota/metrics page side by side.How can I help you explore Laravel packages today?