Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Push Laravel Laravel Package

asundust/push-laravel

A Laravel package that wraps the asundust/push library to send notifications through multiple push providers. Config-driven setup and a simple facade make it easy to fire alerts, system messages, and on-demand notifications from your app.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. asundust/push-laravel is a thin Laravel wrapper around asundust/wechat-work-push — a WeCom (企业微信 / WeChat Work) messaging SDK. Architecturally that is the correct shape for Laravel: a service provider, a publishable config file, and a facade that resolves out of the container, so it slots into controllers, queued jobs, and events without bespoke plumbing. The important caveat is that most of the real risk does not live in this package — it lives in the upstream SDK it wraps and in WeCom's HTTP API. A TPM should treat the adoption decision as "do we standardize on WeCom push, and is this wrapper an acceptable convenience layer over the upstream SDK?" rather than "do we adopt this package?"

Integration feasibility. High effort-wise, low evidence-wise. Composer install plus config publish plus env credentials is a few hours of developer time. But the documentation is one-line release notes and a marketing-style description in Chinese; there is no README guidance in this workspace, no CI matrix, no examples of token caching, retry behavior, or error handling. We can integrate, but we cannot validate from the artifacts that the package handles WeCom edge cases correctly.

Technical risk.

  • Adoption and bus-factor risk. Four stars and a single maintainer. This is a micro-package; abandonment is a real scenario, mitigated only by MIT licensing (fork-and-vendor is viable).
  • The description over-promises. It says "push notifications" generically; it is specifically a WeCom client. Teams skimming the description could adopt it expecting APNs/FCM-style push. That mis-adoption risk needs to be corrected in our internal catalog entry.
  • Upstream dependency exposure. The wrapper's behavior is bounded by asundust/wechat-work-push. If that package lags WeCom API changes (token semantics, message type additions, template cards), this wrapper inherits the lag.
  • Version support is asserted, not demonstrated. The 1.0.3 note says "supports Laravel 11" with no support matrix, no PHP floor statement, no confirmation that Laravel 9/10 remain supported, and no changelog beyond the one line.
  • Secret handling is our responsibility. Corp ID / corp secret handling, IP whitelisting on the WeCom side, and config caching (php artisan config:cache) are operational concerns the package cannot solve for us.

Key questions for the maintainer (or answered by inspecting composer.json).

  1. What is the exact supported Laravel and PHP matrix as of 1.0.3, and are Laravel 9/10 still supported?
  2. What version of asundust/wechat-work-push is pinned, and how actively is that upstream maintained?
  3. Does the package handle WeCom access-token acquisition, caching, and expiry/retry (e.g. error 42001), or does it expect the caller to manage tokens?
  4. Which message types are supported — text, markdown, textcard, news, file, template_card — and is there an escape hatch for unsupported types?
  5. Does it integrate as a first-class Laravel Notification channel, or is it only a facade call?
  6. How are WeCom error codes surfaced — exceptions, return values, or silent failures?

Integration Approach

Stack fit. Good if and only if the business need is WeCom messaging (internal employee notifications, alerting, approval workflows) inside a Laravel 10/11 application. It is a poor fit for anything resembling consumer mobile push. Before committing, confirm the target audience is WeCom users and that the organization already has a WeCom tenant with a self-built app and agentid provisioned — that provisioning is typically the longest lead-time item in the whole project, and it is not a package concern.

Migration path. Low-effort, verify-first:

  1. Inspect the package composer.json for Laravel/PHP constraints and the pinned upstream SDK version — this answers most of the support-matrix questions without waiting on the maintainer.
  2. Install into a staging branch, publish config, set sandbox WeCom credentials, and send a single text message end-to-end.
  3. Diff the lockfile to see exactly which transitive packages moved.
  4. Exercise the failure paths deliberately: invalid touser, expired token, rate-limit response, WeCom API 5xx.

Compatibility. Two layers to verify: Laravel/PHP compatibility of the wrapper (see 1.0.3 caveats) and WeCom API compatibility of the upstream SDK. The wrapper is a patch-level release, so treat any change beyond constraint widening — a moved transitive dependency, a changed config key — as a review gate.

Sequencing.

  1. Week 0 — Decouple from the package. Define a small internal interface (NotificationSender or a Laravel Notification channel) that the rest of the codebase depends on. All calls go through it. This is the single highest-leverage step: it converts the package from an architectural dependency into an implementation detail we can swap or fork.
  2. Week 0 — Provision WeCom. App creation, secret issuance, IP whitelist, and test user groups — do this in parallel, it is the real critical path.
  3. Week 1 — Pilot one non-critical notification (e.g. deploy announcements) in staging, then production.
  4. Week 2+ — Expand to business-critical alerts only after token handling, retries, and error surfacing are proven.
  5. Treat the Laravel 11 upgrade as a separate, independently scheduled workstream — do not couple the WeCom rollout to a framework upgrade.

Operational Impact

Maintenance. The bus factor is one. The 1.0.3 release in March 2024 shows the maintainer is at least tracking Laravel majors, which is a positive signal, but the release hygiene is thin enough that we should not assume future Laravel 12 support arrives on time. Mitigation: vendor the package (MIT permits this) or keep our abstraction layer thin enough that replacing it costs days, not weeks. Budget a recurring line item to re-review the package at each Laravel major.

Support. Little to no English-language community, no issue-tracker evidence, no runbook. Internal support burden is therefore front-loaded onto the adopting team: someone must own WeCom token lifecycle knowledge, error-code interpretation, and the abstraction layer. Document the WeCom-side configuration (corp ID, agent ID, IP whitelist) in our own runbook — it will not be found upstream.

Scaling. Runtime scaling is not a package concern. The constraints are WeCom's API rate limits per app/agent and access-token request quotas. The package advertises queue-friendliness, which is correct and necessary — but queue throughput, worker concurrency, retry/backoff, and dead-letter handling are ours to implement. Design for: one shared token cache (not per-worker), bounded concurrency against WeCom, and idempotency keys so a retried job does not double-send. Organizationally, if several applications need WeCom messaging, standardize on this wrapper behind our abstraction so the token and retry logic is written once.

Failure modes to plan for.

  • Silent delivery failure. WeCom accepts the request but returns per-user errors for invalid/ departed user IDs. If the wrapper does not surface them, alerts vanish. Mitigation: assert on response codes in the pilot; log every send with correlation ID.
  • Token expiry / quota exhaustion surfacing as intermittent 42001-class errors under load. Mitigation: centralized token cache, retry-with-refresh.
  • IP whitelist changes breaking production with no code change. Mitigation: runbook entry and alerting on auth failures.
  • Package abandonment. Mitigation: abstraction layer + vendoring option + a documented fork path.
  • Mis-adoption for non-WeCom push. Mitigation: correct the internal catalog entry; this is not a general push package.
  • Secret leakage via committed config or verbose logging. Mitigation: env-only credentials, config caching, log scrubbing.

Ramp-up. Low for any Laravel developer — the API is a facade call. The real learning curve is WeCom domain concepts (corpid, corpsecret, agentid, touser/toparty, message types, error codes), which is a day of focused reading and a sandbox tenant. Estimate: 2–3 days for pilot integration including the abstraction layer, 1 week to production-grade with retry/token/observability work. The TPM action is to treat WeCom tenant provisioning as the schedule driver, not the package install, and to require the abstraction layer as a non-negotiable acceptance criterion before rollout.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tobya/saloonfire
kjmtrue/laravel-debugbar
hexincorp/debugbar
razorbacks/laravel-shibboleth
adilazhari/laravel-idempotency
mamitech/laravel-slow-query-log
mamitech/laravel-http-logger
medeirosrafael/docxmustache
webdevlabs/phreak
vis/log-envelope
digitickets/lalit
acacha/names
scool/foundation
frankkessler/guzzle-oauth2-middleware
delatbabel/site-config
delatbabel/applog
eusonlito/laravel-gettext
henzeb/housepedia-intelligence-laravel
aliqsm/laravel-authkit
itsjustvita/laravel-wp-migrator