You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Cashier对接Stripe如何实现多支付方式功能

结论

完全可以基于Laravel Cashier实现Stripe官方多支付方式能力,没必要抛开Cashier从零对接原生Stripe SDK。
Cashier本质是Stripe PHP SDK的上层业务封装,没有对可支持的支付方式做强制限制。官方文档没写相关内容,只是因为多支付方式属于「自定义Stripe Elements前端+少量后端参数调整」的灵活场景,不在Cashier预置的标准单次支付、订阅流程的默认文档覆盖范围内。

实操方案
  • 前端层:不用Cashier自带的简化支付组件,直接按Stripe Elements的标准写法引入Stripe JS,初始化时传入你需要开通的全量支付方式列表即可,常见的信用卡、Apple Pay、Google Pay、支付宝、微信支付、境外本地支付渠道都可以在这一步配置。
  • 后端创建支付意向:直接复用Cashier已经初始化好的Stripe客户端、已绑定的用户Stripe客户体系来创建PaymentIntent,不需要自己重新配置API密钥、客户关联逻辑。核心代码参考:
// 支付接口中创建支付意向
$user = auth()->user();
if (!$user->hasStripeId()) {
    $user->createAsStripeCustomer();
}

$paymentIntent = $user->paymentIntents()->create([
    'amount' => 39900, // 金额按Stripe规则传最小货币单位,此处对应399元
    'currency' => 'cny',
    // 配置需要支持的支付方式,和前端配置保持一致
    'payment_method_types' => ['card', 'alipay', 'wechat_pay', 'apple_pay', 'google_pay'],
    'metadata' => [
        'restaurant_order_id' => $currentOrder->id // 绑定餐厅系统的内部订单ID
    ]
]);

return [
    'client_secret' => $paymentIntent->client_secret
];

前端拿到client_secret后按Stripe Elements标准流程完成支付确认即可,和Stripe官方文档描述的实现逻辑完全一致。

  • 回调处理:直接复用Cashier自带的webhook路由即可,不用自己写Stripe回调的签名校验逻辑。你只需要注册对应事件的监听器,监听payment_intent.succeeded(支付成功)、payment_intent.payment_failed(支付失败)等事件,在监听器里更新系统订单状态、触发出餐流程就行。
注意点
  • 所有要使用的支付方式必须先在Stripe后台开启开关,同时确认对应支付方式支持你设置的交易币种、服务地区,否则前端加载时会报渠道不可用错误。
  • 支付宝、微信支付这类异步跳转类支付方式不需要额外做兼容,Stripe会统一处理渠道侧的回调,最终通过统一的PaymentIntent状态推送给你的服务端。
  • 如果后续要做会员储值、订阅类的多支付方式支持,只需要在创建订阅的方法里传入payment_method_types参数即可,不需要调整其他逻辑。

内容的提问来源于stack exchange,提问作者sercan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:06:54