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

能否为Stripe的Session::create添加自定义标识以在Webhook中识别用户?

解决Stripe Checkout Session关联自有系统用户的问题

当然可以,你只需要在创建Checkout Session时通过metadata字段附加自定义数据(比如你的系统用户ID),就能在Webhook监听器里拿到这些信息,从而关联到对应的用户。

修改后的创建Session代码如下:

// 假设$current_user_id是你自有系统里的用户ID
$checkout_session = \Stripe\Checkout\Session::create([
    'line_items' => [[
      'price' => $prices->data[0]->id,
      'quantity' => 1,
    ]],
    'mode' => 'subscription',
    'success_url' => $YOUR_DOMAIN . '/success.html?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
    // 附加自定义用户标识数据
    'metadata' => [
        'user_id' => $current_user_id
    ]
  ]);

当Webhook触发(比如checkout.session.completed事件)时,你可以从事件对象里提取metadata中的数据:

// 解析Webhook事件
$event = \Stripe\Event::constructFrom(json_decode($payload, true));
// 获取Checkout Session对象
$session = $event->data->object;
// 拿到你之前附加的用户ID
$user_id = $session->metadata->user_id;
// 接下来就可以用这个user_id关联到你系统里的用户,做后续处理

注意:metadata字段支持存储键值对,单个值最多500字符,用来存用户ID这类标识完全足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:01