我正在将Stripe签出集成到我的PHP项目中。我需要创建一个用于条带结账的会话,但当我单击支付按钮时,我收到了一个Invalid array
错误,它不是创建会话,而是抛出了一个错误。我不知道我在哪里缺少了什么,我使用的是stripeV3代码。
我在会话创建条带签出时遇到的错误。
签出会话创建失败!无效的数组
结账页面代码
<?php
// Include configuration file
require_once 'config.php';
// Include Stripe PHP library
require_once 'stripe-php/init.php';
// Set API key
$stripe = new StripeStripeClient(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)){
// 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,
'images' => $productName,
],
],
'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);
?>
我认为问题在于"line_items.price_data.product_data.images";因为它接受一个图像列表,而您正在传递产品名称。它应该看起来像这个
$session = $stripe->checkout->sessions->create([
'payment_method_types' => ['card'],
'line_items' => [[
'price_data' => [
'currency' => $currency,
'unit_amount' => $stripeAmount,
'product_data' => [
'name' => $productName,
'images' => ["image_link1","image_link2"],
],
],
'quantity' => 1,
]],
'mode' => 'payment',
'success_url' => STRIPE_SUCCESS_URL.'?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => STRIPE_CANCEL_URL,
]);