Árvore de páginas


CONTEÚDO

01. VISÃO GERAL

E-Commerces podem ser integrados ao TOTVS Omni totalmente através das APIs REST do TOTVS Omni.

Desta forma o desenvolvimento da integração pode ser feita dentro dos sistemas E-Commerces (canal de venda) e assim não é necessário o desenvolvimento de conectores no OMNI para todas as operações de integração.

O TOTVS Omni disponibiliza APIs REST para realizar operações das duas entidades: Produtos e Pedidos.


IMPORTANTE!

Para utilizar a API REST do TOTVS Omni é necessário ter um usuário criado no TOTVS Omni com acesso administrativo à API, realizar a autenticação via endpoint "Autenticacao TOTVS Omni - Gerar Token" e utilizar o token gerado nas demais chamdas à API REST.

02. PUBLICAÇÃO DE PRODUTOS, PREÇO E ESTOQUE

Normalmente a publicação de produtos no canal de venda é realizada através de conector desenvolvido e publicado no TOTVS Omni, sendo assim o Omni é ativo na comunicação com o canal de venda e o canal de venda passivo nesta integração.

Porém, é possível que esta integração seja realizada pelo canal de venda, tornando-se o ativo, e o Omni seja passivo na integração: O Omni sendo consultado periodicamente pelo canal de venda.

Neste modelo cria-se publicações e associa-se produtos à publicação da mesma forma através da interface web do TOTVS Omni.
Como não existe conector cabe ao canal de venda realizar a consulta ao Omni para recuperar as informações sobre produtos publicados, incluindo preço e estoque.

Periodicamente é necessário que o método "calcularCambios" das publicações precisam ser executados. Este método atualiza a base do Omni com o valor da hash calculada para atributos, preços e estoque.
Esta atividade é necessária para que a consulta de produtos em publicações retorne somente os produtos adequadamente.

O fluxo a seguir demonstra como utilizar a Postman Collection anexada no fim desta página para desenvolver esta parte da integração com o TOTVS Omni:

A consulta "Lista de IDs de Produtos em Publicações" deve ser feita passando no body da requisção a lista de ids de produtos e suas respectivas hashs, que foram retornadas desde a ultima consulta e armazenadas do lado do canal de venda.
Desta forma o TOTVS Omni irá calcular se houve mudança de preço, atributo ou estoque perante as hashs apresentadas e retornar a lista somente dos produtos que sofreram alteração.

A lista de IDs de produtos retornada desta consulta é utilizada na consulta "Lista de Produtos em Publicações" para trazer os detalhes dos produtos.

Ambas consultas devem ser feita usando o Site ID do canal de venda (que representa o canal de venda do cliente no TOTVS Omni).
Veja Conceito de Sites, Lojas e Estrutura de Pedidos

Também é necessário que a propriedade  "gestionado.en.gestor.de.canales" do site canal de venda esteja ativa


Abaixo um exemplo de JSON de resposta da consulta de produtos com comentários nos campos mais importantes:

JSON Resposta
{
	"count": 64,          <- Quantidade total de produtos nas publicações. Utilizado para referenciar a paginação.
	"products": [         <- Array de produtos
		{
			"atributos": [...],   <- Lista de atributos com valores do produto.
			"precios": [...],     <- Informação de preço ("precio") e preço com desconto ("precioRebajado") a ser aplicado no canal de venda.
			"subProductos": [
				"idArticuloModalia": "02092021-001-TOTVS_DEMO_PRINCIPAL-SIN DEFINIR",
				"ean": "000000001",
				"sku": "10001",
				"stocks": [...],                 <- Estoque ("stock") por loja ("idTiendaExterno").
				"codigoAlfa": "02092021-001",    <- Código Alfa do produto.
				
			]
			"codigoAlfa": "02092021-001",
			"idArticuloModalia": "02092021-001-TOTVS_DEMO_PRINCIPAL",
			"imagenes": [...],                 <- Lista de imagens públicas do produto no Omni.
			"descripcion":"...",               <- Descrição do produto
			...


			"hashCodeProducto": -1262620199,   <- hash da ultima posição referente a mudança nos atributos de produto.
			"hashCodeStock": -902199240,       <- hash da ultima posição referente a mudança no estoque.
			"hashCodePrecio": 1569935053,      <- hash da ultima posição referente a mudança no preço.
		}, ...
	]
}

Importante que o canal de venda armazene o codigo de referência e o tamanho do produto (mesmo nos casos tamanho único) para que o canal de venda possa criar um pedido referenciando o produto.


05. CICLO DE VIDA DE PEDIDO

Com as informações de produtos, preço e estoque disponíveis no canal de venda, e uma vez selecionado o(s) produto(s) que o cliente deseja realizar a compra, o Ecommerce deve realizar a jornada do carrinho de compras culminando na criação do pedido no Omni.

Durante o carrinho de compras é possível realizar uma consulta no Omni para verificar os níveis de serviço de entrega, isto é, as formas de entrega dos produtos no carrinho de compras.

Para isso é necessário realizar a chamada à API REST correspondente.

Os níveis de serviço precisam ser previamente cadastrados pelo cliente dentro do TOTVS Omni, e o uso da API recebe como parametro o EAN do produto, conforme JSON explicado abaixo:

JSON Request
{
    "request_services": {
        "products": [           <- Lista de EAN do(s) produto(s) para consulta.
            {
                "line": "7909507201114"    <- EAN.
            }
        ],
        "isocode": "BRA",       <- Código da localidade. No Brasil utilizado "BRA".
        "zipcode": "87000001"   <- Código postal de entrega.
    }
}


A API retorna uma lista de informações sobre a entrega:

JSON Resposta
{
    "skus": [
        {
            "sku": "7909507201114",
            "item_weight": "0.115",
            "services": [
                {
                    "service_id": "Economica.PAC.144_03298",    <- Código do nível de serviço que deve ser enviado na criação do pedido.
                    "service_code": "Economica.PAC.144",
                    "service_logistic_code": "03298",           <- Código logístico para o nível de serviço.
                    "service_name": "Entrega em até 6 dias - PAC",    <- Nome do nível de entrega.
                    "service_type": "1",
                    "service_cost": 9.9,        <- Custo da entrega.
                    "ETD_from": "07/12/2021",    <- Data estimada da entrega.
                    "express": false,
                    "stores": [],
                    "storesSource": [   <- Lista de lojas que podem realizar a entrega com o nível de serviço selecionado.
                        {
                            "storeId": "1",
                            "stock": 476,
                            "id": 9000,
                            "address": "R. REBOUCAS",
                            "cp": "87030410",
                            "location": "MARINGA",
                            "name": "RECCO LINGERIE - FABRICA"
                        },
                        ...
                    ]
                },
                ...
            ],
            "weight_limit_exceeded": false   <- Indicação se a entrega excederia o limite de peso estabelecido no nível de serviço.
        }
    ],
    "services": [...]                        <- Lista de Serviços ativos, indicando se todos os produtos estão disponíveis ("all_requested_sku_available") ou não com o nível indicado.
}

As informações contidas na resposta devem ser analisadas pelo canal de venda e exibidas de acordo com o requisito de negócio do canal de venda.


Os pedidos só devem ser criados no TOTVS OMNI após a confirmação do pagamento realizada no canal de venda.

O Fluxo a seguir exemplifica o ciclo de vida de um pedido pago e o consumo de APIs do Omni que os Ecommerce devem fazer para prosseguir com este pedido pelo fluxo (veja Ciclo de Vida de Pedido).

 Ao retornar a lista de pedidos filhos (veja Ciclo de Vida de Pedido) o canal de venda pode exibir ao cliente o status e demais detalhes do pedido, incluindo se ele foi splitado ou não.


06. POSTMAN COLLECTION

Abaixo uma postman collection contendo as chamadas relacionadas neste documento.

Consumo de APIs REST para E-Commerce.postman_collection.json