tourze/wechat-work-contact-way-bundle
Symfony bundle that brings WeChat Work (企业微信) contact way management to PHP apps. It wires configuration, services, and entity bindings to create and manage contact ways—QR-code channels for customers and group chats—via the WeChat Work API, simplifying customer acquisition and onboarding workfl...
composer require tourze/wechat-work-contact-way-bundle. This is a Symfony bundle, not a Laravel package, so expect to wire it manually if you stay in Laravel.vendor/tourze/wechat-work-contact-way-bundle/src/. Check DependencyInjection/Configuration.php for config keys, and any Service/ or Client/ classes for the actual API calls.corp_id, agent_id, secret, and callback token / encoding_aes_key if you handle events. In Symfony, register the bundle in config/bundles.php and create config/packages/tourze_wechat_work_contact_way.yaml.config/services.php. You may need to instantiate the Symfony container or use the classes directly if they have no container dependencies.config_id, and render the qr_code URL in a view.skip_verify, state, and user or department IDs. Store config_id, qr_code, and state in an Eloquent model for later lookup.endroid/qr-code. Keep the config_id as the source of truth for updates/deletes.state field. When a customer adds the agent, WeChat sends an event to your callback URL; use state to correlate the new customer with your campaign or landing page.Callback or Message classes.ContactWayService to add logging, retries, and caching.0.0.1 is pre-1.0. Expect missing docs, evolving APIs, and possible breaking changes. Pin the version and wrap the bundle behind your own adapter so you can swap it later.40001 invalid secret, 40013 invalid corp ID, 60011 no privilege, 84061 contact way not found. Surface these in your logs with the request payload.token and encoding_aes_key match exactly.0.0.1. Prefer decorating or subclassing service classes over forking. Check for interfaces before extending concrete classes.config_id—you cannot update or delete a contact way without it. Treat it as the primary key for remote state.How can I help you explore Laravel packages today?