正确安装方式是 composer require overtrue/wechat,因 easywechat/easywechat 包名已失效;需 PHP ≥ 8.0 并启用 fileinfo、openssl、curl 扩展;配置须分场景调用 Factory 对应方法,证书路径必须为绝对路径。

composer require overtrue/wechat 是唯一正确安装方式,别搜“EasyWeChat”去装 easywechat/easywechat ——这个包名早已失效,会报 Package not found 错误。
为什么装不上?常见错误现象和验证步骤
很多人执行 composer require easywechat/easywechat 后卡住或报错,本质是混淆了“项目名”“包名”和“命名空间”:
• GitHub 仓库叫 overtrue/wechat,不是 easywechat/easywechat
• 文档里写的 use EasyWeChat\Factory 是命名空间,跟 Composer 包名无关
• overtrue/wechat 自 2019 年起就是官方包名,当前稳定版为 ^7.0(截至 2026 年 3 月)
• 验证是否真装好:在项目根目录运行 php -r "require 'vendor/autoload.php'; var_dump(class_exists('EasyWeChat\Factory'));",输出 bool(true) 才算成功
配置微信接口前必须确认的三件事
没配对 AppID/secret、没引入 vendor/autoload.php、没设对证书路径,后面全白忙:
• app_id 和 secret 必须从微信公众平台或小程序后台复制,大小写敏感,不能带空格
• 入口文件(如 index.php 或控制器)第一行就得 require 'vendor/autoload.php',漏掉就 Class 'EasyWeChat\Factory' not found
• 微信支付要用证书时,cert_path 和 key_path 必须是绝对路径(比如 /var/www/myapp/cert/apiclient_cert.pem),相对路径在 CLI 或 Nginx 下大概率读不到
不同场景该用哪个 Factory 方法?
一个配置数组不能混着用,得按业务分清楚:
• 服务号消息/菜单/用户管理 → Factory::officialAccount($config)
• 小程序登录/解密/订阅消息 → Factory::miniProgram($config)
• 微信支付(JSAPI/APP/NATIVE)→ Factory::payment($config),且配置里必须含 merchant_id、key、cert_path、key_path
• 多账号共存?别复用同一份 $config,要拆成 'official_account' => [...] 和 'mini_app' => [...] 两个子数组再分别传入
PHP 版本和扩展不匹配,装完也跑不起来
EasyWeChat 7.x 要求 PHP ≥ 8.0,但很多旧服务器还在用 7.4;更隐蔽的是扩展缺失:
• ext-fileinfo 缺失会导致证书加载失败、签名出错,错误不明显,只在调支付时静默失败
• ext-openssl 和 ext-curl 是硬性依赖,缺一不可
• 宝塔、AMH 等面板里装完 PHP 扩展后,记得重启 PHP 进程,否则 phpinfo() 看得到,CLI 却用不上
merchant_id、用 Laravel 却忘了清缓存——这些都不是“配置错了”,而是根本没进到 SDK 的逻辑层。把路径打全、把必需字段列出来、用命令行快速验证类是否存在,比反复改代码快得多。










