Frete de App parceiro

Calcule o frete dos produtos criados pelo seu App diretamente no checkout, no mesmo estilo do CarrierService da Shopify.

Como funciona

Se o seu App cria produtos na loja via API, ele também pode cotar o frete desses produtos no checkout. Você registra uma URL de cotação e a Sellit a chama de forma síncrona durante o checkout. Vale apenas para itens cujo produto foi criado pelo seu App (campo sourceClientId); produtos do próprio lojista seguem usando o cálculo de frete normal da loja.

  1. 1. Registre o provedor de frete

    Com escopo shipping:write, envie a URL que receberá as cotações. O secret (usado para assinar as chamadas) é retornado uma única vez — guarde-o com segurança.

    http
    POST /api/v1/shipping/providers
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    { "url": "https://seu-app.com/sellit/frete" }
    
    → 201 { "id": "...", "url": "...", "secret": "shpsec_..." }

    Cada App tem um provedor por loja. Para trocar a URL ou desativar, use PATCH /api/v1/shipping/providers/{id} com { url?, active? }; para remover, use DELETE. Liste os registros com GET /api/v1/shipping/providers (escopo shipping:read).

  2. 2. Receba a cotação no checkout

    No checkout, a Sellit faz um POST na sua URL com o CEP de destino e os itens do App. O corpo é assinado em X-Sellit-Signature-256 (HMAC-SHA256 do corpo cru com o seu secret) — valide antes de responder.

    json
    POST https://seu-app.com/sellit/frete
    X-Sellit-Signature-256: sha256=<hmac>
    
    {
      "destination": { "cep": "01310100" },
      "items": [
        { "productId": "...", "sku": null, "quantity": 1, "price": 89.9, "weightKg": 0.3 }
      ]
    }
  3. 3. Responda com as opções de frete

    Devolva as tarifas em rates. Só entram itens com id, name e price numérico; deliveryTime é opcional.

    json
    {
      "rates": [
        { "id": "expressa", "name": "Entrega expressa", "price": 24.9, "deliveryTime": "2 dias úteis" },
        { "id": "economica", "name": "Econômica", "price": 12.5 }
      ]
    }
A chamada é best-effort com timeout de 5 s: se sua URL demorar, falhar ou responder algo inválido, ela apenas não aparece nas opções de frete — o checkout do lojista nunca quebra por causa disso.