Laravel集成Plisio包报错:Call to undefined function redirectToCheckout()
解决Laravel Plisio支付包「Call to undefined function redirectToCheckout()」错误
错误根源
redirectToCheckout()既不是Laravel框架内置函数,也不是Plisio SDK提供的方法,PHP无法找到该函数定义,因此触发报错。
修复方案
方案1:用Laravel内置重定向方法替换
直接用Laravel的redirect()函数跳转到你的结账页面,同时传递错误提示。假设你的结账页面路由名称是checkout.index,修改代码如下:
if ($response && $response['status'] !== 'error' && !empty($response['data'])) { clearCart(); // 先清空购物车再跳转,否则redirect后代码不会执行 return redirect($response['data']['invoice_url']); // 必须return才会触发跳转 } else { // 处理错误信息,避免JSON解析失败 $errorMessage = isset($response['data']['message']) ? $response['data']['message'] : '支付订单创建失败'; // 跳转到结账页并携带错误提示 return redirect()->route('checkout.index')->with('error', $errorMessage); }
方案2:自定义redirectToCheckout()函数
如果你希望保留redirectToCheckout()的调用方式,可以在项目中手动定义该函数:
- 在项目的
app/Helpers目录下新建Helper.php文件,添加函数定义:
<?php function redirectToCheckout($errorMessage = '') { $redirect = redirect()->route('checkout.index'); if ($errorMessage) { $redirect->with('error', $errorMessage); } return $redirect; }
- 在
composer.json的autoload部分添加helpers文件的自动加载配置:
"autoload": { "files": [ "app/Helpers/Helper.php" ], // 其他原有autoload配置... }
- 执行
composer dump-autoload命令让自动加载生效,之后即可正常调用redirectToCheckout()。
额外注意点
原代码中成功分支的redirect($response['data']['invoice_url']);未添加return,即使订单创建成功也不会触发跳转,必须加上return才能生效;同时clearCart();要放在redirect之前,否则跳转后该代码不会执行。
内容的提问来源于stack exchange,提问作者Mohammad Hosseini
相关产品推荐
相关产品推荐

