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

Stripe订阅支付完成后如何获取客户ID(PHP后端场景)

PHP环境下Stripe订阅支付完成后获取客户ID的实现方案

方案1:Checkout Session回调获取(实现成本最低,符合你的需求)

你不需要提前创建客户,也不需要配置webhook,直接通过Stripe Checkout自带的成功页回调参数就能拿到自动生成的客户ID:

  • 第一步:修改create-checkout-session.php中的success_url配置,使用Stripe内置的{CHECKOUT_SESSION_ID}占位符自动注入会话ID,示例代码:
$stripe = new \Stripe\StripeClient('你的Stripe服务端密钥');
$session = $stripe->checkout->sessions->create([
  'payment_method_types' => ['card'],
  'line_items' => [
    [
      'price' => '你的订阅价格ID',
      'quantity' => 1,
    ]
  ],
  'mode' => 'subscription',
  // 支付成功后跳转的地址,自动携带Session ID
  'success_url' => 'https://你的网站域名.com/payment-success.php?session_id={CHECKOUT_SESSION_ID}',
  'cancel_url' => 'https://你的网站域名.com/payment-cancel.php',
]);
  • 第二步:在支付成功页对应的payment-success.php文件中,调用Stripe接口检索会话详情即可拿到客户ID,示例代码:
$stripe = new \Stripe\StripeClient('你的Stripe服务端密钥');
// 取URL中的会话ID参数
$session = $stripe->checkout->sessions->retrieve($_GET['session_id']);
// 直接获取自动生成的Stripe客户ID
$stripe_customer_id = $session->customer;
// 此处添加你自己的业务逻辑,将客户ID存入数据库即可

方案2:预创建客户传入(适合需要提前留存客户信息的场景)

也就是你想到的实现方案,稳定性也很高,适合需要在用户进入支付页前就管理客户信息的场景:

  • 先调用Stripe客户创建接口生成客户ID
  • 创建Checkout Session时直接传入customer参数为你提前生成的客户ID,Stripe就不会重复创建客户,你也可以提前拿到客户ID不需要等支付完成。

补充说明

如果需要确保即使用户支付成功后没有跳转到成功页,你也能拿到客户ID,可以额外配置checkout.session.completed事件的webhook作为兜底,正常支付跳转场景下方案1完全可以满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:45:03