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

使用Stripe Checkout Session传元数据遇500错误(Invalid object)

问题解决:Stripe Checkout Session元数据传递触发Invalid object错误

错误原因

Stripe API要求payment_intent_data.metadata必须是键值对形式的关联数组,而非单纯字符串。你当前代码中直接给metadata赋值字符串"AAA",不符合API的数据格式要求,因此触发InvalidRequestException。

修正代码

把metadata改成键值对数组即可,自定义键名来存储需要的信息:

'payment_intent_data' => [ 
    'metadata' => [
        'order_marker' => 'AAA', // 自定义键名,值可以是你需要传递的标识、ID等
        'user_email' => $email // 也可以传递业务相关的其他字段
    ]
],

完整的会话创建代码片段:

$checkout_session = $stripe->checkout->sessions->create([
    'shipping_address_collection' => ['allowed_countries' => ['US']],
    'payment_method_types' => ['card'],
    "customer_email" => $email,
    'line_items' => $line_items,
    'payment_intent_data' => [ 
        'metadata' => [
            'test_tag' => 'AAA',
            'user_email' => $email
        ]
    ],
    'mode' => 'payment',
    'success_url' => 'my success url ...',
    'cancel_url' => 'my cancel url...',
]);

验证方式

当payment_intent.succeeded事件触发时,你在Webhook接收的事件数据中,可通过data.object.metadata字段获取到你传递的所有键值对数据。

额外提示

  • 元数据键名避免空格和特殊字符,建议用下划线或驼峰命名
  • 单个元数据键长度不超过40字符,值长度不超过500字符,不要传递过大内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:17:15