
在 PHP 中调用 Stripe Checkout Session 时,若在 metadata 数组中错误地混用 PHP 输出标签(如 )或引号包裹方式不当,会导致解析错误(如“unexpected end of file”),正确做法是直接使用已定义的变量 $aname,无需额外语法包装。
在 php 中调用 stripe checkout session 时,若在 `metadata` 数组中错误地混用 php 输出标签(如 ``)或引号包裹方式不当,会导致解析错误(如“unexpected end of file”),正确做法是直接使用已定义的变量 `$aname`,无需额外语法包装。
当你尝试将 PHP 变量插入 Stripe 的 Session::create() 参数数组中时,关键要理解:该代码块本身完全处于 PHP 执行上下文中,不需要、也不允许使用 <?php echo ... ?> 这类输出标签——那仅适用于 PHP 与 HTML 混排的模板场景。一旦写入 <?php echo $aname ?>,PHP 解析器会误认为你正从 PHP 模式切换回纯文本模式,从而提前终止解析,最终报错 Parse error: syntax error, unexpected end of file(通常指向文件末尾的 ?>),本质是语法中断导致后续代码未被识别。
✅ 正确写法如下(变量直接裸用,注意作用域和引号):
$aname = 'Formal Trousers';
// ... 其他逻辑(如 $productPrice 定义、request 解析等)...
if (!empty($request->createCheckoutSession)) {
$stripeAmount = round($productPrice * 100, 2);
try {
$checkout_session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'metadata' => [
'item_name' => $aname, // ✅ 直接使用变量(无引号包裹变量名)
'item_no' => '31'
],
// 其他必要参数,如 line_items、mode、success_url 等
'line_items' => [[
'price_data' => [
'currency' => 'usd',
'product_data' => ['name' => $aname],
'unit_amount' => $stripeAmount,
],
'quantity' => 1,
]],
'mode' => 'payment',
'success_url' => 'https://example.com/success',
'cancel_url' => 'https://example.com/cancel',
]);
// 处理成功响应...
} catch (\Exception $e) {
http_response_code(500);
echo json_encode(['error' => $e->getMessage()]);
exit;
}
}
⚠️ 常见错误及说明:
-
'item_name' => '<?php echo $aname ?>'→ ❌ 错误嵌入 PHP 标签,破坏语法结构; -
'item_name' => '$aname'→ ❌ 单引号内变量不解析,字面量为字符串$aname; -
'item_name' => "$aname"→ ⚠️ 双引号可解析变量,但非必需;推荐直接$aname更简洁、安全(避免意外插值); -
'item_name' => $aname→ ✅ 唯一推荐方式:变量在数组中直接作为值传入。
? 额外建议:
- 确保
$aname在Session::create()调用前已正确定义且非空(可加isset($aname) && !empty(trim($aname))校验); - Stripe
metadata值仅支持字符串,若$aname可能含特殊字符(如单引号、换行),建议预处理:$safeName = str_replace(["\n", "\r"], ' ', trim($aname));; - 开发阶段开启
error_reporting(E_ALL); ini_set('display_errors', 1);可快速定位语法与运行时问题。
遵循上述规范,即可安全、可靠地将动态商品名称注入 Stripe 元数据,彻底规避解析错误。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











