Laravel集成Cartalyst Stripe发起支付报错:未定义charges()方法
解决Cartalyst\Stripe调用
charges()方法报错的问题 这个错误很常见,主要是因为你使用的Cartalyst Stripe版本和调用方式不匹配导致的,我来帮你梳理下解决方案:
错误原因
Call to undefined method Cartalyst\Stripe\Stripe::charges() 说明你当前使用的Cartalyst Stripe版本中,并不存在静态调用的charges()方法——不同版本的包API调用方式差异很大,下面分两种主流版本给出修复方案:
方案1:如果你使用的是Cartalyst Stripe v2.x版本
v2.x版本的包支持静态调用,但创建支付的方法是Stripe::charge()而非charges()->create(),同时要注意Stripe的金额要求是最小货币单位的整数(比如10美元要传1000,代表1000美分),不能传字符串格式的小数。修改后的代码如下:
public function store(Request $request) { try { // 注意:金额改为整数1000(对应10.00 USD) $charge = Stripe::charge([ 'amount' => 1000, 'currency' => 'USD', 'source' => $request->stripeToken, 'description' => 'Order', 'metadata' => [] ]); return back()->with('success_message', 'Thank You! Your payment has been successfully accepted!'); } catch (\Cartalyst\Stripe\Exception\CardException $e) { // 捕获卡片相关错误,返回更友好的提示 return back()->with('error_message', $e->getMessage()); } catch (\Exception $e) { // 捕获其他通用错误 return back()->with('error_message', 'Payment failed, please try again later.'); } }
方案2:如果你使用的是Cartalyst Stripe v3.x+版本
v3.x+版本不再支持静态调用,需要先实例化Stripe客户端,再调用charges()->create()方法,代码示例如下:
use Cartalyst\Stripe\Stripe; public function store(Request $request) { try { // 从配置文件获取Stripe密钥并实例化客户端 $stripe = new Stripe(config('services.stripe.secret')); $charge = $stripe->charges()->create([ 'amount' => 1000, // 同样注意最小货币单位的整数要求 'currency' => 'USD', 'source' => $request->stripeToken, 'description' => 'Order', 'metadata' => [] ]); return back()->with('success_message', 'Thank You! Your payment has been successfully accepted!'); } catch (\Cartalyst\Stripe\Exception\CardException $e) { return back()->with('error_message', $e->getMessage()); } catch (\Exception $e) { return back()->with('error_message', 'Payment failed, please try again later.'); } }
额外注意事项
- 确保你的
config/services.php中配置了正确的Stripe密钥:
'stripe' => [ 'secret' => env('STRIPE_SECRET'), 'key' => env('STRIPE_KEY'), ],
- 尽量捕获具体的Stripe异常(比如
CardException),而不是泛型的Exception,这样能给用户返回更精准的错误提示(比如卡片过期、余额不足等)。
内容的提问来源于stack exchange,提问作者Mark William
相关产品推荐
相关产品推荐

