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

如何从Stripe预构建结账页面获取客户ID等数据并存入MySQL数据库

Stripe 结账功能获取客户ID并存库解决方案

步骤1:调整结账会话创建配置

你当前注释掉的success_url配置自带Stripe官方的{CHECKOUT_SESSION_ID}占位符,Stripe会在用户完成支付后自动填充真实的会话ID到跳转链接中,先把你的success_url调整为带该参数的版本:

\Stripe\Stripe::setApiKey('sk_test_51J...........esLwtMQx7IXNxp00epljtC43');

header('Content-Type: application/json');

$YOUR_DOMAIN = 'mydomain.com';

$checkout_session = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'],
    'line_items' => [[
      'price'=>"price_1Jt.....vImqj",
      'quantity'=>1,
    ]],
    'mode' => 'subscription',
    // 调整为带会话ID的成功页跳转地址
    'success_url' => $YOUR_DOMAIN . '/success.php?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
  ]);

步骤2:在success.php中获取客户ID并写入数据库

用户支付完成跳转回你的站点后,通过GET参数拿到会话ID,再调用Stripe接口检索会话详情即可获取客户ID,参考代码如下:

<?php
// 引入Stripe SDK,初始化密钥
\Stripe\Stripe::setApiKey('sk_test_51J...........esLwtMQx7IXNxp00epljtC43');

$session_id = $_GET['session_id'] ?? '';
if (empty($session_id)) {
    header('Location: /error.html');
    exit;
}

try {
    // 检索结账会话,加expand参数可直接返回完整客户信息,无需二次请求
    $checkout_session = \Stripe\Checkout\Session::retrieve([
        'id' => $session_id,
        'expand' => ['customer']
    ]);

    // 校验支付状态,避免恶意请求
    if ($checkout_session->payment_status === 'paid') {
        // 你需要的客户ID
        $stripe_customer_id = $checkout_session->customer->id;
        // 可额外获取客户其他信息
        $customer_email = $checkout_session->customer->email;
        $subscription_id = $checkout_session->subscription;

        // 此处编写你的MySQL写入逻辑,将上述字段存入对应表即可
        // 示例:$db->execute("INSERT INTO 你的表名 (stripe_customer_id, email, subscription_id) VALUES (?, ?, ?)", [$stripe_customer_id, $customer_email, $subscription_id]);
    }
} catch (\Exception $e) {
    error_log('Stripe会话检索失败: ' . $e->getMessage());
    header('Location: /error.html');
    exit;
}

// 后续展示支付成功页面内容
?>

推荐优化方案

仅依赖成功页跳转存在数据漏存风险:如果用户支付完成后直接关闭页面,未等待跳转回你的站点,就会触发不到success.php的逻辑。推荐搭配Stripe Webhook实现,监听checkout.session.completed事件,Stripe会在支付完成后主动推送事件通知到你配置的接口,不管用户是否跳转都能稳定拿到客户ID完成存库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:06:01