composer怎么安装EasyWeChat支付SDK_composer微信开发依赖包引入【教程】

17次阅读

应直接安装 easywechat/pay 独立包(v4.x,php≥8.0),手动传入含证书与私钥的绝对路径、app_id、mch_id 等必填参数初始化 Pay 实例,确保 openid 来自当前公众号且匹配 app_id。

composer怎么安装EasyWeChat支付SDK_composer微信开发依赖包引入【教程】

EasyWeChat 的支付功能已从主包拆出,easywechat/pay 是独立的 composer 包,不能通过安装 overtrue/wechat 或旧版 easywechat/easywechat 获得支付能力。

确认你要用的是 EasyWeChat v5(laravel/Lumen 友好)还是 v6(纯 PHP)

v5 和 v6 的包名、命名空间、配置方式完全不同,选错会导致 class not foundCall to undefined method

  • v5:包名是 overtrue/laravel-wechat(Laravel 项目)或 easywechat/easywechat(非 Laravel),但不包含支付类;支付需额外 require easywechat/pay
  • v6:包名是 easywechat/pay,且仅含支付相关代码,不依赖框架,也不含公众号/小程序等其他模块

如果你只是做微信支付(如 jsAPI/H5/APP 支付),直接装 easywechat/pay 即可,无需装完整版 EasyWeChat。

执行 composer require easywechat/pay

在项目根目录运行:

composer require easywechat/pay

该命令会自动拉取最新稳定版(目前为 v4.x,对应微信支付 APIv3)。注意以下几点:

  • PHP 版本需 ≥ 8.0(v4.x 不再支持 PHP 7.x)
  • 若报错 Root composer.json requires easywechat/pay ^4.0, found easywechat/pay[v4.0.0, ..., v4.2.0] but these were not loaded,说明你本地有旧版 lock 文件冲突,先运行 composer update 或删掉 composer.lock 再试
  • 安装后不会自动发布配置文件(因为 v4.x 是无框架设计),你需要手动创建配置数组传入 Pay::instance()

初始化 Pay 实例时别漏掉 merchant_cert_path 和 private_key

微信支付 APIv3 强制要求双向证书认证,easywechat/pay v4.x 不再自动读取环境变量或 config 文件,所有参数必须显式传入:

$pay = EasyWeChatPayPay::instance([     'app_id' => 'wxd678efh567hg6787',     'mch_id' => '1900009876',     'mch_secret_key' => 'your-v3-api-key-here',     'merchant_cert_path' => '/path/to/apiclient_cert.pem', // 注意:必须是 PEM 格式,且含私钥     'private_key' => '/path/to/apiclient_key.pem',         // 实际上就是上面 cert 文件里的私钥部分(v4.1+ 支持合并写法) ]);

常见坑:

  • merchant_cert_path 指向的文件必须同时包含证书和私钥(即微信商户平台下载的 apiclient_cert.pem 原始文件),不能只放公钥
  • 如果用的是微信支付平台新下发的「APIv3 密钥」+「平台证书」分离模式,需配合 easywechat/pay v4.2+ 并使用 platform_certificate 参数加载平台证书
  • 路径必须是绝对路径(可用 __DIR__ . '/certs/apiclient_cert.pem'

调用 JSAPI 支付前先确保 openid 已获取且与 appid 匹配

JSAPI 支付必须传 openid,这个 openid 必须来自当前 app_id 对应的公众号(不是开放平台 unionid),否则微信会返回 "errcode":40164,"errmsg":"invalid ip" 或更隐蔽的签名失败。

  • 不要复用其他公众号或小程序的 openid
  • 不要把网页授权拿到的 code 直接丢给支付 SDK——必须先用 code 换取当前公众号下的 openid
  • 调试时可用 curl -X POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi -H "Authorization: ..." -d '{"..."}' 手动验签,确认参数结构是否符合微信要求

证书路径、API 版本、openid 来源这三项出错,占实际接入失败的 80% 以上。别急着查文档,先核对这三个点。

text=ZqhQzanResources