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

Symfony集成Stripe v9.5.0遇unit_amount无效整数及数组错误求助

Symfony集成Stripe v9.5.0支付的两个错误解决方案

错误1:"Invalid integer: 532.46"

  • 原因:Stripe的unit_amount参数要求传入最小货币单位的整数(例如欧元以「分」为单位),你当前传入的是带小数的欧元金额(如532.46欧元),不符合参数格式要求。
  • 修复:将商品价格乘以100转换为分,再强转为整数:
'unit_amount' => (int)($product['product']->getPrix() * 100),

注意:不要直接用round($orderDetails->getPrice()),这只会把欧元金额取整,而不是转换为最小货币单位。

错误2:"Invalid array"

  • 原因:$product_for_stripe本身就是存储多个商品项的一维数组,你在line_items里又套了一层[$product_for_stripe],导致传入了二维数组,Stripe要求line_items是一维数组。
  • 修复:直接将$product_for_stripe赋值给line_items:
$checkout_session = Session::create([
    'line_items' => $product_for_stripe,
    'mode' => 'payment',
    'success_url' => $YOUR_DOMAIN . '/success.html',
    'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);

修正后的完整代码片段

$product_for_stripe = [];
$YOUR_DOMAIN = 'https://localhost:8000/';

//Enregister sur mon entity Order_details
foreach ($cart->getFull() as $product) {
    $orderDetails = new OrderDetails();
    $orderDetails->setMyOrder($order);
    $orderDetails->setProduct($product['product']);
    $orderDetails->setQuantity($product['quantity']);
    $orderDetails->setPrice($product['product']->getPrix());
    $orderDetails->setTotal($product['product']->getPrix() * $product['quantity']);
    $this->entityManager->persist($orderDetails);

    $product_for_stripe[] = [
        'price_data' => [
            'currency' => 'eur',
            'product_data' => [
                'name' => $product['product']->getName(),
                'images' => $product['product']->getImage()
             ],
            // 修复unit_amount:转换为最小货币单位的整数
            'unit_amount' => (int)($product['product']->getPrix() * 100),
        ],
        'quantity' => $product['quantity'],
    ];
}

$this->entityManager->flush(); // 建议开启flush,确保订单详情正确存入数据库
Stripe::setApiKey('sk_test_51LiLoMDGYOFHKYepnY3xMBT5vwMJWH2XR3ntN9GpHXYtapN29AvQVty21GPUx0qVa2J6MWFr69ke3Yq1p3MJL1yV00kCU59YvE');

$checkout_session = Session::create([
    // 修复line_items:直接传入一维数组
    'line_items' => $product_for_stripe,
    'mode' => 'payment',
    'success_url' => $YOUR_DOMAIN . '/success.html',
    'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);

dump($checkout_session->id);
dd($checkout_session);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:00:37