Pular para o conteúdo principal

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:

CampoTipoObrigatórioDescrição
orderCodestringrecomendadoNú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 /.
itemsarraysimOs 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​

HTTPcodeSignificado
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.
404CHANNEL_NOT_FOUNDCanal 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.