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

PHP集成Stripe Checkout创建Session时遇Invalid array错误求助

解决Stripe Checkout创建Session时的「Invalid array」错误

核心错误原因

你的代码里line_items[0].price_data.product_data.images字段赋值违规:

'images' => $productName,

Stripe API要求images必须是字符串数组(存储产品图片的URL),但你直接传入了字符串类型的$productName,这直接触发了「Invalid array」错误。

修复步骤

  1. 修正images字段格式

    • 如果不需要展示产品图片,直接删除images字段;
    • 如果需要展示,传入包含图片URL的数组,示例:
      'images' => ['https://your-domain.com/product-image.jpg'],
      
  2. 验证关键变量合法性
    确保$currency(小写三位ISO货币码,如usd)、$stripeAmount(单位为分的整数,比如100代表$1.00)、$productName(非空字符串)这些变量都已正确赋值,没有出现未定义或类型错误。

修正后的完整代码片段

<?php 
// Include configuration file   
require_once 'config.php'; 

// Include Stripe PHP library  
require_once 'stripe-php/init.php'; 

// Set API key 
$stripe = new \Stripe\StripeClient(STRIPE_API_KEY); 

$response = array( 
    'status' => 0, 
    'error' => array( 
        'message' => 'Invalid Request!'    
    ) 
); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $input = file_get_contents('php://input'); 
    $request = json_decode($input);     
} 

if (json_last_error() !== JSON_ERROR_NONE) { 
    http_response_code(400); 
    echo json_encode($response); 
    exit; 
} 

if(!empty($request->checkoutSession)){ 
    // 确保变量已正确赋值(根据实际业务替换)
    $currency = 'usd'; 
    $stripeAmount = 100; 
    $productName = 'Test Product'; 

    // Create new Checkout Session for the order 
    try { 
        $session =  $stripe->checkout->sessions->create([
            'payment_method_types' => ['card'],
            'line_items' => [[
                'price_data' => [
                    'currency' => $currency,
                    'unit_amount' => $stripeAmount,
                    'product_data' => [
                        'name' => $productName,
                        // 修正:传入图片URL数组或删除该字段
                        'images' => ['https://your-domain.com/product.jpg'],
                    ],
                ],
                'quantity' => 1,
            ]],
            'mode' => 'payment',
         
            'success_url' => STRIPE_SUCCESS_URL.'?session_id={CHECKOUT_SESSION_ID}', 
            'cancel_url' => STRIPE_CANCEL_URL,
        ]);
    }catch(Exception $e) {  
        $api_error = $e->getMessage();  
    } 
     
    if(empty($api_error) && $session){ 
        $response = array( 
            'status' => 1, 
            'message' => 'Checkout Session created successfully!', 
            'sessionId' => $session['id'] 
        ); 
    }else{ 
        $response = array( 
            'status' => 0, 
            'error' => array( 
                'message' => 'Checkout Session creation failed! '.$api_error    
            ) 
        ); 
    } 
} 

// Return response 
echo json_encode($response);
?>

额外注意事项

  • 确认config.php里的STRIPE_API_KEY、STRIPE_SUCCESS_URL、STRIPE_CANCEL_URL配置正确
  • 测试模式下使用Stripe官方提供的测试卡号进行支付验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:10:21