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

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()的调用方式,可以在项目中手动定义该函数:

  1. 在项目的app/Helpers目录下新建Helper.php文件,添加函数定义:
<?php

function redirectToCheckout($errorMessage = '') {
    $redirect = redirect()->route('checkout.index');
    if ($errorMessage) {
        $redirect->with('error', $errorMessage);
    }
    return $redirect;
}
  1. 在composer.json的autoload部分添加helpers文件的自动加载配置:
"autoload": {
    "files": [
        "app/Helpers/Helper.php"
    ],
    // 其他原有autoload配置...
}
  1. 执行composer dump-autoload命令让自动加载生效,之后即可正常调用redirectToCheckout()。

额外注意点

原代码中成功分支的redirect($response['data']['invoice_url']);未添加return,即使订单创建成功也不会触发跳转,必须加上return才能生效;同时clearCart();要放在redirect之前,否则跳转后该代码不会执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:40:17