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

如何在Stripe中通过循环动态生成checkout的多个line_items参数

Stripe Checkout动态生成多个line_items的实现方法

你之前操作报错的核心原因有两个:一是stripe.checkout.Session.create()是同步接口,调用时就会直接把参数提交给Stripe服务器,调用完成后再修改参数完全不会生效,还会触发参数校验错误;二是直接在方法参数的列表内部写循环语法不符合Python的语法规则,无法生成你要的结构。

正确的操作方式是在调用接口前,提前构造完整的line_items列表,再将构造好的列表直接传入参数即可,修改后的参考代码如下:

def create_checkout_session(request):
    if request.method == "GET":
        try:
            cart = Cart.objects.get(order_user=request.user)
            # 初始化空的line_items列表
            line_items = []
            # 遍历你的业务数据源生成对应条目,此处以购物车关联的商品条目为例
            for item in cart.cartitem_set.all(): # 替换为你实际的购物车商品关联字段名
                current_item = {
                    'price_data': {
                        'currency': 'eur',
                        'product_data': {
                            'name': item.product.name, # 替换为你实际的商品名称字段
                            # 可按需添加描述、图片等可选字段
                            # 'description': item.product.description,
                            # 'images': [item.product.cover_image_url]
                        },
                        # Stripe要求金额为货币最小单位的整数,欧元最小单位为分,所以需乘以100后转整数
                        'unit_amount': int(item.product.price * 100),
                    },
                    'quantity': item.buy_count, # 替换为你实际的商品购买数量字段
                }
                line_items.append(current_item)
            
            # 将构造完成的line_items直接传入接口
            checkout_session = stripe.checkout.Session.create(
                payment_method_types=['card', 'p24'], 
                line_items=line_items,
                # 补全你原本需要的其他参数,例如:
                success_url="https://你的域名/payment/success?session_id={CHECKOUT_SESSION_ID}",
                cancel_url="https://你的域名/payment/cancel",
                mode="payment"
            )
            # 此处保留你原本的后续业务逻辑

注意事项

  • 单位转换:务必确认unit_amount的单位是对应货币的最小单位,除了欧元外,美元、人民币等也遵循同样规则,避免金额错误
  • 数据类型:不需要手动把line_items转换成JSON字符串,直接传入Python原生的字典列表即可,Stripe SDK会自动完成序列化
  • 适配业务:如果你的业务不需要关联购物车商品,只需把for循环的遍历数据源换成你自己的动态对象列表即可,构造条目的逻辑通用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:15:03