Escolar Documentos
Profissional Documentos
Cultura Documentos
Interfaces de
Integração
SUMÁRIO
Introdução 2
Interfaces de Integração 2
Integração de Catálogo 4
Integração de Estoque 9
Integração de Preço 10
Este documento tem como objetivo mapear as interfaces necessárias para integração entre os
sistemas VTEX e pegada.
O sistema VTEX utiliza interfaces que se conectam através de REST APIs, exceto para a
integração de Catálogo (produtos, SKUs, categorias, marca, etc) que utiliza Web Service SOAP.
Para se comunicar com a VTEX será necessário criar um programa para acessar as APIs e
atualizar/consumir os dados da loja, através de uma comunicação REST.
Sendo assim não é necessário fechar uma VPN ou criar um range de IPs para troca de
informações entre os sistemas.
Interfaces de Integração
Alguns programas nos ajudam a lidar com APIs e construir requests rapidamente. Um dos mais
utilizados é o Postman, que usamos aqui como referência. E para Web Service sugerimos que
utilize soapUI.
Toda chamada feita ao Web Service deve ser em “https” e um usuário e senha são exigidos para
iniciar a conexão. As chamadas para as APIs REST também devem ser feitas em “https” e
devem conter em seu header as chaves de autenticação.
Para fins de rastreabilidade, cada integração (diferentes sistemas ou ERP) deve possuir seu
usuário exclusivo.
Nos artigos abaixo você encontrará informações sobre a autenticação de segurança com
interfaces REST na VTEX:
http://help.vtex.com/pt/tutorial/criar-appkey-e-apptoken-para-autenticar-integracoes
http://help.vtex.com/pt/tutorial/autenticando-com-usuario-e-senha-na-interface-rest-2
É importante ter a definição clara de acessos e permissões dentro do Admin da loja. Abaixo você
pode consultar mais informações sobre perfis de acesso:
http://help.vtex.com/pt/tutorial/como-criar-perfil-de-acesso
http://help.vtex.com/pt/tutorial/visao-geral-do-modulo-license-manager
Integração de Catálogo
Nesse cenário de fluxo completo (imagem abaixo), a maioria dos dados de produtos e SKUs são
manipulados pelo ERP. A manipulação de campos de especificação nesse modelo é possível
ser feita por API REST, mas a melhor prática seria pelo admin da VTEX.
Nesse tipo de integração a administração da loja está no admin da VTEX, sendo o ERP apenas
uma fonte de onde nascem os produtos e SKUs.
Nesse cenário de fluxo básico, apenas os dados básicos de produtos e SKUs são manipulados
pelo ERP, e todo o enriquecimento (marca, fornecedor, imagens, categoria, ativação, etc.) será
feito pelo admin da loja na plataforma VTEX.
http://help.vtex.com/pt/tutorial/guia-de-integracao-de-erps-catalogo-expresso
http://help.vtex.com/pt/tutorial/manual-das-classes-e-metodos-usados-no-webservice/
Produto
Métodos: “ProductInsertUpdate”
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:vtex="http://schemas.datacontract.org/2004/07/Vtex.Commerce.WebApps.AdminWcfServi
ce.Contracts" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<soapenv:Header/>
<soapenv:Body>
<tem:ProductInsertUpdate>
<tem:productVO>
<!--int, identificdor da marca-->
<vtex:BrandId>2000011</vtex:BrandId>
<!--int, identificdor da categoria-->
<vtex:CategoryId>1000020</vtex:CategoryId>
<!--int, identificdor do departamento-->
<vtex:DepartmentId>1000018</vtex:DepartmentId>
<!--string, descrição completa do produto-->
<vtex:Description>Vaso de barro vermelho, feito a mão com barro do mar
vermelho</vtex:Description>
<!--string, descrição curta do produto-->
<vtex:DescriptionShort>Vaso de barro vermelho artesanal</vtex:DescriptionShort>
<!--int, opcional, identificador no ERP caso int-->
<vtex:Id>1234567</vtex:Id>
<!--bool, se não atender requisitos de ativação(ter SKUs ativas), não será ativado-->
<vtex:IsActive>true</vtex:IsActive>
<!--bool, vai ser visível no site-->
<vtex:IsVisible>true</vtex:IsVisible>
<!--string, palavras chaves relevantes para a busca-->
<vtex:KeyWords> Barro, vaso, vermelho</vtex:KeyWords>
<!--lista de inteiros, pra qual canal de vendas = loja principal = 1-->
<vtex:ListStoreId>
<arr:int>1</arr:int>
<arr:int>2</arr:int>
</vtex:ListStoreId>
<!--meta tag de description (SEO)-->
<vtex:MetaTagDescription>feito a mão com barro do mar
vermelho</vtex:MetaTagDescription>
<!--string, nome do produto-->
<vtex:Name>Vaso Artesanal de Barro Vermelho</vtex:Name>
<!--string, identificador do produto no ERP-->
<vtex:RefId>1234567890</vtex:RefId>
<!--string, titulo do produto-->
<vtex:Title>Vaso Artesanal de Barro Vermelho</vtex:Title>
</tem:productVO>
</tem:ProductInsertUpdate>
</soapenv:Body>
</soapenv:Envelope>
SKU
Uma vez inseridos todos os produtos, que teoricamente são os pais das SKUs, chegou o
momento de enviar os SKUs filhos dos produtos. Abaixo exemplo de chamada de uma inserção
de SKU usando o metodo “StockKeepingUnitInsertUpdate”:
Métodos: “StockKeepingUnitInsertUpdate”
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:vtex="http://schemas.datacontract.org/2004/07/Vtex.Commerce.WebApps.AdminWcfServi
ce.Contracts">
<soapenv:Header/>
<soapenv:Body>
<tem:StockKeepingUnitInsertUpdate>
<tem:stockKeepingUnitVO>
<!--decimal, cubagem = peso cubico -->
<vtex:CubicWeight>100</vtex:CubicWeight>
<!--decimal, altura com embalagem e metros-->
<vtex:Height>1.800</vtex:Height>
<!--int, opcional, identificador da sku no ERP caso int-->
<vtex:Id>00123456</vtex:Id>
<!--bool, se não atender requisitos de ativação(imagem, preço, estoque, espec., outros
reqs obrig.), não será ativado-->
<vtex:IsActive>true</vtex:IsActive>
<!--bool, disponibilidade -->
<vtex:IsAvaiable>true</vtex:IsAvaiable>
<!--bool, é um KIT? -->
<vtex:IsKit>false</vtex:IsKit>
<!--decimal, comprimento com embalagem em metros -->
<vtex:Length>1.52</vtex:Length>
<!--decimal, ** ler obs -->
<vtex:ListPrice>150.0</vtex:ListPrice>
<!--number, prefixo do estoque (id estoque = 1_1, mandar 1) -->
<vtex:ModalId>1</vtex:ModalId>
<!--string, opicional, tipo de carga, necessita configuração de transportadora especial
quando preenchido -->
<vtex:ModalType>Vidro</vtex:ModalType>
<!--string, nome da SKU -->
<vtex:Name>Vaso Artesanal de Barro Vermelho Escuro </vtex:Name>
<!--decimal, preço, "POR", opcional **ler obs-->
<vtex:Price>110.0</vtex:Price>
<!--int, identificador do produto pai da SKU -->
<vtex:ProductId>31018369</vtex:ProductId>
<!--decimal, peso real em kilos -->
<vtex:RealHeight>1.740</vtex:RealHeight>
<!--decimal, altural real em metros -->
<vtex:RealLength>1.60</vtex:RealLength>
<!--decimal, peso real em kilos -->
<vtex:RealWeightKg>2.750</vtex:RealWeightKg>
<!--decimal, comprimento real em metros -->
<vtex:RealWidth>1.7</vtex:RealWidth>
<!--string, identificador da SKU no ERP -->
<vtex:RefId>00123456</vtex:RefId>
<!--number, opcional, numero de pontos dessa SKU -->
<vtex:RewardValue>0</vtex:RewardValue>
<!--lista de string, EANs do produto -->
<vtex:StockKeepingUnitEans>
<vtex:StockKeepingUnitEanDTO>
<vtex:Ean>0123456789123</vtex:Ean>
</vtex:StockKeepingUnitEanDTO>
</vtex:StockKeepingUnitEans>
<!--int, unidade de multipliçao para venda -->
<vtex:UnitMultiplier>1</vtex:UnitMultiplier>
<!--decimal, peso em kilos-->
<vtex:WeightKg>1.5</vtex:WeightKg>
<!--decimal, largura com embalagem em metros -->
<vtex:Width>2.780</vtex:Width>
</tem:stockKeepingUnitVO>
</tem:StockKeepingUnitInsertUpdate>
</soapenv:Body>
</soapenv:Envelope>
Atenção: o ERP não deve inferir um ID no cadastro de um novo SKU, deixando o campo vazio
(null), fazendo com que a VTEX gerencie a criação de IDs. O ID que for gerado pode ser
recuperado pelo response do request e deve ser armazenado no sistema para futuras
atualizações deste produto/SKU
O código do SKU nativo do ERP deve ficar no campo RefID na VTEX.
Integração de Estoque
Antes de iniciar a carga de estoque dos SKUs é necessário ir no Admin da VTEX e Cadastrar
Estoque. Veja mais em http://help.vtex.com/pt/tutorial/gerenciar-estoque. A plataforma VTEX
permite que você tenha mais de 1 estoque (warehouse), e a integração indicará para qual
estoque (warehouse) o saldo será impactado.
A integração é feita por REST API e você pode encontrar mais detalhes em
https://documenter.getpostman.com/view/3848/logistics/Hs42#2e41254e-0d48-fcb0-c849-4a76c6
ebf390
http://logistics.{{environment}}.com.br/api/logistics/pvt/inventory/skus/{{skuI
d}}/warehouses/{{warehouseId}}?an={{accountName}}
Sample Request:
Integração de Preço
ATENÇÃO: no body da request PUT é necessário informar o número da Política Comercial para
qual o item será vendido, caso ele esteja disponível em mais de uma Política.
Vamos olhar com mais detalhes cada um dos passos da integração de pedido.
Download de pedido
A primeira coisa que você precisa para o download de um pedido é saber o momento certo de
fazer isso. Para ajudá-lo nessa tarefa, a VTEX oferece o Feed de pedidos. Esse serviço informa
mudanças importantes no workflow do pedido, especialmente mudanças no status dos pedidos.
Após decidir que é hora de levar um pedido para sua plataforma de fulfillment, você precisa
apenas fazer o download dos detalhes desse pedido e dizer ao feed que ele não precisa lhe
enviar aquele evento novamente, uma vez que seu interesse nele terminou.
No fim, para os pedidos processados, você envia ao OMS uma mensagem de “Start Handling”.
Fatura
Agora o pedido está sendo processado por sua plataforma de fulfillment. Durante esse processo,
você pode precisar fazer mudanças no pedido original, seja por conta de ruptura de estoque,
seja por outra razão qualquer. Você pode desejar remover, adicionar ou alterar ítens, causando
ou não mudanças no valor do pedido.
Quando você estiver pronto para a entrega do pedido, é hora de informar isso à VTEX. Assim, a
autorização de pagamento poderá ser capturada e o consumidor será notificado sobre o
progresso.
Chamadas de API
Rastreamento de pedido
Embora não seja um passo necessário para que o pedido chegue ao consumidor, esta é uma
das funcionalidades mais importantes para uma boa experiência do usuário. Não há nada como
saber com precisão a localização do produto comprado.
Não há limite para o número de mensagens de rastreamento que podem ser adicionadas a uma
fatura. Normalmente, é adicionada uma mensagem para cada evento de rastreamento até que
os itens sejam entregues ao comprador. No caso de produtos digitais, este último evento seria a
URL para download.
Quando, por algum motivo operacional, você precisar cancelar o pedido sendo processado, você
pode enviar uma mensagem de cancelamento ao workflow do OMS. Se o pedido estiver em um
status que não permite cancelamento, aparecerá um erro.
Atenção: pedidos com fatura não podem ser cancelados.
Chamada de API
https://documenter.getpostman.com/view/487146/oms/6tjSKqi#8e74afca-431d-413e-92ad-01710
2abdbe2
curl --request POST \
--url 'http://{{accountName}}.{{environment}}.com.br/api/oms/pvt/orders/{{orderId}}/cancel' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-vtex-api-appkey: {{X-VTEX-API-AppKey}}' \
--header 'x-vtex-api-apptoken: {{X-VTEX-API-AppToken}}'