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

Stripe Checkout如何为行项目添加商品规格自定义描述?

实现方案

Stripe Checkout行项目的自定义展示不需要依赖全局会话metadata,有两种可落地的实现方式,优先推荐第一种动态传参方案。

方案1:动态传入行项目配置(推荐,适配你的需求)

你当前代码直接传入预先创建好的固定price ID,这种模式下行项目的展示名称会直接读取Price对应商品的预设名称,无法动态拼接购买数量、单份计量这类随订单变化的信息。
你可以改用price_data字段为每个行项目动态定义价格、商品展示名称,直接把需要展示的计量规格文本拼接进商品名称字段,该字段内容会完整展示在结账页、账单、付款收据的对应条目位置,完全匹配你要的展示效果。

注意:你原有代码存在一处参数结构错误:$lineItems通过array_push组装后本身已经是行项目数组,外层不需要再套[],否则会触发Stripe API参数校验错误。

修改后的核心代码如下:

$lineItems = [];
foreach($request->arrayOfObjects as $req) {
    // 按需拼接你需要展示的完整商品规格文本
    $displayText = "Article {$req['productSku']} - {$req['productName']} ({$req['quantity']}x Packages - {$req['squarePerPackage']}m2 each)";
    
    array_push($lineItems, [
        'price_data' => [
            'currency' => 'eur', // 替换为你实际使用的结算货币
            'product_data' => [
                'name' => $displayText,
                // 可选:需要展示商品缩略图可传入图片地址
                // 'images' => [$req['productCoverUrl']]
            ],
            // 计算该行总金额:单份单价(单位:分)* 购买份数,避免Stripe默认追加数量后缀导致内容重复
            'unit_amount' => (int)$req['unitPriceCent'] * (int)$req['quantity'],
        ],
        // 数量固定传1,配合上面的总金额计算,不会出现重复的数量展示
        'quantity' => 1,
    ]);
}
    
if (Auth::check()) {
    $charge = $stripeClient->checkout->sessions->create([
        'payment_method_types' => [
            'card',
            'sepa_debit',
            'giropay',
            'sofort',
            'alipay'
        ],
        'success_url' => env('APP_URL').'/success',
        'cancel_url' => env('APP_URL').'/cancel',
        'shipping_address_collection' => [
            'allowed_countries' => ['DE'],
        ],
        'shipping_options' => [
            [
               'shipping_rate' => $request->lieferung ? env('SHIPPING_RATE_LIEFERUNG') : env('SHIPPING_RATE_ABHOLUNG')
            ],
        ],
        // 修复原有多套数组的问题,直接传入组装好的$lineItems
        'line_items' => $lineItems,
        'mode' => 'payment',
        'metadata' => [
            'lieferung' => $request->lieferung,
            'isCustomer' => true
        ],
        'allow_promotion_codes' => true,
        'customer' => Auth::user()->stripe_id
    ]);
}

方案2:预设商品时写入固定规格

如果你售卖的商品规格完全固定,不会随订单变化,也可以直接在Stripe后台创建商品时,把固定规格信息写在商品名称字段,绑定对应价格后不需要修改原有传固定price ID的代码,账单会直接展示带规格的商品名。但该方案不支持动态拼接购买数量这类随订单变化的内容,不适配你当前的需求。

补充说明:Stripe的全局metadata字段仅用于后端业务逻辑查询,不会展示给前端用户和账单,不要用该字段存储需要给用户查看的展示内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:24:20