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

使用Inpost ShipX PHP SDK获取运单追踪号报错求助

问题描述

我使用Inpost ShipX PHP SDK这个PHP库,通过API调用快递公司接口创建运单。以下代码可成功获取并保存运单标签,运行正常:

$shipmentData = json_decode($response->getBody()->__toString(), true);

while ($shipmentData['status'] !== 'confirmed') {
    sleep(1);
    $response = $api->shipments()->get($shipmentData['id']);
    $shipmentData = json_decode($response->getBody()->__toString(), true);
}

$labelResponse = $api->shipments()->label()->get($shipmentData['id'], [
    'format' => 'Pdf',
    'type' => 'A6',
]);

file_put_contents('var/labels/paczkomaty_label.pdf', $labelResponse->getBody()->__toString());

尝试获取已创建运单的追踪号时,添加了以下代码:

$trackingResponse = $api->shipments()->tracking()->get($shipmentData['id']);

var_dump($trackingResponse);

执行后触发报错:

An uncaught Exception was encountered
Type: InvalidArgumentException
Message: tracking resource not found
Filename: /vendor/imper86/php-inpost-api/src/Resource/AbstractResource.php
Line Number: 66

需要协助排查SDK用法,找到获取追踪号的正确方式,或提供排查思路。

解决思路与方案

1. 确认SDK资源结构

报错说明shipments()资源下没有tracking()子资源。直接查看SDK源码:

  • 打开vendor/imper86/php-inpost-api/src/Resource/ShipmentsResource.php
  • 检查该类的方法定义,确认是否有追踪相关的封装方法,或子资源注册逻辑。

2. 从运单详情直接提取追踪号

多数快递API会在运单详情中直接返回追踪号,无需单独调用接口。在你的循环中打印运单数据,查看是否存在相关字段:

var_dump($shipmentData); // 检查是否有tracking_number、tracking_code等字段

如果找到对应字段,直接提取即可:

$trackingNumber = $shipmentData['tracking_number']; // 替换为实际字段名

3. 直接调用API端点(SDK未封装时)

如果SDK没有封装追踪接口,可通过SDK底层的HTTP请求方法直接调用官方API端点:

$trackingResponse = $api->get("/shipments/{$shipmentData['id']}/tracking");
$trackingData = json_decode($trackingResponse->getBody()->__toString(), true);
var_dump($trackingData);

4. 更新SDK到最新版本

可能当前SDK版本未支持追踪功能,执行更新命令:

composer update imper86/php-inpost-api

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:05:33