Документация по разработке API платы за доставку
API расчета морских экспресс-перевозок Китай → Тайвань в реальном времени. Цены указаны в юанях, поддерживаются расчеты по фактическому весу и объему (объемному весу), при этом один запрос возвращает полные платежные данные. Специально разработан для предварительного расчета стоимости перевозки на трансграничных платформах электронной коммерции, таких как 0337.tw.
Морской экспресс
Способ доставки (Морской экспресс)
¥10/kg
Цена за килограмм (юаней)
+¥20
Доплата за оплачиваемый вес менее 10 кг.
<50ms
среднее время ответа
1 Обзор
API грузовых перевозок позволяет вашей платформе мгновенно отображать «Сбор за сбор морского экспресса Китай → Тайвань» на стойке регистрации, избавляя вас от необходимости поддерживать собственную таблицу тарифов.
что можно сделать
- Расчет перевозки — введите вес посылки (или длину, ширину и объем) и верните стоимость морской экспресс-доставки посылки (юаней).
- Получить ставку — запросить текущую ставку за килограмм, порог надбавки и коэффициент преобразования объема, который вам удобно вычислить или кэшировать на внешнем интерфейсе.
Все ответы представлены в формате JSON в едином формате конверта: в случае успеха success: true с data; в случае неудачи success: false с кодом error и message.
2 Сертификация и основная информация
Все запросы должны содержать ключ API. Может быть помещен в заголовок Authorization (рекомендуется) или заголовок X-API-Key.
Base URL
Заголовок аутентификации (выберите один)
Метод A — токен на предъявителя (рекомендуется)
Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Метод Б — ключ X-API
X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Ключ API начинается с lk_live_. Пожалуйста, храните в безопасности и никогда не помещайте во внешний JavaScript или общедоступные репозитории Git; все вызовы должны осуществляться со стороны вашего сервера.
Ограничение скорости
У каждого ключа есть лимит запросов в минуту, а в заголовке ответа будет сообщено об оставшемся лимите:
| заголовок | иллюстрировать |
|---|---|
X-RateLimit-Limit | Количество разрешенных запросов в минуту |
X-RateLimit-Remaining | Количество запросов, оставшихся на эту минуту |
Retry-After | Количество секунд ожидания превышения лимита времени (HTTP 429). |
Для обеспечения наилучшего внешнего интерфейса рекомендуется кэшировать результаты /rates на несколько минут и вычислять их по той же формуле на своем собственном сервере. Звоните по /quote только для проверки на критических этапах размещения заказа.
3 Конечная точка: получить скорость
GET /api/v1/freight/rates
Перечисляет все доступные на данный момент способы доставки и тарифы. Никакие параметры не требуются.
просить
curl https://0523.tw/api/v1/freight/rates \
-H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"
Ответ 200
{
"success": true,
"currency": "CNY",
"data": [
{
"method": "sea",
"name_zh": "海快",
"name_en": "Sea Express",
"rate_per_kg": 10,
"surcharge": 20,
"min_threshold": 15,
"volume_divisor": 10000,
"currency": "CNY"
}
]
}
4 Конечная точка: расчет фрахта
GETPOST /api/v1/freight/quote
Стоимость морской экспресс-доставки рассчитывается в зависимости от веса/объема посылки. Допускаются как GET (строка запроса), так и POST (JSON или форма).
Параметры запроса
| параметр | Тип | Необходимый | иллюстрировать |
|---|---|---|---|
weight | number | Необязательный* | Фактический вес в килограммах (кг). |
length | number | Необязательный* | Длина, единица измерения — сантиметры (см). |
width | number | Необязательный* | Ширина в сантиметрах (см). |
height | number | Необязательный* | Рост, единица измерения — сантиметры (см). |
method | string | Необязательный | Способ доставки в настоящее время sea (морской экспресс). Если этот параметр опущен, предполагается sea. |
Пример запроса (GET)
curl "https://0523.tw/api/v1/freight/quote?weight=8&method=sea" \ -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"
Пример запроса (POST JSON)
curl -X POST https://0523.tw/api/v1/freight/quote \ -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"weight": 5, "length": 40, "width": 30, "height": 30}'
Ответ 200
{
"success": true,
"data": {
"method": "sea",
"method_name_zh": "海快",
"method_name_en": "Sea Express",
"currency": "CNY",
"currency_symbol": "¥",
"actual_weight": 5,
"volume_weight": 3.6,
"volume_divisor": 10000,
"billable_weight": 5,
"billable_basis": "actual",
"rate_per_kg": 10,
"freight": 50,
"surcharge": 20,
"surcharge_applied": true,
"min_threshold": 15,
"total_fee": 70
}
}
Описание поля ответа
| поле | иллюстрировать |
|---|---|
actual_weight | Фактический вес (кг). 0, если не указано. |
volume_weight | Объем (объем) вес (кг) = длина × ширина × высота ÷ 10000. 0, если размер не указан. |
billable_weight | Оплачиваемый вес (кг) = макс. (фактический вес, объемный вес). |
billable_basis | Выставление счетов основано на :actual (на основе фактического веса) или volumetric (на основе объема). |
freight | Базовый фрахт = расчетный вес × ставка за килограмм (без учета дополнительных сборов). |
surcharge | Фактическая комиссия за эту транзакцию (0, если она не активирована). |
surcharge_applied | Вводить ли дополнительную плату (вес счета < порогового значения). |
total_fee | Окончательная дебиторская задолженность за фрахт равна (юаней, округленных до ближайшего целого числа). |
5 Формулы и примеры выставления счетов
Логика расчета этого API соответствует калькулятору Морской экспресс официального сайта 0523.tw, только ставка меняется на ставку проекта сотрудничества. Вы можете предварительно рассчитать его, используя ту же формулу в своей собственной системе.
② Учетный вес = макс. (фактический вес, объемный вес)
③ Базовый фрахт = Расчетный вес × ¥10/кг
④ Доплата = Расчетный вес < 10kg ? +¥20 : ¥0
⑤ Дебиторская задолженность за фрахт = раунд(③ + ④)
Практические примеры
6 код ошибки
Ответ об ошибке всегда { "успех": false, "ошибка": "...", "сообщение": "..." }.
| HTTP | error | иллюстрировать |
|---|---|---|
| 401 | missing_api_key | Ключ API не предоставлен. Добавьте заголовок авторизации или X-API-Key. |
| 401 | invalid_api_key | Ключ API недействителен. |
| 403 | key_suspended / key_revoked / key_expired | Ключ деактивирован/отозван/истек срок действия. |
| 403 | insufficient_scope | Ключ не имеет разрешения freight:read. |
| 422 | validation_failed | Ошибка формата параметра (тип, диапазон). |
| 422 | missing_parameters | Вес или полная длина/ширина/высота не указаны. |
| 422 | unsupported_method | метода нет в списке доступных. |
| 429 | rate_limit_exceeded | Превышение лимита запросов в минуту, см. Повтор-После. |
7 Пример программы
Пример вызова на стороне сервера. Пожалуйста, замените lk_live_... своим ключом и сохраните его в переменной среды.
// composer require guzzlehttp/guzzle use GuzzleHttp\Client; $client = new Client(['base_uri' => 'https://0523.tw']); $res = $client->post('/api/v1/freight/quote', [ 'headers' => [ 'Authorization' => 'Bearer ' . env('LUCKY_FREIGHT_KEY'), 'Accept' => 'application/json', ], 'json' => [ 'weight' => 8, 'method' => 'sea', ], ]); $data = json_decode($res->getBody(), true); echo '運費 ¥' . $data['data']['total_fee']; // 運費 ¥100
// Node.js / 伺服器端 — 請勿在瀏覽器暴露金鑰 const res = await fetch('https://0523.tw/api/v1/freight/quote', { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.LUCKY_FREIGHT_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ weight: 8, method: 'sea' }), }); const { data } = await res.json(); console.log(`運費 ¥${data.total_fee}`); // 運費 ¥100
curl -X POST https://0523.tw/api/v1/freight/quote \ -H "Authorization: Bearer $LUCKY_FREIGHT_KEY" \ -H "Content-Type: application/json" \ -d '{"weight": 8, "method": "sea"}'
8 Предложения по интеграции торгового центра Laravel
0337.tw — это торговый центр Laravel. Рекомендуется упаковать API платы за доставку во внутреннюю службу и вызывать: в процессе оформления заказа:
- После получения общего веса (кг)/объема корзины покупок при оформлении заказа вызовите /api/v1/freight/quote на бэкэнде и установите возвращенный total_fee в качестве стоимости доставки.
- Ключ помещается в .env (например, LUCKY_FREIGHT_KEY) и читается с помощью config(). Не прописывайте ключ жёстко в программном коде или во фронтенде.
- При сбое вызова (тайм-аут / 429) ставка, кэшированная в /rates, рассчитывается локально с использованием той же формулы, что и резервная копия, для обеспечения непрерывного оформления заказа.
- Сумма указана в юанях; Если торговый центр оплачивает счет в новых тайваньских долларах, пожалуйста, примените конвертацию обменного курса самостоятельно.
Пример Laravel (Http-фасад)
// app/Services/LuckyFreightService.php use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Cache; class LuckyFreightService { public function quote(float $weight): int { $res = Http::withToken(config('services.lucky.freight_key')) // 讀 .env ->acceptJson() ->timeout(8) ->get('https://0523.tw/api/v1/freight/quote', [ 'weight' => $weight, 'method' => 'sea', ]); if ($res->successful()) { return (int) $res->json('data.total_fee'); // 人民幣 } // 後備:用快取費率本地計算,結帳不中斷 return $this->fallbackQuote($weight); } }
Добавьте 'lucky' => ['freight_key' => env('LUCKY_FREIGHT_KEY')] в config/services.php, а затем добавьте LuckyFreightService в Контролер оформления заказа для получения груза.
9 Поддержка и версии
техническая поддержка: howyunqisoftware@gmail.com
Версия API: v1 (стабильная). Любые критические изменения будут выпущены с новым номером версии (v2), версия v1 останется совместимой.
История изменений: 01.06.2026 — Freight API v1 доступен онлайн (Hai Express, цена в юанях).