answear/econt-pickup-point-bundle
Econt pickup point integration for Symfony: fetch offices and cities from the Econt nomenclatures API via simple command classes. Install with Composer, add credentials in config, and query offices or cities in a few lines of PHP.
Feature-level (checkout delivery experience)
GetCities) and Econt offices/pickup points (GetOffices), which is exactly the data needed to render a "choose your delivery office" widget.Roadmap
Build vs buy
getCities, getOffices) wrapped in typed request/response objects, MIT-licensed. Rebuilding this is a day of work but not a day of value.Use cases that fit
Important reality check for the decision record
symfony/http-kernel, symfony/serializer, and bundle registration via AnswearEcontBundle::class). In a Laravel codebase you would be extracting the DTOs and the HTTP client, not installing it — that changes the effort estimate and the ownership story.http to https. This is a one-line fix, but it is a security-relevant one: on every earlier release the client sent Econt basic-auth credentials over cleartext HTTP. Two consequences for the decision record: (a) if anyone pilots this, the floor is >=4.2.1, and (b) anyone who already vendored/extracted an earlier version must patch the base URL themselves — nothing else in the API surface changed.4.2.1 tag date, since the release history now has a genuine superseding version.Adopt (or vendor) it when:
php ^8.4, symfony/http-kernel ^7.0.3, symfony/serializer ^7.0.3, guzzlehttp/guzzle ^7.8.2). Older PHP/Symfony means forking or not using it.>=4.2.1 (or backport the http→https change into your fork). Anything below that transmits the configured user/password in the clear.GetOffices, GetCities). If that's your requirement, the package matches it exactly.config/packages/answear_econt.yaml (user/password).EcontPickupPointProvider in your domain layer — so the transport, DTO shapes, and vendor risk never leak into checkout code. This is the recommended adoption posture.require-dev. Forking is cheap and legitimate here.Look elsewhere / do not adopt when:
AnswearEcontBundle, ConfigProvider, service container config) is dead weight. Extract the request/response classes and the Guzzle client into your own package (with the https base URL), or just call the Econt Nomenclatures API directly — it is a public, documented JSON API and two endpoints do not justify a dependency.OpeningHours defaults to null (per 1.2.1), and the README shows no pagination, filtering, or reconciliation guidance for the office list. Plan to validate and normalize on ingest.webmozart/assert, Guzzle PSR-7) in a checkout path needs a named owner — and where a transport-layer patch landing only in a 4.2.x point release is itself the risk signal. Assign an owner, or don't ship it.Decision rule of thumb: the integration effort saved is roughly one to three engineer-days. That is small enough that the deciding factor should be your stack fit and your ownership appetite — not the package's feature set. If you're on Symfony 7/PHP 8.4 and need city+office data, vendor it behind an interface at >=4.2.1. If you're on Laravel, on an older runtime, or need anything beyond a lookup, write the ~200 lines yourself against the public API — you will get https support on day one rather than three point releases later.
For executives (30 seconds)
>=4.2.1, and cache the data locally so a third-party outage or an abandoned repo cannot break checkout.For engineering leads
getCities() and getOffices() on top of the Econt Nomenclatures API, Guzzle 7 transport, Symfony Serializer DTOs. Nothing else is in scope — no pricing, labels, tracking, or order lifecycle. 4.2.1 changes scope not at all.ANS-23780, first-time contributor) switching the endpoint scheme from http to https. No API, DTO, config, or signature changes; no deprecations; no migration required beyond bumping the constraint. If we have already forked or extracted the client, apply the same one-line patch ourselves and record it against our fork.>=4.2.1, run roave/security-advisories in CI, add contract tests against a recorded Econt response (asserting the https base URL so the scheme never regresses in our fork), put the vendor call behind a feature flag, and re-verify the previously flagged future-dated release tag against the 4.2.1 tag date.How can I help you explore Laravel packages today?