Informar a venda
A cesta diz o que foi para o carrinho do ERP. A venda diz que ela virou pedido. Quando a venda for concluída no ERP, informe à Sipru com o número do pedido: é o que confirma os Sipru Points do vendedor contra as vendas que o ERP envia para a Sipru.
A rota
POST $SIPRU_BASE_URL/api/erp/channel/{channelId}/venda
O channelId é o mesmo do atendimento que gerou a cesta. A chamada vale mesmo depois de o
atendimento acabar: com o canal expirado ou encerrado, a Sipru aceita a venda se aquele canal
já teve uma cesta fechada pelo seu ERP.
curl -X POST $SIPRU_BASE_URL/api/erp/channel/$CHANNEL_ID/venda \
-H "Authorization: Bearer $SIPRU_SECRET" \
-H "X-Sipru-Partner-Id: $SIPRU_PARTNER_ID" \
-H "X-ERP-Name: $ERP_NAME" \
-H "X-ERP-Version: $ERP_VERSION" \
-H "X-CNPJ: $CNPJ_LOJA" \
-H "Content-Type: application/json" \
-d '{
"orderCode": "<numero-do-pedido-no-erp>",
"items": [
{ "sku": "<codigo-do-produto>", "quantity": 1, "price": 12.61 }
]
}'
Os headers são os mesmos de toda chamada à Sipru — ver Headers.
O corpo
O corpo é o mesmo do fechamento da cesta, mais o número do pedido:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
orderCode | string | recomendado | Número do pedido no ERP: o mesmo order_code que aparece nas vendas que o ERP envia para a Sipru. Até 64 caracteres: letras, números, ., _, - e /. |
items | array | sim | Os itens vendidos, com as quantidades e preços finais. De 1 a 200 linhas. |
Sem orderCode a venda é registrada do mesmo jeito, mas não dá para confirmá-la contra as
vendas do ERP. Um orderCode fora do formato é ignorado, sem recusar a chamada.
Quando chamar
- Na conclusão da venda no ERP (pedido gerado ou faturado), uma vez por pedido.
- Se o pedido mudar depois (item removido, quantidade corrigida), chame de novo com os itens atualizados: a venda daquele atendimento é sobrescrita.
- Se o atendimento não virar venda, não chame nada: a cesta fica como está.
A resposta
A mesma do fechamento da cesta, com documentType: "venda" e
id terminado em :venda.
Erros
| HTTP | code | Significado |
|---|---|---|
| 400 | — | items ausente ou vazio, mais de 200 linhas, ou linha sem sku/quantity/price válidos. |
| 401 | — | Credencial de parceiro ausente ou inválida. |
| 404 | CHANNEL_NOT_FOUND | Canal inexistente, de outro parceiro, ou expirado sem nenhuma cesta fechada antes. |
| 500 | — | Erro inesperado no servidor. |
| 503 | — | Falha ao gravar a venda. Pode repetir. |
O contrato formal está em
closeChannelAsVenda na referência da API.