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

支付被拒时如何关联Stripe会话与支付意向事件

解决Stripe支付失败事件关联Checkout Session的问题

核心方案:通过Payment Intent的metadata字段实现正向关联

在创建Checkout Session时,将生成的Session ID(如cs_test_12345...)写入对应Payment Intent的metadata中。后续无论支付成功或失败,都能直接从事件的payment_intent对象里读取到关联的Session ID,无需额外调用接口。

具体操作步骤

  1. 创建Session时注入关联标识
    调用checkout/sessions接口创建会话时,通过payment_intent_data[metadata]参数,把当前Session ID(或你系统内的订单唯一标识)存入Payment Intent的元数据:

    # Python SDK示例
    stripe.checkout.Session.create(
        payment_method_types=['card'],
        line_items=[{'price': 'price_xxx', 'quantity': 1}],
        mode='payment',
        success_url='https://your-domain.com/success',
        cancel_url='https://your-domain.com/cancel',
        payment_intent_data={
            'metadata': {
                'checkout_session_id': 'cs_test_xxxxxx'  # 填入当前生成的Session ID
            }
        }
    )
    

    其他语言SDK写法逻辑一致,核心是在payment_intent_data中配置metadata字段。

  2. 在失败事件中读取关联信息
    收到payment_intent.payment_failed或charge.failed事件时,直接从事件对象中提取关联标识:

    • 对于payment_intent.payment_failed:event.data.object.metadata.checkout_session_id
    • 对于charge.failed:event.data.object.payment_intent.metadata.checkout_session_id(Charge对象关联了Payment Intent,可嵌套读取)

补充说明

Stripe默认不会在Payment Intent或Charge的事件中直接返回Checkout Session ID,通过自定义metadata是官方推荐的正向关联方案,完全不需要依赖反向查询Session接口。

如果想精简监听事件,只需保留以下几个核心事件即可覆盖支付全流程:

  • checkout.session.completed:支付成功
  • payment_intent.payment_failed:支付失败
  • 可选charge.failed:作为失败事件的补充

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:52:05