答案是包名错误或镜像源未刷新,正确包名为overtrue/wechat而非easywechat等;需确认镜像配置有效、临时切官方源验证,并按php版本选用^6.0或5.6.*等明确版本约束。

为什么用中文镜像还装不上 overtrue/wechat?
不是镜像慢,是包名或源没对上。国内镜像(如阿里云、腾讯云)同步的是 Packagist 全量包,但前提是你要用对的包名:overtrue/wechat,而不是 easywechat/easywechat 或 wechat——后者根本不存在于官方仓库。如果执行 composer require overtrue/wechat 报 “Could not find package”,大概率是你本地配置了过期私有源,或者镜像源没刷新。
临时切回官方源验证:运行 composer config -g repo.packagist composer https://packagist.org,再试一次安装。确认可用后,再换回国内源提速:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
composer require 命令该写什么版本?
别写 latest 或 *,会拉到不稳定分支。根据 PHP 版本和项目类型选:
- PHP ≥ 8.0 + 新项目(含小程序云开发)→
composer require "overtrue/wechat:^6.0" - PHP 7.2–7.4 + 公众号常规功能(网页授权、模板消息)→
composer require "overtrue/wechat:5.6.*" - ThinkPHP 6.x → 优先用
composer require "easywechat/easywechat:^6.0"(注意包名不同)
引号必须加,否则 shell 可能把 ^ 或 * 当作通配符解析,导致版本约束失效。
装完类还是找不到?class_exists('EasyWeChatFactory') 返回 false 怎么办
这是 autoload 没生效,不是 SDK 问题。常见原因:
- 没在入口文件(如
index.php)第一行require 'vendor/autoload.php';,路径写错或漏掉 - Docker 或部署环境里,
vendor/autoload.php没生成全,手动补跑composer dump-autoload -o - Laravel 项目没清缓存:
php artisan config:clear && php artisan cache:clear - IDE 或编辑器锁住了
vendor目录,导致 Composer 写入失败
最简验证方式:php -r "require 'vendor/autoload.php'; var_dump(class_exists('EasyWeChatFactory'));",输出 bool(true) 才算真正加载成功。
微信支付 SDK 不能用 composer require 安装?
对,wechat/pay 官方 SDK 不提供 Packagist 包,所有 composer require wechat/pay-php-sdk 都会失败。它只支持手动集成:
- 去 GitHub 下载 ZIP:https://www.php.cn/link/fc9eab4115cc258d7f0f3f452e13a13d
- 解压后把
src/放进项目,比如vendor/wechat/pay/src/ - 在使用前
require_once __DIR__.'/vendor/wechat/pay/src/WeChatPay.php'; - 若要用 Composer 自动加载,得在
composer.json里加 PSR-4 映射:"WeChat\Pay\": "vendor/wechat/pay/src/",再跑composer dump-autoload
证书路径必须是绝对路径,相对路径在 CLI 环境下极易失效;apiclient_cert.pem 和 apiclient_key.pem 要完整包含 BEGIN/END 行,少一行签名就失败。











