mercado de serviços / Documentação de desenvolvimento de API de taxa de envio
API de coleta de frete Marítimo expresso · v1

Documentação de desenvolvimento de API de taxa de envio

China → API de cálculo em tempo real de frete expresso marítimo de Taiwan. O preço é em RMB, suportando faturamento real por peso e volume (peso volumétrico), com uma única solicitação retornando detalhes completos do faturamento. Especialmente projetado para cotações de frete front-end de plataformas de comércio eletrônico transfronteiriços, como 0337.tw.

Marítimo expresso

Método de envio (Sea Express)

¥10/kg

Taxa por quilograma (RMB)

+¥20

Sobretaxa para peso faturável inferior a 10kg

<50ms

tempo médio de resposta

1 Visão geral

A API de frete permite que sua plataforma exiba instantaneamente "China → Taiwan Sea Express Collection Fee" na recepção, eliminando o fardo de manter sua própria tabela de taxas.

o que pode ser feito

  • Cálculo de frete - Insira o peso do pacote (ou comprimento, largura e volume) e devolva a taxa de envio expresso marítimo (RMB) do pacote.
  • Obter taxa - Consulte a taxa atual por quilograma, limite de sobretaxa e coeficiente de conversão de volume, que é conveniente para você calcular ou armazenar em cache no front-end.

Todas as respostas estão em JSON, em um formato de envelope unificado: quando bem-sucedido, success: true com data; quando falhou, success: false com código error e message.

Moeda de preço : RMB (CNY / ¥). A taxa desta API é a taxa do projeto de cooperação de comércio eletrônico transfronteiriço, que é mantida separadamente do cálculo experimental de envio do site oficial 0523.tw (NTD). Se precisar de uma cotação em novos dólares taiwaneses ou outros métodos de envio, entre em contato conosco para ativar.

2 Certificação e informações básicas

Todas as solicitações devem trazer API Key. Pode ser colocado no cabeçalho Authorization (recomendado) ou no cabeçalho X-API-Key.

Base URL

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

Cabeçalho de autenticação (escolha um)

Método A – Token ao Portador (recomendado)

Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

Método B - Chave X-API

X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

A chave de API começa com lk_live_. Mantenha seguro e nunca coloque em JavaScript front-end ou repositórios Git públicos; todas as chamadas devem ser feitas do lado do servidor.

Limite de taxa

Cada chave tem um limite de solicitações por minuto, e o cabeçalho da resposta informará o limite restante:

cabeçalhoilustrar
X-RateLimit-LimitNúmero de solicitações permitidas por minuto
X-RateLimit-RemainingNúmero de solicitações restantes neste minuto
Retry-AfterNúmero de segundos de espera pelo limite de tempo excedido (HTTP 429)

Para obter a melhor experiência de front-end, é recomendável armazenar em cache os resultados /rates por alguns minutos e calculá-los com a mesma fórmula em seu próprio servidor. Ligue apenas para /quote para verificação durante as etapas críticas de fazer um pedido.

3 Ponto final: obter taxa

GET /api/v1/freight/rates

Lista todos os métodos e taxas de envio atualmente ativados. Nenhum parâmetro é necessário.

perguntar

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

Resposta 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 Endpoint: cálculo de frete

GETPOST /api/v1/freight/quote

A taxa de envio expresso marítimo é calculada com base no peso/volume do pacote. Tanto GET (query string) quanto POST (JSON ou formulário) são aceitáveis.

Parâmetros de solicitação

parâmetroTipoObrigatórioilustrar
weightnumberOpcional*Peso real em quilogramas (kg).
lengthnumberOpcional*Comprimento, a unidade é centímetros (cm).
widthnumberOpcional*Largura em centímetros (cm).
heightnumberOpcional*Altura, a unidade é centímetros (cm).
methodstringOpcionalO método de envio é atualmente sea (sea express). Quando omitido, sea é assumido.
* weight e "completo/largura/altura" escolha pelo menos um . Quando ambos são fornecidos, o sistema considera o maior entre “peso real” e “peso volumétrico” como peso de faturamento.

Exemplo de solicitação (GET)

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

Exemplo de solicitação (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}'

Resposta 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
  }
}

Descrição do campo de resposta

campoilustrar
actual_weightPeso real (kg). 0 se não for fornecido.
volume_weightVolume (volume) peso (kg) = comprimento × largura × altura ÷ 10000. 0 se nenhum tamanho for fornecido.
billable_weightPeso faturável (kg) = máx (peso real, peso volumétrico).
billable_basisO faturamento é baseado em :actual (com base no peso real) ou volumétrico (com base no volume).
freightFrete básico = peso faturado × taxa por quilograma (sem sobretaxas).
surchargeA sobretaxa real para esta transação (0 se não for acionada).
surcharge_appliedSe deve acionar a sobretaxa (peso de faturamento
total_feeO frete final a receber é (RMB, arredondado para o número inteiro mais próximo).

5 Fórmulas e exemplos de cobrança

A lógica de cálculo desta API é consistente com a calculadora Marítimo expresso do site oficial 0523.tw, apenas a taxa é alterada para a taxa do projeto de cooperação. Você pode pré-calculá-lo usando a mesma fórmula em seu próprio sistema.

① Peso do volume = comprimento × largura × altura (cm) ÷ 10000
② Peso de faturamento = máx (peso real, peso volumétrico)
③ Frete básico = Peso de faturamento × ¥10/kg
④ Sobretaxa = Peso de faturamento < 10kg ? +¥20 : ¥0
⑤ Frete a receber = redondo(③ + ④)

Exemplos práticos

¥1008 kg Pacote → Peso de faturamento 8kg < 10kg → 8×10 + 20 = 100
¥20020 kg Pacote → Peso de faturamento 20kg ≥ 10kg → 20×10 = 200 (sem custo adicional)
¥705 kg + caixa 40×30×30cm → peso volumétrico 3,6kg, peso faturável 5kg → 5×10 + 20 = 70
¥1203 kg + caixa 60×50×40cm → peso volumétrico 12kg > peso real, peso faturável 12kg ≥ 10kg → 12×10 = 120 (sem custo adicional)
¥150 Caixa 50×50×60cm (apenas tamanho) → Peso volumétrico 15kg, peso de faturamento 15kg ≥ 10kg → 15×10 = 150

6 código de erro

A resposta de erro é sempre { "success": false, "error": "...", "message": "..." }.

HTTPerrorilustrar
401missing_api_keyNenhuma chave de API é fornecida. Adicione autorização ou cabeçalho X-API-Key.
401invalid_api_keyA chave de API é inválida.
403key_suspended / key_revoked / key_expiredA chave foi desativada/revogada/expirada.
403insufficient_scopeA chave não possui a permissão freight:read.
422validation_failedErro no formato do parâmetro (tipo, intervalo).
422missing_parametersNenhum peso ou comprimento/largura/altura total fornecido.
422unsupported_methodmétodo não está na lista disponível.
429rate_limit_exceededExcedendo o limite de solicitações por minuto, consulte Tentar novamente após.

7 Exemplo de programa

Exemplo de chamada do lado do servidor. Substitua lk_live_... pela sua chave e armazene-a na variável de ambiente.

// 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 Sugestões de integração do shopping Laravel

0337.tw é o shopping Laravel. Recomenda-se empacotar a API de taxa de envio em um serviço de back-end e ligar: durante o processo de finalização da compra:

  • Depois de obter o peso total (kg)/volume do carrinho de compras na finalização da compra, ligue para /api/v1/freight/quote no backend e defina o total_fee devolvido como a taxa de envio.
  • A chave é colocada em .env (por exemplo, LUCKY_FREIGHT_KEY) e lida com config(). Não escreva a chave diretamente no código do programa nem no front-end.
  • Quando a chamada falha (tempo limite/429), a taxa armazenada em cache em /rates é calculada localmente usando a mesma fórmula de um backup para garantir uma verificação ininterrupta.
  • O valor está em RMB; se o shopping liquidar a conta em novos dólares de Taiwan, aplique você mesmo a conversão da taxa de câmbio.

Exemplo Laravel (fachada 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);
    }
}

Adicione 'lucky' => ['freight_key' => env('LUCKY_FREIGHT_KEY')] em config/services.php e, em seguida, injete LuckyFreightService no controlador de checkout para obter o frete.

A centralização da taxa de fonte única de verdade : é mantida por HowBridge. Após ajustarmos a taxa, a API irá refleti-la imediatamente e seu shopping será atualizado simultaneamente sem qualquer revisão.

9 Suporte e versões

suporte técnico: howyunqisoftware@gmail.com

Versão da API: v1 (estável). Quaisquer alterações importantes serão lançadas com um novo número de versão (v2), a v1 permanecerá compatível.

Histórico de alterações: 01/06/2026 — A API de frete v1 está online (Hai Express, com preço em RMB).

Solicite uma chave de API