pasaran perkhidmatan / Dokumentasi pembangunan API yuran penghantaran
API pengumpulan barang Kapal cepat · v1

Dokumentasi pembangunan API yuran penghantaran

China → API pengiraan masa nyata pengangkutan laut Taiwan. Harga adalah dalam RMB, menyokong pengebilan berat dan volum sebenar (berat volum), dengan satu permintaan mengembalikan butiran pengebilan lengkap. Direka khas untuk sebut harga pengangkutan bahagian hadapan bagi platform e-dagang rentas sempadan seperti 0337.tw.

Kapal cepat

Kaedah penghantaran (Sea Express)

¥10/kg

Kadar sekilogram (RMB)

+¥20

Surcaj untuk berat boleh dibil kurang daripada 10kg

<50ms

purata masa tindak balas

1 Gambaran keseluruhan

API kargo membolehkan platform anda memaparkan "China → Yuran Kutipan Ekspres Laut Taiwan" dengan serta-merta di meja depan, menghapuskan beban untuk mengekalkan jadual kadar anda sendiri.

apa yang boleh dilakukan

  • Pengiraan Pengangkutan - Masukkan berat bungkusan (atau panjang, lebar dan isipadu), dan pulangkan yuran penghantaran ekspres laut (RMB) pakej.
  • Dapatkan kadar - Tanya kadar semasa setiap kilogram, ambang surcaj dan pekali penukaran volum, yang mudah untuk anda mengira atau menyimpan cache pada bahagian hadapan.

Semua jawapan adalah dalam JSON, dalam format sampul surat bersatu: apabila berjaya, success: true dengan data; apabila gagal, success: false dengan kod error dan message.

Mata wang penetapan harga : RMB (CNY / ¥). Kadar API ini ialah kadar projek kerjasama e-dagang merentas sempadan, yang dikekalkan secara berasingan daripada pengiraan percubaan penghantaran laman web rasmi (NTD) 0523.tw. Jika anda memerlukan sebut harga dalam Dolar Taiwan Baru atau kaedah penghantaran lain, sila hubungi kami untuk mengaktifkan.

2 Pensijilan dan maklumat asas

Semua permintaan mesti membawa Kunci API. Boleh diletakkan dalam pengepala Authorization (disyorkan) atau pengepala X-API-Key.

Base URL

https://0523.tw/api/v1/freight

Pengepala pengesahan (pilih satu)

Kaedah A — Token Pembawa (disyorkan)

Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

Kaedah B — X-API-Key

X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

Kunci API bermula dengan lk_live_. Sila pastikan selamat dan jangan sekali-kali meletakkan ke dalam JavaScript bahagian hadapan atau repositori Git awam; semua panggilan hendaklah dibuat dari sisi pelayan anda.

Had Kadar

Setiap kunci mempunyai had permintaan seminit, dan pengepala respons akan melaporkan baki had:

pengepalamenggambarkan
X-RateLimit-LimitBilangan permintaan yang dibenarkan setiap minit
X-RateLimit-RemainingBilangan permintaan yang tinggal pada minit ini
Retry-AfterBilangan saat untuk menunggu melebihi had masa (HTTP 429)

Untuk pengalaman bahagian hadapan yang terbaik, adalah disyorkan untuk cache hasil /rates selama beberapa minit dan mengiranya dengan formula yang sama pada pelayan anda sendiri. Hanya hubungi /quote untuk pengesahan semasa langkah kritikal membuat pesanan.

3 Titik akhir: dapatkan kadar

GET /api/v1/freight/rates

Menyenaraikan semua kaedah dan kadar penghantaran yang didayakan pada masa ini. Tiada parameter diperlukan.

bertanya

curl https://0523.tw/api/v1/freight/rates \
  -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

Maklum balas 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 Titik Akhir: Pengiraan Angkutan

GETPOST /api/v1/freight/quote

Bayaran penghantaran ekspres laut dikira berdasarkan berat/saiz volum bungkusan. Kedua-dua GET (rentetan pertanyaan) dan POST (JSON atau borang) boleh diterima.

Permintaan parameter

parametertaipDiperlukanmenggambarkan
weightnumberPilihan*Berat sebenar dalam kilogram (kg).
lengthnumberPilihan*Panjang, unit ialah sentimeter (cm).
widthnumberPilihan*Lebar dalam sentimeter (cm).
heightnumberPilihan*Ketinggian, unit ialah sentimeter (cm).
methodstringPilihanKaedah penghantaran pada masa ini ialah sea (sea express). Apabila diabaikan, sea diandaikan.
* weight dan "lengkapkan panjang/lebar/tinggi" pilih sekurang-kurangnya satu . Apabila kedua-duanya disediakan, sistem mengambil "berat sebenar" dan "berat volumetrik" yang lebih besar sebagai berat pengebilan.

Contoh permintaan (GET)

curl "https://0523.tw/api/v1/freight/quote?weight=8&method=sea" \
  -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

Contoh permintaan (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}'

Maklum balas 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
  }
}

Penerangan medan respons

padangmenggambarkan
actual_weightBerat sebenar (kg). 0 jika tidak disediakan.
volume_weightIsipadu (isipadu) berat (kg) = panjang × lebar × tinggi ÷ 10000. 0 jika tiada saiz disediakan.
billable_weightBerat boleh bil (kg) = maks (berat sebenar, berat isipadu).
billable_basisPengebilan adalah berdasarkan :actual (berdasarkan berat sebenar) atau volumetric (berdasarkan volum).
freightAngkutan asas = berat pengebilan × kadar setiap kilogram (tidak termasuk surcaj).
surchargeSurcaj sebenar untuk transaksi ini (0 jika tidak dicetuskan).
surcharge_appliedSama ada untuk mencetuskan surcaj (berat pengebilan < ambang).
total_feePengangkut barang akhir diterima ialah (RMB, dibundarkan kepada nombor bulat terdekat).

5 Formula dan contoh pengebilan

Logik pengiraan API ini konsisten dengan kalkulator Kapal cepat laman web rasmi 0523.tw, hanya kadarnya ditukar kepada kadar projek kerjasama. Anda boleh mengiranya menggunakan formula yang sama dalam sistem anda sendiri.

① Berat isipadu = panjang × lebar × tinggi (cm) ÷ 10000
② Berat pengebilan = maks (berat sebenar, berat isipadu)
③ Angkutan asas = Berat pengebilan × ¥10/kg
④ Surcaj = Berat pengebilan < 10kg ? +¥20 : ¥0
⑤ Barang belum terima = bulat(③ + ④)

Contoh praktikal

Pakej ¥1008 kg → Berat pengebilan 8kg < 10kg → 8×10 + 20 = 100
Pakej ¥20020 kg → Berat pengebilan 20kg ≥ 10kg → 20×10 = 200 (Tiada surcaj)
¥705 kg + kotak 40×30×30cm → berat volum 3.6kg, berat dibilkan 5kg → 5×10 + 20 = 70
¥1203 kg + kotak 60×50×40cm → berat isipadu 12kg > berat sebenar, berat pengebilan 12kg ≥ 10kg → 12×10 = 120 (Tiada surcaj)
¥150Kotak 50×50×60cm (saiz sahaja) → Berat isipadu 15kg, berat pengebilan 15kg ≥ 10kg → 15×10 = 150

6 kod ralat

Respons ralat sentiasa { "success": false, "error": "...", "message": "..." }.

HTTPerrormenggambarkan
401missing_api_keyTiada Kunci API disediakan. Sila tambahkan pengepala Keizinan atau X-API-Key.
401invalid_api_keyKunci API tidak sah.
403key_suspended / key_revoked / key_expiredKunci telah dinyahaktifkan/dibatalkan/tamat tempoh.
403insufficient_scopeKunci tidak mempunyai kebenaran freight:read.
422validation_failedRalat format parameter (jenis, julat).
422missing_parametersTiada berat atau panjang/lebar/tinggi penuh disediakan.
422unsupported_methodkaedah tiada dalam senarai yang tersedia.
429rate_limit_exceededMelebihi had permintaan seminit, lihat Cuba Semula Selepas.

7 Contoh program

Contoh panggilan sebelah pelayan. Sila gantikan lk_live_... dengan kunci anda dan simpannya dalam pembolehubah persekitaran.

// 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 Cadangan integrasi pusat membeli-belah Laravel

0337.tw ialah pusat membeli-belah Laravel. Adalah disyorkan untuk membungkus API yuran penghantaran ke dalam Perkhidmatan bahagian belakang dan hubungi: semasa proses pembayaran:

  • Selepas mendapat jumlah berat (kg)/isipadu troli beli-belah semasa pembayaran, panggil /api/v1/freight/quote di bahagian belakang dan tetapkan total_fee yang dikembalikan sebagai kos penghantaran.
  • Kunci diletakkan dalam .env (contohnya, LUCKY_FREIGHT_KEY) dan dibaca dengan config(). Jangan tulis kunci secara terus (hard-code) dalam kod program atau bahagian hadapan.
  • Apabila panggilan gagal (tamat masa / 429), kadar yang dicache dalam /rates dikira secara setempat menggunakan formula yang sama sebagai sandaran untuk memastikan pembayaran tidak terganggu.
  • Jumlahnya dalam RMB; jika pusat membeli-belah menyelesaikan bil dalam Dolar Taiwan Baru, sila gunakan sendiri penukaran kadar pertukaran.

Contoh Laravel (Http fasad)

// 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);
    }
}

Tambahkan 'lucky' => ['freight_key' => env('LUCKY_FREIGHT_KEY')] dalam config/services.php, kemudian suntik LuckyFreightService ke dalam Controller pembayaran untuk mendapatkan kos penghantaran.

Sumber tunggal kebenaran Pemusatan kadar : dikekalkan oleh HowBridge. Selepas kami melaraskan kadar, API akan mencerminkannya serta-merta dan pusat membeli-belah anda akan dikemas kini secara serentak tanpa sebarang semakan.

9 Sokongan dan versi

sokongan teknikal: howyunqisoftware@gmail.com

Versi API: v1 (stabil). Sebarang perubahan pecah akan dikeluarkan dengan nombor versi baharu (v2), v1 akan kekal serasi.

Sejarah perubahan: 2026-06-01 — Freight API v1 adalah dalam talian (Hai Express, berharga RMB).

Mohon kunci API