直接用 composer require stripe/stripe-php 安装 SDK 后,需确认 PHP ≥ 7.2.5、启用 cURL 和 JSON 扩展,指定版本如 ^14.0 避免兼容问题,确保 autoload.php 正确引入,并通过环境变量安全配置 secret_key,否则易报 AuthenticationError 或 Class not found。

直接用 composer require stripe/stripe-php 就能装上 Stripe 官方 SDK,但光装完不配置、不处理错误、不适配你的框架环境,集成后大概率会报 Stripe\Error\Authentication 或 Class 'Stripe\Stripe' not found。
确认 PHP 环境和 Composer 可用性
Stripe PHP SDK 要求 PHP ≥ 7.2.5(推荐 8.0+),且必须启用 cURL 和 JSON 扩展。运行以下命令验证:
php -v
php -m | grep -E 'curl|json'
如果提示 command not found: composer,先装 Composer(全局或项目内);若已安装但报错“Could not open input file: composer.phar”,说明没加到 $PATH,建议用 curl -sS https://getcomposer.org/installer | php 后执行 mv composer.phar /usr/local/bin/composer(Linux/macOS)。
执行 composer require 并检查自动加载
在项目根目录下运行:
composer require stripe/stripe-php:^14.0
注意指定版本号(如 ^14.0),避免默认拉取 v15+ 的 breaking change 版本(v15 要求 PHP 8.1+,且移除了 Stripe\Util\CaseInsensitiveArray 等旧类)。安装完成后检查:vendor/autoload.php 是否存在,且你的入口文件(如 index.php 或 Laravel 的 bootstrap/app.php)中已包含它:
require __DIR__.'/vendor/autoload.php';
没这行,new \Stripe\StripeClient() 会直接报 Class not found。
初始化客户端并设置密钥——别硬编码在代码里
Stripe 密钥分 secret_key(服务端用)和 publishable_key(前端用),绝不能把 secret_key 暴露在前端或 Git 提交中。正确做法是通过环境变量加载:
- 在
.env文件里写:STRIPE_SECRET_KEY=sk_test_... - 用
$_ENV['STRIPE_SECRET_KEY']或更安全的getenv('STRIPE_SECRET_KEY')读取 - 初始化客户端时传入:
$stripe = new \Stripe\StripeClient($_ENV['STRIPE_SECRET_KEY']);
如果跳过环境变量直接写死密钥,本地测试可能通,但部署到生产环境后容易因权限/配置不同而触发 AuthenticationError,且违反 Stripe 安全规范。
常见报错和绕过坑点
实际集成中最常卡在这几个地方:
-
SSL certificate problem: unable to get local issuer certificate:Windows 下 Composer 默认不信任 CA,需在php.ini中取消注释curl.cainfo并指向cacert.pem文件 -
Undefined index: HTTPS:某些 Nginx 配置没透传 HTTPS 头,调用\Stripe\Checkout\Session::create()时 URL 生成失败,手动传line_items[].price_data.product_data.images或补全domain_url参数可临时绕过 - Laravel 用户注意:不要在
config/services.php里用env('STRIPE_SECRET_KEY')直接赋值给数组键,Laravel 5.8+ 缓存 config 后会丢失 env 解析,应改用config('services.stripe.secret')+ 运行时读取
SDK 本身很轻量,但 Stripe 的 webhook 签名验证、异步事件重试、错误重捕获这些逻辑,得自己补全——官方 SDK 不帮你做中间件或队列封装。










