
本文详解在 CodeIgniter 4 项目中集成 Stripe 官方 PHP SDK 的标准方法,重点解决 Class "StripeStripe" not found 常见错误,涵盖 Composer 自动加载配置、命名空间使用规范及控制器调用示例。
本文详解在 codeigniter 4 项目中集成 stripe 官方 php sdk 的标准方法,重点解决 `class "stripestripe" not found` 常见错误,涵盖 composer 自动加载配置、命名空间使用规范及控制器调用示例。
CodeIgniter 4 原生支持 PSR-4 自动加载,但 Stripe SDK 是一个独立的第三方库,不应手动将其路径映射到 psr4 配置中(如 'Stripe' => ROOTPATH . 'vendor/stripe/stripe-php/init.php')。该写法存在严重逻辑错误:init.php 是引导文件而非命名空间根目录,且 .php 文件路径不能作为 PSR-4 的 namespace root;同时,psr4 仅用于自动加载类文件(.php),不适用于执行初始化脚本。
✅ 正确做法是:直接利用 Composer 生成的统一自动加载器 vendor/autoload.php。Stripe SDK 在安装后已自动注册其自身的 autoloader(通过 composer.json 中的 autoload 字段),只需确保该文件被引入即可。
✅ 正确集成步骤
-
安装 Stripe SDK(已执行)
composer require stripe/stripe-php
-
无需修改 app/Config/Autoload.php 的 psr4 数组
❌ 删除或注释掉以下错误配置:// 'Stripe' => ROOTPATH . 'vendor/stripe/stripe-php/init.php', // 错误!禁止这样写
-
在控制器中引入 Stripe 类(推荐方式)
CodeIgniter 4 默认已加载 vendor/autoload.php(位于 public/index.php 和 spark 脚本中),因此无需额外 require_once。你只需正确使用命名空间:<?php namespace AppControllers; use CodeIgniterController; use StripeCharge; // 显式 use 更清晰(可选,但推荐) use StripeStripe; class Payment extends Controller { public function process() { // 设置密钥(建议从 .env 或 config 文件读取) Stripe::setApiKey(env('STRIPE_SECRET_KEY', 'sk_test_...')); try { $charge = Charge::create([ 'amount' => (int) $this->request->getPost('grandtotal') * 100, // 单位:分(GBP) 'currency' => 'gbp', 'source' => $this->request->getPost('stripeToken'), 'description' => 'Test payment via Stripe', ]); return $this->response->setJSON([ 'success' => true, 'data' => $charge->toArray() ]); } catch (StripeExceptionCardException $e) { return $this->response->setJSON(['error' => $e->getError()->message]); } catch (Exception $e) { return $this->response->setJSON(['error' => $e->getMessage()]); } } }
? 关键说明:
立即学习“PHP免费学习笔记(深入)”;
- Stripe 要求金额以「最小货币单位」传递(如 GBP 为分),所以 grandtotal 需 ×100 并转为整型;
- 使用 StripeCharge 或 use StripeCharge 均可,但避免 use Stripe;(它会导入整个 Stripe 命名空间,导致 Stripe::setApiKey() 写法冗余且易混淆);
- 务必捕获 CardException 等具体异常,便于前端友好提示。
⚠️ 注意事项与最佳实践
-
环境变量管理:将 STRIPE_SECRET_KEY 和 STRIPE_PUBLISHABLE_KEY 写入 .env 文件,避免硬编码:
STRIPE_SECRET_KEY=sk_test_51xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx STRIPE_PUBLISHABLE_KEY=pk_test_51xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
然后在控制器中通过 env('STRIPE_SECRET_KEY') 安全读取。
前端 Token 安全性:$_REQUEST["stripeToken"] 已过时,应使用 Stripe Elements + stripe.createToken() 或 stripe.confirmCardPayment() 获取 payment_method 或 payment_intent,后端改用 PaymentIntent 流程(更符合 Stripe 最佳实践)。
版本兼容性:确认所用 stripe-php 版本与 Stripe Dashboard API 版本一致(推荐 ≥ v10.x),可通过 composer show stripe/stripe-php 查看。
调试技巧:若仍报错,请运行 composer dump-autoload -o 重建自动加载映射,并检查 vendor/composer/autoload_psr4.php 中是否已包含 Stripe\ 映射(正常情况下应有)。
遵循以上规范,即可彻底解决 Class "StripeStripe" not found 错误,实现 CodeIgniter 4 与 Stripe 的稳定、安全集成。











