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」错误。
修复步骤
修正images字段格式
- 如果不需要展示产品图片,直接删除
images字段; - 如果需要展示,传入包含图片URL的数组,示例:
'images' => ['https://your-domain.com/product-image.jpg'],
- 如果不需要展示产品图片,直接删除
验证关键变量合法性
确保$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
相关产品推荐
相关产品推荐

