Documentation de développement de l'API sur les frais d'expédition
API de calcul en temps réel du fret express maritime Chine → Taiwan. Le prix est en RMB, prenant en charge la facturation du poids et du volume réels (poids volumétrique), une seule demande renvoyant les détails de facturation complets. Spécialement conçu pour les cotations de fret frontales des plateformes de commerce électronique transfrontalières telles que 0337.tw.
Maritime express
Mode d'expédition (Sea Express)
¥10/kg
Tarif par kilogramme (RMB)
+¥20
Supplément pour poids facturable inférieur à 10 kg
<50ms
temps de réponse moyen
1 Aperçu
L'API de fret permet à votre plate-forme d'afficher instantanément « Chine → Taiwan Sea Express Collection Fee » à la réception, éliminant ainsi la charge de maintenir votre propre barème de tarifs.
que peut-on faire
- Calcul du fret - Entrez le poids du colis (ou la longueur, la largeur et le volume) et renvoyez les frais d'expédition maritime express (RMB) du colis.
- Obtenir le taux - Recherchez le taux actuel par kilogramme, le seuil de supplément et le coefficient de conversion de volume, ce qui est pratique pour vous de calculer ou de mettre en cache sur le front-end.
Toutes les réponses sont au format JSON, dans un format d'enveloppe unifié : en cas de succès, success : true avec data ; en cas d'échec, success : false avec le code error et message.
2 Certification et informations de base
Toutes les demandes doivent apporter une clé API. Peut être placé dans l’en-tête Authorization (recommandé) ou dans l’en-tête X-API-Key.
Base URL
En-tête d'authentification (choisissez-en un)
Méthode A — Jeton au porteur (recommandé)
Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Méthode B — Clé X-API
X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxxxxxx
La clé API commence par lk_live_. Veuillez garder en sécurité et ne jamais placer dans des référentiels JavaScript frontaux ou Git publics ; tous les appels doivent être effectués depuis votre serveur.
Limite de taux
Chaque clé a une limite de requêtes par minute, et l'en-tête de réponse indiquera la limite restante :
| en-tête | illustrer |
|---|---|
X-RateLimit-Limit | Nombre de requêtes autorisées par minute |
X-RateLimit-Remaining | Nombre de demandes restantes cette minute |
Retry-After | Nombre de secondes à attendre en cas de dépassement du délai (HTTP 429) |
Pour la meilleure expérience frontale, il est recommandé de mettre en cache les résultats /rates pendant quelques minutes et de les calculer avec la même formule sur votre propre serveur. Appelez uniquement /quote pour vérification pendant les étapes critiques de la passation d'une commande.
3 Point final : obtenir le taux
GET /api/v1/freight/rates
Répertorie toutes les méthodes et tarifs d’expédition actuellement activés. Aucun paramètre n'est requis.
demander
curl https://0523.tw/api/v1/freight/rates \
-H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"
Réponse 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 Point final : calcul du fret
GETPOST /api/v1/freight/quote
Les frais d'expédition maritime express sont calculés en fonction du poids/volume du colis. GET (chaîne de requête) et POST (JSON ou formulaire) sont acceptables.
Paramètres de la demande
| paramètre | Taper | Requis | illustrer |
|---|---|---|---|
weight | number | Facultatif* | Poids réel en kilogrammes (kg). |
length | number | Facultatif* | Longueur, l'unité est en centimètres (cm). |
width | number | Facultatif* | Largeur en centimètres (cm). |
height | number | Facultatif* | Hauteur, l'unité est en centimètres (cm). |
method | string | Facultatif | Le mode d'expédition est actuellement sea (sea express). En cas d'omission, sea est supposé. |
Exemple de requête (GET)
curl "https://0523.tw/api/v1/freight/quote?weight=8&method=sea" \ -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"
Exemple de requête (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}'
Réponse 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
}
}
Description du champ de réponse
| champ | illustrer |
|---|---|
actual_weight | Poids réel (kg). 0 s’il n’est pas fourni. |
volume_weight | Volume (volume) poids (kg) = longueur × largeur × hauteur ÷ 10000. 0 si aucune taille n'est fournie. |
billable_weight | Poids facturable (kg) = max (poids réel, poids volumétrique). |
billable_basis | La facturation est basée sur :actual (basé sur le poids réel) ou volumetric (basé sur le volume). |
freight | Fret de base = poids facturé × tarif par kilogramme (hors suppléments). |
surcharge | Le supplément réel pour cette transaction (0 si non déclenché). |
surcharge_applied | S'il faut déclencher une majoration (poids de facturation < seuil). |
total_fee | La créance finale de fret est (RMB, arrondi au nombre entier le plus proche). |
5 Formules et exemples de facturation
La logique de calcul de cette API est cohérente avec le calculateur Maritime express du site officiel 0523.tw, seul le taux est modifié en taux du projet de coopération. Vous pouvez le précalculer en utilisant la même formule dans votre propre système.
② Poids facturé = max (poids réel, poids volumétrique)
③ Fret de base = Poids facturé × ¥10/kg
④ Supplément = Poids facturé < 10kg ? +¥20 : ¥0
⑤ Fret à recevoir = rond (③ + ④)
Exemples pratiques
6 code d'erreur
La réponse d'erreur est toujours { "success": false, "error": "...", "message": "..." }.
| HTTP | error | illustrer |
|---|---|---|
| 401 | missing_api_key | Aucune clé API n'est fournie. Veuillez ajouter l'en-tête Authorization ou X-API-Key. |
| 401 | invalid_api_key | La clé API n'est pas valide. |
| 403 | key_suspended / key_revoked / key_expired | La clé a été désactivée/révoquée/expirée. |
| 403 | insufficient_scope | La clé ne dispose pas de l'autorisation freight:read. |
| 422 | validation_failed | Erreur de format de paramètre (type, plage). |
| 422 | missing_parameters | Aucun poids ni pleine longueur/largeur/hauteur n’est fourni. |
| 422 | unsupported_method | La méthode n'est pas dans la liste disponible. |
| 429 | rate_limit_exceeded | En cas de dépassement de la limite de requêtes par minute, voir Réessayer après. |
7 Exemple de programme
Exemple d'appel côté serveur. Veuillez remplacer lk_live_... par votre clé et stockez-la dans la variable d'environnement.
// 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 Suggestions d'intégration du centre commercial Laravel
0337.tw est le centre commercial Laravel. Il est recommandé de regrouper l'API des frais d'expédition dans un service backend et d'appeler : pendant le processus de paiement :
- Après avoir obtenu le poids total (kg)/volume du panier à la caisse, appelez /api/v1/freight/quote sur le backend et définissez le total_fee retourné comme frais d'expédition.
- La clé est placée dans .env (par exemple, LUCKY_FREIGHT_KEY) et lue avec config(). Ne codez pas la clé en dur dans le code du programme ni dans le front-end.
- Lorsque l'appel échoue (timeout / 429), le tarif mis en cache dans /rates est calculé localement en utilisant la même formule qu'une sauvegarde pour garantir un paiement ininterrompu.
- Le montant est en RMB ; Si le centre commercial règle la facture en nouveaux dollars taïwanais, veuillez appliquer vous-même la conversion du taux de change.
Exemple Laravel (façade 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); } }
Ajoutez 'lucky' => ['freight_key' => env('LUCKY_FREIGHT_KEY')] dans config/services.php, puis injectez LuckyFreightService dans le contrôleur de caisse pour obtenir le fret.
9 Support et versions
assistance technique : howyunqisoftware@gmail.com
Version API : v1 (stable). Toutes les modifications importantes seront publiées avec un nouveau numéro de version (v2), la v1 restera compatible.
Historique des modifications : 01/06/2026 — L'API Freight v1 est en ligne (Hai Express, prix en RMB).