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

WooCommerce跳转Stripe结账页报错,寻求代码修复方案

修复Stripe Checkout Session创建时的API参数错误

问题根源是你使用的Stripe API版本(2022-08-01及以后)已废弃line_items中的直接字段(如name/amount/currency),必须改用price_data嵌套结构定义商品定价信息。以下是修复后的完整代码:

// 替换原line_items定义部分
$session_data['line_items'] = array(
    [
        'quantity' => 1,
        'price_data' => [
            'currency' => strtolower(get_woocommerce_currency()),
            'unit_amount' => $total, // 确保$total是货币最小单位(如美元传分、人民币传分)
            'product_data' => [
                'name' => esc_html(__('Total', 'payment-gateway-stripe-and-woocommerce-integration')),
                'images' => array($images),
            ],
        ],
    ]
);

if (empty($customer_id)) { 
    $customer = $this->create_stripe_customer( $order, $user);
    $customer_id = $customer->id;
    // 保存Stripe客户ID用于后续扣款
    update_user_meta($logged_in_userid, "_stripe_ch_customer_id", $customer_id);
}
$session_data['customer'] = $customer_id;

$session_data['payment_intent_data']['setup_future_usage'] = 'off_session';
$session_data['locale'] = $this->stripe_checkout_page_locale;
$session_data = apply_filters('wt_stripe_alter_checkout_request_params', $session_data, $order);
$session = \Stripe\Checkout\Session::create($session_data);

return array(
    'result'   => 'success',
    'redirect' => $this->get_payment_session_checkout_url( $session->id, $order ),
);

关键修改点:

  • 原line_items下的name/images字段移至price_data.product_data层级
  • 原amount字段改为price_data.unit_amount,需保证$total为货币最小单位数值(例如订单总额100元需传10000)
  • 原currency字段移至price_data层级
  • 保留quantity字段不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:54:31