thank-song/track123

Laravel package for Track123 API.

Installs: 10

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/thank-song/track123

V1.25.1221 2025-12-21 15:09 UTC

This package is auto-updated.

Last update: 2025-12-21 15:10:28 UTC


README

thank-song/track123 是一个用于接入 Track123 快递轨迹 OpenAPI 的 Laravel 工具包,支持物流单号注册、查询、轨迹同步及队列处理,适用于中大型 Laravel 项目。

⚙️ 环境要求

  • PHP >= 8.0
  • Laravel >= 9.0
  • MySQL >= 8.0

📦 安装

通过 Composer 安装:

composer require thank-song/track123

⚙️ 配置

在项目 .env 文件中添加以下配置:

TRACK123_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxx   # Track123 API Token(必填)
TRACK123_API_URL=https://api.track123.com/gateway/open-api/  # API 地址(可选)

⚠️ TRACK123_API_TOKEN 为必填项,否则接口请求将失败。

🗄 数据库迁移

本包内置所需的数据表迁移文件,直接执行:

php artisan migrate

🧠 核心概念

模型 说明
Courier 快递商信息(由 Track123 提供)
Tracking 物流单号主体
TrackingDetail 轨迹节点明细
TrackingExtraInfo 额外轨迹信息
LocalLogistic 本地物流补充信息

🚀 使用说明

1️⃣ 获取 Courier(快递商)列表

php artisan track123:get-couriers

该命令将:

  • 从 Track123 API 拉取最新快递商
  • 同步更新本地 couriers 表
  • 刷新缓存(如有)

2️⃣ 注册物流单号(Tracking)

2.1 使用工厂静态方法注册(同步)

use ThankSong\Track123\Track123;

try {
    $trackings = [
        ['trackNo' => '886000000087', 'courierCode' => 'fedex'],
        ['trackNo' => '886000000007', 'courierCode' => 'fedex'],
        ['trackNo' => '886000000003', 'courierCode' => 'fedex'],
    ];

    $res = Track123::register($trackings);

    var_dump($res->getAccepted());          // 注册成功的单号
    var_dump($res->getRejected());          // 注册失败的单号
    var_dump($res->getRejectedMessages());  // 失败原因
} catch (\Throwable $e) {
    var_dump($e->getMessage());
}

2.2 使用队列 Job 注册(推荐生产环境)

use ThankSong\Track123\Jobs\RegisterTrackingJob;

$trackings = [
    ['trackNo' => '886000000087', 'courierCode' => 'fedex'],
    ['trackNo' => '886000000007', 'courierCode' => 'fedex'],
    ['trackNo' => '886000000003', 'courierCode' => 'fedex'],
];

RegisterTrackingJob::dispatch($trackings)->onQueue('default');

3️⃣ 查询物流轨迹

3.1 使用工厂静态方法查询

use ThankSong\Track123\Track123;

try {
    // 单个单号查询
    $res = Track123::query('886000000003');

    // 批量查询示例
    /*
    $trackings = [
        ['trackNo' => '886000000007'],
        ['trackNo' => '886000000087'],
    ];
    $res = Track123::queryTrackings($trackings);
    */

    var_dump($res->getAccepted());          // 查询成功
    var_dump($res->getRejected());          // 查询失败
    var_dump($res->getRejectedMessages());  // 失败原因
} catch (\Throwable $e) {
    var_dump($e->getMessage());
}

3.2 使用 Artisan 命令查询(并同步模型数据)

php artisan track123:query "886000000003"

该命令将:

  • 向 Track123 查询最新轨迹
  • 同步更新 Tracking / Detail / ExtraInfo 等模型

🧰 Artisan 命令汇总

命令 说明
track123:get-couriers 同步快递商列表
track123:query {tracking_no} 查询并更新物流轨迹

4️⃣ 修改快递商信息

try {
    $res= Track123::changeCarrier(oldCourierCode: 'mng-kargo',trackNo: '886957347096',newCourierCode: 'fedex');
    var_dump($res->getMessage());          // 响应信息
} catch (\Throwable $e) {
    var_dump($e->getMessage());
}

设置webhook

your-domin.com/api/track123/webhook

❓ 常见问题

Q:数据是 UTC 还是本地时间?

  • Track123 返回时间通常为 UTC
  • 建议按 UTC 存库
  • 展示时可使用 Carbon 转换时区(例如 America/Los_Angeles)

Q:是否支持队列?

  • 支持
  • 注册与查询均可通过 Job 执行,适合高并发 / 批量场景

📄 License

MIT License