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

Laravel中WooCommerce Rest API调用错误处理:替换500错误展示提示

解决WooCommerce REST API调用错误无法捕获的问题

问题根源

你的try-catch块未生效,核心原因有两个:

  • WooCommerce官方PHP客户端抛出的不是PHP全局Exception,而是特定异常类(比如WooCommerce自定义的HttpClientException,或是Guzzle底层的请求异常)
  • 若代码处于自定义命名空间下,catch (Exception $e)会优先查找当前命名空间内的Exception类,而非全局根Exception

修复方案

1. 捕获具体异常类

针对WooCommerce API的错误场景,需重点捕获两类异常:

  • Automattic\WooCommerce\HttpClient\HttpClientException:处理API逻辑错误(如参数无效、认证失败)
  • GuzzleHttp\Exception\RequestException:处理网络层面错误(如店铺不可用、连接超时)
    同时保留全局\Exception作为兜底,覆盖未预料的错误。

2. 处理命名空间问题

若代码在自定义命名空间中,引用全局Exception需添加反斜杠,写成\Exception。

修改后的代码示例

public static function getOrders($key, $secret, $url, $status = "processing"){
    $woocommerce = WCApi::getClient($key, $secret, $url);
    $response = [];

    try {
        // 执行API请求
        $response = $status == "all" 
            ? $woocommerce->get('orders') 
            : $woocommerce->get('orders', ['status' => $status]);
    } catch (\Automattic\WooCommerce\HttpClient\HttpClientException $e) {
        // 解析WooCommerce返回的结构化错误信息
        $errorData = $e->getResponse()->get_data();
        $response = [
            'error' => true,
            'message' => $errorData['message'] ?? 'API请求失败',
            'code' => $errorData['code'] ?? 'unknown_error'
        ];
    } catch (\GuzzleHttp\Exception\RequestException $e) {
        // 处理网络连接类错误
        $response = [
            'error' => true,
            'message' => '无法连接到店铺,请检查URL是否正确',
            'code' => 'connection_failed'
        ];
    } catch (\Exception $e) {
        // 兜底捕获其他未知错误
        $response = [
            'error' => true,
            'message' => $e->getMessage(),
            'code' => 'general_error'
        ];
    }

    return $response;
}

关键说明

  • 捕获HttpClientException后,可通过$e->getResponse()->get_data()直接获取API返回的错误详情(比如你遇到的rest_invalid_param提示)
  • 返回数组格式的响应,便于前端快速判断错误状态并展示对应提示
  • 分层捕获异常,能针对不同错误场景给出更精准的用户提示(如参数错误和连接失败的提示区分开)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:08