Você está na página 1de 33

Objetivo:

Tranformar magento 2 em um marketing place conectado com Anymarket, mantenedora de


informações de selers e produtos vendidos pelos mesmo. Não sendo necessário o seler usar painel
administrativo para gerenciar suas vendas e seus produtos.
O gerencimento do seler é feito atravé do painel da Anymarketing o qual faz toda a comunicação
com o magento através de integração com API’s.

Etapas:

 Seler acessa painel anymaketing;


 Seler solita integração com marketing place na lista disponível pela anymarket (Eletrosom);
 Com identificação fornecidada pela Eletrosom o Seler conecta e ativa as configurações para
integrar com o marketing place da Eletrosom.MApós está ativo, pela integração do painel
da Anymarket ele vincula sua categorias, marcas, protudos que serão cadastrados no
magento da Eletrosom.
 Os produtos que foram cadastrados pelos selers apareceram na lista de produtos do
magento da Eletrosom, sendo marcado de qual seler se refere o item, seguindo o mesmo
fluxo de pedido até o inicio da finalização da compra dos itens do carrinho.
 Topo pedido e compra efetuado no Magento da Eletrosom de produtos de seler serão
informados para Anymarket através de API’s para que o seler tenha controle de suas
vendas.
 O pagamento de pedidos com produtos de selers passarão pelo por um split de pagamento.
 Carrinho com produtos exclusivos de 1 seler devem seguir somente o fluxo de split
para divisão do pagemento para o seler e para eletrosom de acordo com o %
acordados
 Carrinho com produtos de vários selers deve ser fechado o pagemento por seler para
que seja feito o pagemento para o devido seler através do split de pagameto.
 Carrinho com produtos de seler e da Eletrosom deve ser finalizados primeiramento os
da Eletrosom e sem seguida os dos selers de acordo com o item acima.
 Integração interna de vendas para que seja tratada as vendas feitas pela eletrosom e por
seler de forma que integrem nos sistemas legados.

Integração Any - Eletosom API Magento


API Anymarketing

Localização dos arquivos no servidor:

Integração Any - Eletosom


/var/www/maketingplacein/
API Magento

/var/www/plastaDoMagento/pub/shell/ws/integrador/api_marketingplace

Localização dos arquivos no projeto:

Integração Any - Eletosom

/PASTA DO PROJETO
API Magento

/PASTA DO PROJETO/public/shell/ws/integrador/api_marketingplace

Bando de Dados:
Banco de dados do Magento de Homologação
Tabelas com prefixo “seler”

Dados de Acesso:
Os mesmo usado no magengo de homologação

Acesso painel Anymarket:

http://sandbox.anymarket.com.br/
usuario: tecnologia23@eletrosom.com
senha: @Any123
Token: LG1617803655012R-1251584596
OI.: 34039850.
appId: 87a490e9a1e6f97f5d8475844daf37e4

Documentação ANYMARKET:
https://documenter.getpostman.com/view/7213315/TW76CPzn#intro
http://developers.anymarket.com.br/v1/index.html

http://developers.anymarket.com.br/v2/index.html

Url's cadastradas no sandbox da anymarket.

1- TELA DO MODULO
http://carrinhohomologacao.eletrosom.com/marketplace/seller

2- URL BASE MIDDLEWARE


http://carrinhohomologacao.eletrosom.com/marketplace/api/v1/

3- URL BASE MIDDLEWARE REMOTE /toggle


http://carrinhohomologacao.eletrosom.com/marketplace/api/v1/
Criando Vendas no Ambiente Sandbox

Configurando URL de Call-back

No menu lateral do Anymarket, selecione a opção Configuração -> Parâmetros


Clique no botão “Adicionar primeira URL”;

Preencha o campo que irá aparecer na tela com a sua URL e clique no botão salvar.
Configurando o Marketplace

No menu lateral do Anymarket, selecione a opção Configuração -> Integrações -> Ecommerce

Em seguida defina um Mark-up para o Marketplace, um valor de desconto se assim desejar e


clique em salvar.

Insira os valores de Markup e desconto com 1 e 0 respectivamente.

Publicando um Produto

Já possuindo pelo menos um produto integrado no Anymarket que tenha estoque, você pode
clicar no botão editar do produto.

Em seguida, clique no botão Marketplaces, localizado acima do campo descrição do produto.

Clique no botão Nova Publicação e em seguida, escolha a opção Ecommerce.


Espere a publicação do Ecommerce aparecer e clique no botão Confirmar.

Confirme o anúncio

E verifique na tela de transmissões se a publicação está ativa na tela de transmissões.

Criando a venda

Utilizando a ferramenta Postman, execute uma chamada POST no endpoint de ORDER


enviando o seguinte JSON, alterando os valores de partnerId, createdAt, paymentDate, além
de adequar os valores do json de preço para os dados que se adequem ao seu produto
transmitido.
Url: http://sandbox-api.anymarket.com.br/v2/orders

Header da requisição:
Json:
{
"accountName": "ECOMMERCE",
"marketPlaceId": "10000{{$randomInt}}",
"marketPlaceNumber": "10000{{$randomInt}}",
"marketPlace": "ECOMMERCE",
"createdAt": "2018-01-02T09:01:08-03:00",
"paymentDate": "2018-01-02T09:02:03-03:00",
"transmissionStatus": "OK",
"status": "PAID_WAITING_SHIP",
"marketPlaceStatus": "PAID_WAITING_SHIP",
"discount": 0,
"freight": 0,
"interestValue": 0,
"gross": 310,
"total": 310,
"shipping": {
"city": "Maringá",
"state": "PR",
"country": "BR",
"address": "Rua Emiliano Perneta -1010 - 42 andar – Joao Bosco",
"number": "1010",
"neighborhood": "Joao Bosco",
"street": "Rua Emiliano Perneta",
"comment": "42 andar",
"zipCode": "10120-080"
},
"billingAddress": {
"city": "Maringá",
"state": "PR",
"country": "Brasil",
"number": "99",
"neighborhood": "Alvorada",

1
Long Token Fornecido pela equipe de parcerias ao gerar o usuário
"street": "Rua Das Amélias",
"comment": "casa",
"zipCode": "87020035"
},
"buyer": {
"name": "Rick Sanches",
"email": "email322@email3.com",
"document": "57814258707",
"documentType": "CPF",
"phone": "(43) 99927-4719",
"documentNumberNormalized": "12673565370"
},
"payments": [
{
"method": "Cartão de Crédito",
"value": 310
}
],
"items": [
{
"sku": {
"title": "CHEVROLET IMPALA 1967",
"partnerId": "impala67"
},
"amount": 1,
"unit": 310,
"gross": 310,
"total": 310,
"discount": 0
}
]
}
Após enviar a requisição, caso um sucesso seja retornado, sua venda ficará disponível na tela de
vendas do sistema.
Passos necessários para integração
Marketplace - ANYMARKET

OBJETIVO:
O ANYMAKET desenvolveu uma nova API em que é possível realizar a integração com o papel de Marketplace. Dessa
forma, os próprios marketplaces podem realizar a integração com o ANYMARKET e ficarem disponíveis nas configurações
de integrações de marketplaces dos sellers ANYMARKET.
ÁREA RESPONSÁVEL:
API - ANYMARKET
O responsável deve ser contatado nos casos de:
Contar o time de API através do e-mail api@anymarket.com.br para eventuais duvidas referente a duvidas referente a
integração.
1. Primeiros Passos
Para o início do desenvolvimento da integração, deverá ser preenchido o formulário para liberação do Marketplace. Este
formulário é enviado para a equipe de desenvolvimento que disponibiliza o novo marketplace dentro do ANYMARKET. Nesse
momento, serão enviados para você um usuário do ANYMARKET para que você realize os testes do seu desenvolvimento e o
appId, que é o identificador do seu marketplace dento do ANYMARKET. Este id deverá ser utilizado em todas as chamadas que
você realizar na integração

Dúvidas, sugestões e feedbacks podem ser encaminhados por e-mail para api@anymarket.com.br.

Informações Importantes Limites

Seja legal. Se você estiver enviando muitas requisições rapidamente, nós retornaremos um código de erro 429 (too many
requests). Você tem um limite de 10 requisições por segundo por token.

Operações

Nós fazemos o nosso melhor para que todas as nossas URLs sejam RESTful. Cada URL pode suportar um dos quatro diferentes
tipos de verbos HTTP:

 GET obtém informações sobre um recurso


 POST cria um recurso
 PUT atualiza um recurso
 DELETE exclui um recurso

Estrutura

Paginação

A grande maioria das requisições que retornam uma coleção de recursos são paginadas. Por padrão a consulta retorna 5
recursos por página. No entanto, nós permitimos que esse número seja aumentado até um máximo de 100. Abaixo segue os
parâmetros que alteram a forma como a página é retornada:

offset: Indica a partir de qual recurso a consulta irá começar


limit: Indica a quantidade de recursos a serem retornados, indo de 20 a no máximo 100.
sort: Indica por qual atributo a consulta deve ser ordenada

1. Autenticação com API Marketplace

Para a autenticação com a API Marketplaces, o parceiro deve enviar o appId fornecido pelo ANYMARKET; essa informação é o
identificador único do marketplace. Além dessa informação, o parceiro também deve encaminhar para as chamadas ao
ANYMARKET, o Token fornecido pelo ANYMARKET para o lojista.

Exemplo de Chamada:
Autenticação ANYMARKET com Parceiro
A tecnologia utilizada é a autenticação JWT (https://jwt.io/). O ANYMARKET encaminhará um token JWT com as seguintes
informações:
 OI - Organization ID, identificador único do lojista; esse campo diferencia os sellers
 IP – IP do usuário
 Organização – Nome da Empresa
 Login – Usuário

O parceiro deve estar preparado para receber o token, verificar a expiração do mesmo e identificar a assinatura com a chave
pública do ANYMARKET.

Chave Pública ANYMARKET: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVfxWEym1WAYwGhrNjvEUWRgB


+p9oUPGu59yePzUT+I/d+C2x9xjURa/Zc+VVZsK2OrHga1+4X4iO1q+nWhmXkD5VysCaJ9
vf7IVntWogFpaBauG2EI7J93Y/sKUBxwxSDZPKhovsaM3DxoNCfW4lUHAWnlIuzPx302TB GtfCpUwIDAQAB
Exemplo de Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpcCI6IjEwLjAuNC4xMzYiLCJvcmdhbml6YXRp
b24iOiJTaWduYXRpdmEgVGVzdGUiLCJvaSI6IjIyNDQ5NTA0LiIsImV4cCI6MTUyMTgxMT
M0NiwibG9naW4iOiJwZWRyb0BzaWduYXRpdmEuY29tLmJyIn0.QWz6s0KXXJYo3mxI5r VlR4JvutAA388-
bQwj9okKco8_jScOgFFREB4wYsCzFnFhF3AsFC6PROrJfDPwik0q5VXlb1zf5BPKFYyHTVKkbL3Ro-
R73ISIyLVZYkls0L20xIzR22395wGMqhJk0ZFkV1fLxvbY9u5g-VLZQqewQ
Configurar
Layout Padrão
O parceiro deve implementar uma página HTML que conterá as configurações necessárias de integração que o usuário poderá realizar.
Para isso, o parceiro deve seguir o padrão de interface que o ANYMARKET utiliza.
No ANYMARKET, existe um menu de configurações que ficará disponível no catálogo de integrações do ANYMARKET conforme abaixo
(assim que a integração ficar disponível e homologada, o ANYMARKET criará a tela em ambiente de produção):
Para isso, o parceiro Marketplace precisará fornecer para a equipe de parceria do ANYMARKET a frase de apresentação de seu
Marketplace. Nessa tela, existem algumas ações disponíveis que farão com que o ANYMARKET dispare chamadas para o parceiro,
portanto, o parceiro deve estar preparado para interpretar tais chamadas e responder como esperado.
Três ações estão disponíveis nessa tela:
 Ativar – Ativação do módulo do Marketplace pelo usuário
 Configurar – Acessar o módulo para configuração das opções pelo usuário
 Desativar – Desativação do módulo do Marketplace pelo usuário

Em primeiro momento, o seller irá clicar no modal de “Ativar”, feita ação é disparado a chamada

Ao clicar no botão Ativar o ANYMARKET irá disparar a uma chamada POST pra a
http://www.urldomarketplaceaqui.com.br/ toggle?action=activating para que o marketplace permita ativar a configuração,
sendo esperado como retorno apenas o status code 200 e o corpo da requisição com true.
Feito isso em tela fica a opção “Desativar” e “Configurar”:
No momento da DESATIVAÇÃO do módulo, o ANYMARKET disparará a mesma chamada da ativação, porém, com o parâmetro
action enviando o valor deactivating.

Abrindo a configuração do módulo


No momento da CONFIGURAÇÃO do módulo, o ANYMARKET disponibilizará a página HTML do módulo de Marketplace
desenvolvida pelo parceiro. Iremos abrir a tela configurada em nosso sistema que foi enviada anteriormente no formulário de
liberação de integração.
A chamada será disparada da seguinte maneira:
http://endpointDaTeladeConfiguração/caminho_a_definir? lang=pt_BR&token={{JWTToken}}
Feita esta chamada, o sistema irá disponibilizar a tela da integração do marketplace para que o usuário possa realizar a
configuração com o Marketplace.
Implementação do Módulo Marketplace
Quando o usuário acessar o menu de integrações, existe um padrão de interface e configurações a ser seguido pelo parceiro na
implementação de sua página HTML. O padrão das configurações de integração do ANYMARKET se dá pelas seguintes abas:

Autenticação entre Seller e Marketplace

Descrição: A tela de autenticação, por padrão, é a primeira tela disponível para configuração. Ela é responsável pelas
informações que o seller precisa fornecer para conseguir se comunicar com sucesso com o Marketplace.

Recomendações: Recomenda-se que seja implementada uma validação na autenticação do seller com o Marketplace para que,
em caso de sucesso, as demais abas fiquem disponíveis para configuração. Caso contrário, em caso de falha na autenticação, as
demais abas da integração não ficam disponíveis.

Interface: Token: Campo para inserção do Token de autenticação do seller com o marketplace

Mensagem da ativação do módulo: “Atenção! Ao ativar este Marketplace, você estará sujeito a cobrança da taxa de
disponibilidade do serviço a partir do mês da ativação. A cobrança respeitará os termos de seu contrato. Permanecendo alguma
dúvida, entre em contato com o comercial.”.
Obs.: O ANYMARKET possui a funcionalidade de múltiplas contas, ou seja, o mesmo lojista com várias contas para o mesmo
Marketplace. Caso deseje realizar a implementação dessa funcionalidade, entre em contato com a equipe de parcerias.
Configurações de Preço

Descrição: Responsável por fornecer a opção de configuração de markup adicional para os novos anúncios do Marketplace;
aplicação de novo markup para os anúncios já existentes e configuração de valor ou porcentagem de desconto para novos
anúncios do Marketplace.

Interface: Markup Adicional: Campo para inserção do valor de markup adicional para novos anúncios e/ ou configuração de
novo valor de markup adicional para anúncios já existentes. Caso o usuário clique no botão de ‘Atualizar’ ao lado do campo, o
novo valor de markup será aplicado para todos os anúncios existentes do Marketplace

Mensagem da sincronização do markup: “Ao aplicar a sincronização de markup, apenas produtos com cálculo automático
serão recalculados.”

Tipo de Desconto: Opção de configurar valor ou porcentagem

Desconto: Caso ‘Tipo de Desconto’ seja porcentagem, então espera-se valor em porcentagem; caso ‘Tipo de Desconto’ seja
valor, então espera-se que o valor seja um valor fixo de desconto

Configurações de Anúncios
Campos:
Flag de atualização de produtos: Flag responsável por indicar se após o produto estar disponível no marketplace, serão
encaminhadas todas as informações do produto ou somente as informações de preço e estoque. Recomenda-se que o valor
padrão desse parâmetro seja habilitado.
Dependendo do valor configurado da flag, o Marketplace busca todas as informações do produto no ANYMARKET ou somente a
informação de preço e estoque para suas atualizações.
Remover Tags HTML da descrição.

Configurações de Vendas

Interface: Importar pedidos em andamento a partir de: Serão importados somente pedidos cuja data seja igual ou superior à
data configurada. Não serão importados pedidos que sua data de criação seja anterior à data informada.
Mensagem informativa: “Serão importados somente pedidos cuja data seja igual ou superior à data configurada. Não serão
importados pedidos que sua data de criação seja anterior da data informada.”.

Botão de ‘Importar Vendas’: Funcionalidade responsável por forçar a importação de vendas caso, por algum motivo, um pedido
não tenha sido importado para o ANYMARKET. Opcional

Condição especial
Esteja atento às configurações de CORS que deverão ser feitas no seu servidor, já que o ANYMARKET irá embedar a tela dentro
do sistema.
Liberação do sistema para o usuário
As chamadas abaixo servem para que o ANYMARKET saiba o status da conta do seller no Marketplace, verificando se a conta se
encontra ativa ou inativa.
http://www.urldomarketplaceaqui.com.br/isActiveFor
É esperado que o retorno dessa chamada seja apenas o status code 200, e true no body de retorno caso a integração esteja
ativa ou false, caso contrário seja verdadeiro.
Configuração de contas do usuário no Marketplace
No ANYMARKET, todas as ações disparadas em relação a criação de anúncios ou para tratativas de pedidos, são vinculadas a
uma conta do marketplace. Por isso é necessário implementar as 3 chamadas a seguir.
Consultar conta Default
A conta padrão é utilizada para ações em lote, onde o seller quer atuar de forma mais agil dentro do sistema. Dessa forma ele
não precisará selecionar qual conta ele irá utilizar para realizar as ações no ANYMARKET para enviar para o marketplace.
A chamada para a consulta da conta default do vendedor é realizada através da chamada GET na url
http://www.urldomarketplaceaqui.com.br/account/default em que o retorno esperado é o json abaixo:
{
“id”: 123,
“name”: “Lojas Kage Bushin”
}

Sendo os campos:
Id – o id da loja que será utilizado pelo ANYMARKET aceita apenas números. (Muitas integrações usam o próprio OI enviado no
token jwt)
Name – nome da loja no Marketplace.
Em cenários onde o seller possui mais de uma conta no marketplace, para listar todas as contas ativas, o ANYMARKET fará a
uma chamada GET na url http://www.urldomarketplaceaqui.com.br/account/active esperando o json de retorno com um array
de contas ativas. Exemplo descrito abaixo:
[{
“id”: 123,
“name”: “Lojas Kage Bushin”
},
{
“id”: 321,
“name”: “Lojas Mizu Kage”
}]
Além das duas chamadas acima, o ANYMARKET ainda executa algumas ações em que precisa buscar uma conta específica que
já está configurada em um anúncio publicado no marketplace. Neste caso, o GET realizado será na url
http://www.urldomarketplaceaqui.com.br/account enviando os parâmetros idAccount ou accountName, tendo o mesmo
retorno esperado das chamadas acima
{
“id”: 123,
“name”: “Lojas Kage Bushin”
}

Categorias, marcas, variações e atributos


Marketplaces que possuem vinculo de categorias, marcas, variações e atributos possuem a opção de escolher a melhor forma
para implementação:
 Implementação feita pelo marketplace na tela do modulo, parceiro disponibiliza uma tela HTML para que o seller
realize as vinculações;
 Implementação feita em tela ANYMARKET, parceiro disponibiliza endPoints para consulta de categorias, criação e
modificação.

Implementação feita pelo marketplace na tela do modulo


Na primeira opção, é possível que o parceiro realize a implementação exclusivamente no módulo, dessa forma, fica de
responsabilidade do parceiro os tratamentos das vinculações. Para isso, o parceiro pode utilizar as chamadas de endpoint da
API Marketplaces, tais como:
 GET http://api.anymarket.com.br/marketplace/api/categories/fullPath
 GET http://api.anymarket.com.br/marketplace/api/brands
 GET http://api.anymarket.com.br/marketplace/api/variations

Ainda nessa opção os remotes de DELETE das vinculações deverão ser implementados pelo parceiro, a fim de conseguirem ficar
ciente quando uma categoria for removida do ANYMARKET.

Implementação de Remotes Vínculo de Categorias no ANYMARKET


Na segunda opção, a implementação fica de responsabilidade do ANYMARKET, porém, o parceiro ainda precisa implementar
alguns remotes para ter ciência de quando acontecer algum vínculo ou remoção, além de disponibilizar a árvore de categorias
do Marketplace para o ANYMARKET.
Nesse cenário, o parceiro receberá a chamada GET para que o ANYMARKET possa obter a árvore de categorias existente no
Marketplace.

Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/categories
Retorno esperado:
Obtido a raiz da categoria, o ANYMARKET realizará um GET para construir o caminho das categorias.
Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/categories /{{categoryIdmarketplacet}}
Retorno esperado:

Com as informações da estrutura de árvore de categorias que o ANYMARKET obteve com as chamadas anteriores, o próximo
passo é a realização do vínculo. Para isso, será feito uma chamada POST.
Chamada: POST
Endpoint: {{MARKETPLACE_ENDPOINT}}/categories/bind
Body:

Retorno esperado: Código HTTP 200 com um valor booleano (true/false) no body.

Caso um vínculo seja removido, o ANYMARKET notificará o parceiro com a chamada DELETE.

Chamada: DELETE
Endpoint: {{MARKETPLACE_ENDPOINT}}/categories/bind/{{categoryIdAnymarket}}
Retorno esperado: Código HTTP 200 com um valor booleano (true/false) no body

O ANYMARKET poderá realizar chamadas GET para buscar informação do vínculo existente.
Chamada: GET Endpoint: {{MARKETPLACE_ENDPOINT}}/categories/bind/{{categoryIdAnymarket}}
Retorno esperado:

Caso a categoria não esteja vinculada o retorno esperado é:


Retorno esperado: Código HTTP 200 e body vazio.
No ANYMARKET, as informações de categorias estão relacionadas com os atributos dos produtos. Cada produto possui uma
categoria, na qual existem atributos recomendados e até mesmo obrigatórios no envio para o Marketplace. Dessa forma, para
buscar as informações dos atributos da categoria, o ANYMARKET realizará a seguinte chamada:

Chamada: GET Endpoint: {{MARKETPLACE_ENDPOINT}}/categories/attributes/{{categoryIdAnymarket}}


Retorno esperado:
Tipos aceitos em Types:
▪ STRING_INPUT
▪ SELECT_INPUT
▪ NUMBER_INPUT

Vinculação de Marcas
O processo de vinculação de marcas é bem semelhante ao processo de vinculação de categorias; primeiramente, o
ANYMARKET realizará um GET para buscar todas as marcas disponíveis no Marketplace e, posteriormente, realizará o vínculo
entre marca do ANYMARKET e marca do Marketplace. Caso o vínculo seja removido ou a marca seja removida do ANYMARKET,
encaminharemos uma notificação de DELETE para o parceiro. Lembrando que esse cenário se aplica para quando o
ANYMARKET desenvolver o vínculo.

Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/brands
Retorno esperado:

Chamada: POST
Endpoint: {{MARKETPLACE_ENDPOINT}}/brands/bind
Body:

Ao realizar o vínculo de marcas, o parceiro deve armazenar o ID da vinculação, pois o ANYMARKET poderá realizar a consulta de
vinculação.
Consulta se a marca está vinculada
Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/brands/bind/{idAnymarketBrand}
Retorno esperado:

Caso a marca não esteja vinculada o retorno esperado é:


Retorno esperado: Código HTTP 200 e body vazio.

Chamada para exclusão do vínculo de marca feito:


Chamada: DELETE
Endpoint: {{MARKETPLACE_ENDPOINT}}/brands/bind/{{idBrandAnymarket}}
Retorno esperado: Código HTTP 200 com um valor booleano (true/false) no body.

Vinculação de variações
O processo de vinculação de variações é bem semelhante aos processos de vinculação de categorias e marcas explicados
anteriormente; ou seja, conforme já sabemos, primeiramente, o ANYMARKET realizará um GET para buscar todas as variações
disponíveis no Marketplace e, posteriormente, realizará o vínculo entre a variação cadastrada no ANYMARKET e a variação do
Marketplace.
Ao realizar o vínculo de variações, o parceiro deve armazenar o ID da vinculação, pois o ANYMARKET poderá realizar a consulta
de vinculação.

Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/variations/types
Retorno esperado:

Realizando a vinculação
Será realizado duas vezes a chamada de POST, a primeira com o body:

Informando que foi iniciada a vinculação com o tipo da mesma, depois disparemos um GET validando se essa informação foi
vinculada com sucesso. Logo a seguir quando o parceiro (seller) finalizar a vinculação dos valores dispararemos o mesmo POST
da seguinte maneira:
Chamada: POST
Endpoint: {{MARKETPLACE_ENDPOINT}}/variations/values/bind
Body:

Retorno esperado: Código HTTP 200 com um valor booleano (true/false) no body.
E posteriormente realizaremos novamente um GET para validar se o vínculo foi feito com sucesso
Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/variations/values/bind/{{idVariationValueAnymarket}}
Retorno esperado:

Exclusão de vínculo de variação


Chamada: DELETE
Endpoint: {{MARKETPLACE_ENDPOINT}}/variations/values/bind/{{idVariationValueAnymarket}}
Retorno esperado: Código HTTP 200 com um valor booleano (true/false) no body.
Ao realizar o vínculo de variações, o parceiro deve armazenar o ID da vinculação, pois o ANYMARKET poderá realizar a consulta
de vinculação.

Remotes de Criação de Anúncio no Marketplace


Para ser possível a criação de anúncio no Marketplace, no momento em que o usuário selecionar produtos para encaminhar
para o seu Marketplace, o ANYMARKET encaminhará as seguintes chamadas caso o parceiro julgue necessário a aplicação delas
com base na regra de negócio desenvolvida, nós recomendamos a utilização dos remotes para que remova as chances de
entradas de produtos não aceitos pelo marketplace.

O seller ao selecionar a ação de “Nova Publicação” para o marketplace será disparado as seguintes chamadas:

Chamada: POST
Endpoint: {{MARKETPLACE_ENDPOINT}}/canActive
Body:
{
"id": "long",
"partnerId": "string",
"amount": null,
"ean": "string",
"title": "string",
"price": "BigDecimal",
"sellPrice": "BigDecimal",
"additionalTime": "BigDecimal",
"variations": [
{
"id": "long",
"description": "String",
"type": {
"id": "Long",
"name": "String",
"partnerId": null,
"visualVariation": true / false,
"values": []
},
"partnerId": "String"
}
],
"product": {
"imagesWithoutVariationValue": [],
"id": "long",
"title": "String",
"description": "String",
"model": "String",
"nbm": {
"id": "long",
"description": "String"
},
"videoUrl": null,
"definitionPriceScope": "SKU / SKU_MARKETPLACE / COST",
"characteristics": [
{
"index": "long",
"name": "String",
"value": "String"
}
],
"origin": {
"name":
"NACIONAL,ESTRANGEIRA_IMPORTACAO_DIRETA,ESTRANGEIRA_ADQUIRIDA_NO_MERCADO_INTERNO,NACIONAL_IMPORTAC
AO
_MAIS_40_PORCENTO,NACIONAL_CONFORMIDADE_AJUSTES,NACIONAL_IMPORTACAO_MENOS_40_PORCENTO,ESTRANGEIR
A_S EM_SIMILAR_NACIONAL,ESTRANGEIRA_ADQUIRIDA_NO_MERCADO_INTERNO_SEM_SIMILAR",
"id": "long"
},
"category": {
"id": "long",
"name": "String",
"path": "String"
},
"height": "BigDecimal",
"length": "BigDecimal",
"width": "BigDecimal",
"weight": "BigDecimal",
"images": [
{
"id": "long",
"index": "long",
"variation": "String",
"thumbnailUrl": "URL",
"standardUrl": "URL",
"lowResolutionUrl": "URL",
"url": "URL",
"statusMessage": null,
"status": "UNPROCESSED,PROCESSED,ERROR",
"main": false / true
}
],
"brand": {
"id": "long",
"name": "String",
"partnerId": "String"
},
"warrantyTime": "integer",
"warrantyText": "String",
"priceFactor": "BigDecimal",
"calculatedPrice": false / true,
"hasVariations": true /false ,
"gender": "MALE,FEMALE,UNISSEX,BOY,GIRL"
"allowAutomaticSkuMarketplaceCreation": true / false
}
}

O parceiro poderá retornar sucesso, permitindo que o ANYMARKET prossiga com a criação do anúncio ou retornará falha
informando o que há de errado com o anúncio, fazendo com que uma mensagem de erro seja exibida para o usuário.

Exemplo de retorno de falha:


Código de retorno HTTP: 422
Body: {
"code": "PublicationValidationException",
"httpStatus": 422,
"message": "Erro ao validar publicação",
“details": "Categoria não está vinculada a nenhuma arvore de categoria do marketplace" }

Exemplo de retorno de sucesso:


Código de retorno HTTP: 200
Body: true

Retornado sucesso, o próximo passo é o ANYMARKET realizar uma chamada GET buscando os campos específicos que o
ANYMARKET deve criar em sua interface para que o usuário preencha.
 getDefaultSkuFields

Nesse momento, o parceiro deve responder a chamada realizada com os determinados campos.
Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/getDefaultSkuFields/{idSku}?idAccount={idAccount}
Exemplo de retorno:
Código de retorno HTTP: 200
{
"EAN": "7894566666666",
"title": "Produto Teste",
"DISCOUNT_VALUE": "0",
"DISCOUNT_TYPE": "PERCENT",
"HAS_DISCOUNT": "False",
"priceFactor": "1"
}

Após essa chamada ser executada, o ANYMARKET realizará mais um GET para buscar as informações padrão de preços para o
anúncio. Nesse momento, o parceiro deve responder a chamada realizada com os determinados valores.
Chamada: GET
Endpoint: {{MARKETPLACE_ENDPOINT}}/priceOptions?idAccount={{idAccount}}
Código de retorno HTTP: 200
Exemplo de retorno:
Body:
{
"priceFactor": 1,
"defaultDiscountValue": 0,
"defaultDiscountType": "PERCENT"
}

Feito isso surgira a opção para o seller enviar o anuncio para o marketplace, caso habilitado o remote o ANYMARKET
encaminhará o anúncio completo para o parceiro Marketplace, o qual retornará sucesso ou falha.
Chamada: POST
Endpoint: {{MARKETPLACE_ENDPOINT}}/canSave
Body:
{
"id": "long",
"partnerId": "string",
"amount": null,
"ean": "string",
"title": "string",
"price": "BigDecimal",
"sellPrice": "BigDecimal",
"additionalTime": "BigDecimal",
"variations": [
{
"id": "long",
"description": "String",
"type": {
"id": "Long",
"name": "String",
"partnerId": null,
"visualVariation": true / false,
"values": []
},
"partnerId": "String"
}
],
"product": {
"imagesWithoutVariationValue": [],
"id": "long",
"title": "String",
"description": "String",
"model": "String",
"nbm": {
"id": "long",
"description": "String"
},
"videoUrl": null,
"definitionPriceScope": "SKU / SKU_MARKETPLACE / COST",
"characteristics": [
{
"index": "long",
"name": "String",
"value": "String"
}
],
"origin": {
"name":
"NACIONAL,ESTRANGEIRA_IMPORTACAO_DIRETA,ESTRANGEIRA_ADQUIRIDA_NO_MERCADO_INTERNO,NACIONAL_IMPORTAC
AO
_MAIS_40_PORCENTO,NACIONAL_CONFORMIDADE_AJUSTES,NACIONAL_IMPORTACAO_MENOS_40_PORCENTO,ESTRANGEIR
A_S EM_SIMILAR_NACIONAL,ESTRANGEIRA_ADQUIRIDA_NO_MERCADO_INTERNO_SEM_SIMILAR",
"id": "long"
},
"category": {
"id": "long",
"name": "String",
"path": "String"
},
"height": "BigDecimal",
"length": "BigDecimal",
"width": "BigDecimal",
"weight": "BigDecimal",
"images": [
{
"id": "long",
"index": "long",
"variation": "String",
"thumbnailUrl": "URL",
"standardUrl": "URL",
"lowResolutionUrl": "URL",
"url": "URL",
"statusMessage": null,
"status": "UNPROCESSED,PROCESSED,ERROR",
"main": false / true
}
],
"brand": {
"id": "long",
"name": "String",
"partnerId": "String"
},
"warrantyTime": "integer",
"warrantyText": "String",
"priceFactor": "BigDecimal",
"calculatedPrice": false / true,
"hasVariations": true /false ,
"gender": "MALE,FEMALE,UNISSEX,BOY,GIRL"
"allowAutomaticSkuMarketplaceCreation": true / false
}
Exemplo de retorno de falha:
Código de retorno HTTP: 422
Body: {
"code": "PublicationValidationException",
"httpStatus": 422,
"message": "Erro ao validar publicação",
“details": "Categoria não está vinculada a nenhuma arvore de categoria do marketplace" }

Exemplo de retorno de sucesso:


Código de retorno HTTP: 200
Body: true
Retornado sucesso, o ANYMARKET fará uma última chamada na etapa de criação de anúncio, responsável por criar a publicação
de fato com o status inicial de ‘UNPUBLISHED’.

SendProduct e UpdatePublicationStatus
O objetivo da chamada sendProduct é enviar um anúncio para o Marketplace informando que foi criado no ANYMARKET ou que
teve uma atualização que deve ser refletida no Marketplace.
A chamada de updatePublicationStatus, envia qual o anúncio que está sofrendo alguma atualização de status no anúncio do
Marketplace.
Veja conforme a imagem abaixo em que momento essas chamadas são enviadas para o Marketplace:

Esta tela serve para que o usuário gerencie os produtos que foram enviados para o Marketplace integrado. Todas as ações
desses botões irão refletir em atualização, inativação ou ativação dos produtos selecionados.
Ao selecionar um produto nesta tela e clicar em um dos botões dentro do box vermelho, o sistema do ANYMARKET irá enviar a
chamada para enviar o produto que foi selecionado.
Botão Enviar
Dispara uma notificação para que o Marketplace atualize as informações do anúncio (preço, estoque, dados cadastrais).
O json na chamada disparada por esse botão enviará o campo status com o valor ACTIVE. (Caso o anuncio já esteja com o
staus ACTIVE caso contrário será enviado UNPUBLISHED)
Esta chamada é realizada através de um POST no endpoint http://www.urldomarketplaceaqui.com.br/ sendProduct da api do
marketplace com o seguinte json no corpo da chamada:
{
"idSkuMarketplace": 12024,
"idSkuMarketplaceMain": 12026,
"status": "ACTIVE",
"onlySync": true
}
- idSkuMarketplace: id do anúncio que está sendo atualizado/criado.
- idSkuMarketplaceMain: id do sku principal do anúncio que está sendo atualizado/criado. Em casos de produtos sem variação,
será sempre o mesmo valor que o idSkuMarketplace. Para produtos com variação, esse valor poderá se repetir em mais de um
anúncio.
- status: status em que a publicação está no ANYMARKET. Este é o status que deverá ser refletido no seu Marketplace.
- onlySync: campo com um valor true ou false. Deixa de forma visual em tela que o anuncio está sincronizando com o
marketplace.
Condição especial:
Quando um anúncio do Marketplace ficar sem estoque no ANYMARKET, é enviado na mesma chamada
(/sendProduct) o status WITHOUT_STOCK, que significa que o produto ainda está ativo, porém, sem unidades disponíveis para
venda no momento.

Os botões, Pausar, Finalizar e Reativar, tem suas chamadas disparadas em outra url, já que se trata apenas de uma
atualização de status. O json enviado é o mesmo do sendProduct
É enviado um PUT na api http://www.urldomarketplaceaqui.com.br/ updatePublicationStatus
Pausar
Dispara uma notificação para que o Marketplace pause as vendas do anúncio.
O json na chamada disparada por esse botão enviará o campo status sempre com o valor PAUSED.
Finalizar
Dispara uma notificação para que o Marketplace finalize as vendas do anúncio.
O json na chamada disparada por esse botão enviará o campo status sempre com o valor CLOSED.
Reativar
Este botão só pode ser utilizado caso o anúncio esteja pausado ou finalizado. É disparada uma notificação para que o
Marketplace reative as vendas do anúncio, independente se ele estiver pausado ou finalizado.
O json na chamada disparada por esse botão enviará o campo status sempre com o valor ACTIVE.
Ações do Marketplace
Após receber a notificação de atualização de um anúncio, o Marketplace deverá realizar 2 ações:
1. Buscar no ANYMARKET o anúncio notificado;
2. Atualizar o status do anúncio no ANYMARKET;

1. Buscar no ANYMARKET o anúncio notificado

Para buscar quais foram as alterações realizadas no anúncio, a integração deverá realizar um GET na api
http://sandbox-api.anymarket.com.br/marketplace/api /skumarketplace/{idDoAnuncio}.
No momento em que o Marketplace realizar esta consulta, ele deverá atualizar os dados com as novas informações que
estiverem no ANYMARKET. Caso o Marketplace não atualize alguma informação depois que o produto já foi publicado, basta
ignorar o campo.
2. Atualizar o status do anúncio no ANYMARKET

Quando todas as informações tiverem sido atualizadas, é a vez do Marketplace sinalizar o ANYMARKET qual o
retorno da operação enviada, seja ele sucesso ou erro.
Enquanto o anúncio não for atualizado, ele ficará no ANYMARKET com um indicativo de que está aguardando a sincronização
entre ANYMARKET e Marketplace ser concluído.

Para que isso seja alterado, deverá ser realizada uma chamada PUT na api http://sandbox-
api.anymarket.com.br/marketplace/api/skumarketplace/{idDoAnuncio }.
O JSON que deverá ser enviado será:
{
"transmissionStatus": "OK",
"idInSite": "1233455",
"idInMarketplace": "35950fb9-8fd3-481d-bd3e-83a86507533f",
"marketplaceStatus": "ATIVO",
"status": "ACTIVE",
"errorMsg": ""
}
- transmissionStatus: indica se o anúncio está sincronizando (SYNCING), com erro (ERROR) ou está sincronizada (OK);
- idInSite: id do anúncio no Marketplace.
- idInMarketplace: código do anúncio no Marketplace.
- marketplaceStatus: status do pedido no Marketplace. É um texto livre, pode ser enviado qualquer texto, porém, é importante
que reflita exatamente o status do Marketplace (Em catalogação, ativo, pausado, etc.).
- status: campo interno de status no ANYMARKET (UNPUBLISHED, CLOSED, CORRUPTED, PAUSED, WITHOUT_STOCK, ACTIVE).
- errorMsg: é um campo de texto livre para que o Marketplace envie qual o erro que aconteceu na atualização de anúncio no
Marketplace. Só pode ser enviado se o transmissionStatus estiver com o valor ERROR.

Anúncios UNPUBLISHED não devem ser integrados no Marketplace até que sejam atualizados para status de ACTIVE. Além
disso, os anúncios depois que foram atualizados para qualquer status diferente de UNPUBLISHED, não podem voltar para este
status.
Condição especial:
Se a integração receber os status PAUSED ou CLOSED, não há a necessidade de buscar o produto no ANYMARKET, já
que o produto está sendo retirado da vitrine do Marketplace. As chamadas citadas anteriormente só precisam ser efetuadas
quando o produto estiver ativo.

Vínculo de anúncios já criados no Marketplace


O vínculo de produtos é uma funcionalidade muito importante para os usuários que utilizam o ANYMARKET. Este processo
serve para que o lojista não precise publicar seus produtos novamente nos marketplaces. O usuário pode optar por realizar a
vinculação dos produtos que estão no marketplace com os seus produtos no ANYMARKET de duas maneiras: Individualmente e
em Lote.
Vínculo individual
A vinculação de produtos de maneira individual é realizada dentro da tela de produtos do ANYMARKET. O usuário irá selecionar
o sku que deseja vincular e clicar no botão de botão Marketplace -> Vincular Existente.

Quando o usuário clicar no botão de Vincular Existente o ANYMARKET irá disparar as seguintes chamadas:
http://sandbox-api.anymarket.com.br/marketplace/api /account/default
http://sandbox-api.anymarket.com.br/marketplace/api/verifySku/idDoSKU?idAccount=idDaConta
Disparado a chamada é necessário que a integração realize a consulta do sku com o idSku no endpoint http://sandbox-
api.anymarket.com.br/marketplace/api/skus/id/{idSku} e verificar se o partnerId já está cadastrado no marketplace.
Ao realizar a consulta é necessário observar o campo “definitionPriceScope” para identificar qual formatação de json deverá ser
enviada no retorno da chamada verifySKU.

Criação da transmissão
POST: http://sandbox-api.anymarket.com.br/marketplace/api/skumarketplace
De acordo com o cálculo de preço cadastrado no ANYMARKET o JSON para criação da transmissão muda. Cada Cálculo de preço
exige um retorno diferente
Se o cálculo de preço for automático (COST):
{

"idSku": 594187,
"title": "32\" HD Flat Smart TV J4300 Series 4 - Preto",
"idInMarketplace": "218519300",
"idAccount": 500,
"priceFactor": 1,
"marketplaceStatus": "ATIVO",
"status": "ACTIVE"
}
Calculo de preço Manual Anuncio (SKU_MARKETPLACE):
{
"idSku": 805746,
"idInMarketplace": "sku",
"idAccount": 500,
"status": "ACTIVE",
"marketplaceStatus": "ATIVO",
"price": 500,
"discountPrice": 499,
"fields": {
"HAS_DISCOUNT": true,
"DISCOUNT_TYPE": "VALUE"
}
}
Calculo de preço Manual SKU (SKU)
{
"idSku": 594413,
"idInMarketplace": "213157300",
"idAccount": 500,
"status": "ACTIVE"
}
Feito a chamada post o ANYMARKET vai disparar as chamadas de criação (canActive, CanSave, getDefaultSkuFields) e retornar
o novo idSkuMarketplace, que deve ser substituído no marketplace para atualizações futuras da transmissão:

Condição especial:
Assim que a integração devolver o json para que o anuncio seja criado, o ANYMARKET irá realizar as mesmas chamadas para
criação de anúncios, sendo elas getDefaultSkuFields e priceOptions para que seja completado as informações do anuncio.
Vinculação em Lote
Para vinculação em lote é necessário que a integração desenvolva uma forma de ativar esta funcionalidade localizando-a na
tela do modulo, para que os sellers acessem e chamem a rotina de vinculação.
Segue exemplo abaixo de um dos nossos parceiros:
O fluxo da vinculação em lote funciona da seguinte maneira, lembrando que se deve seguir as regras dependendo do cálculo de
preço encontrado no produto.
Ao ser chamado a rotina de vinculação o marketplace deverá realizar uma consulta para cada SKU cadastrado no marketplace,
verificando se o sku também existe no ANYMARKET.
GET sandbox-api.anymarket.com.br/marketplace/api/skus/partnerId/{{partnerId}}
O partnerId é o sku de fato do produto no marketplace
Se for encontrado o SKU dentro do ANYMARKET, o marketplace deverá realizar uma chamada POST para a url http://sandbox-
api.anymarket.com.br/marketplace/api/skumarketplace enviando o mesmo json que é retornado no vinculo individual de
produtos (citado acima neste mesmo documento).
Se for não for encontrado o SKU nada deverá acontecer.

Integração de Pedidos
A integração de pedidos consiste em realizar a criação dos pedidos que estão no Marketplace dentro do ANYMARKET e depois,
buscar todas as atualizações de status que o ANYMARKET realizar para enviar os dados para o MARKETPLACE.
Para criar um pedido no ANYMARKET o Marketplace deverá realizar uma chamada POST na url http://sandbox-
api.anymarket.com.br/marketplace/api/orders? com o seguinte body:
{
"idAccount": 28795750,
"marketPlaceId": "4000023411223",
"marketPlaceNumber": "4000023411232",
"marketPlaceStatus": "Novo",
"createdAt": "2020-04-02T19:28:04-03:00",
"status": "PENDING",
"buyer": {
"name": "Michael Alves",
"document": "317.180.548-07",
"documentType": "CPF",
"phone": "43999582145",
"documentNumberNormalized": "317180548-07"
},
"shipping": {
"street": "Rua Senador Felício dos Santos",
"state": "São Paulo",
"stateNameNormalized": "São Paulo",
"receiverName": "Michael Alves",
"number": "230",
"neighborhood": "Liberdade",
"zipCode": "01511-010",
"city": "São Paulo",
"country": "Brazil",
"countryNameNormalized": "Brazil"
"address": "Rua Senador Felício dos Santos, 230"
},
"billingAddress": {
"street": "Rua Senador Felício dos Santos",
"state": "São Paulo",
"stateNameNormalized": "São Paulo",
"receiverName": "Michael Alves",
"number": "230",
"neighborhood": "Liberdade",
"zipCode": "01511-010",
"city": "São Paulo",
"country": "Brazil",
"countryNameNormalized": "Brazil"
},
"productNet": 59,
"discount": 0,
"interestValue": 0,
"freight": 50,
"total": 109,
"payments": [
{
"method": "BoletoPayment",
"installments": 1,
"value": 109
}
],
"items": [
{
"marketPlaceId": "341947",
"sku": {
"partnerId": "218515500"
},
"unit": 59,
"amount": 1,
"gross": 59,
"discount": 0,
"total": 59,
"shippings": [
{
"shippingtype": "Correios - Pac"
}
]
}
]
}
Para que a criação de pedidos seja realizada o ANYMARKET irá disparar algumas chamadas antes do retorno do POST acima. As
chamadas disparadas são:
1º É realizado um GET http://urlDoMarketplaceaqui/account?idAccount=idDaConta sendo o id da conta, o valor utilizado no
post no campo idAccount
O retorno para essa chamada deverá ser o seguinte:
{
"id": 500,
"name": "Lojista Teste AnyMarket"
}
2º É realizado um GET para verificar se o pedido está dentro da data de importação inicial através do endpoint
https://urldomeumarketplace.com.br/order/initialImportDate?idAccount={idAccount}, parameters={idAccount=2121}
O retorno para esta chamada será:
{
"Date": "2017-05-01T00:00:00-03:00"
}
Após estas duas chamadas, o ANYMARKET criará o pedido e irá disparar uma chamada para validar os status do Marketplace
com um POST na url http://urlDoMarketplaceaqui.com.br/order/afterSaveOrUpdateOrderInAnymarket com o corpo abaixo,
esperando apenas um status 200 como resposta.
{
"orderId": 40058,
"idInMarketplace": "4000023411223",
"oldMarketplaceStatus": "",
"newMarketplaceStatus": "Novo"
}
Tendo todas as chamadas dado sucesso seu pedido será criado no ANYMARKET.
Condição especial
Nem todos os sellers importam pedidos pendentes, nesse caso, a criação do pedido deverá ser feita quando o status do pedido
for atualizado para pago, diretamente com o status pago.
Marcar pedido como pago
Para atualizar a data de pagamento de um pedido o Marketplace deverá enviar uma chamada na url http://sandbox-
api.anymarket.com.br/marketplace/api/orders/idDoPedidoNoMarketplace/markAsPaid para que o pedido seja atualizado
para pago.
Body:
{
"date": "2020-04-08T20:42:36"
}
Marcar pedido como cancelado
Para atualizar a data de pagamento de um pedido o Marketplace deverá enviar uma chamada na url http://sandbox-
api.anymarket.com.br/marketplace/api/orders/{idDoPedidoNoMarketplace}/markAs Canceled para que o pedido seja
atualizado para cancelado.
Body:
{
"date": "2020-04-30T09:50:00-03:00"
}
Atualização de status de Pedidos
A cada atualização que o ANYMARKET realizar nos pedidos para faturar, atualizar para enviado ou concluído por exemplo, será
disparada a chamada PUT http://urlDoMarketplaceaqui.com.br/updateOrderStatusInMarketPlace enviando o id da venda
que teve a atualização e para qual status ela está sendo alterada.
O json sempre irá conter para qual o status que o pedido está sendo alterado, dessa forma, o marketplace deverá realizar uma
busca no ANYMARKET para pegar a atualização do pedido através da url GET http://sandbox-
api.anymarket.com.br/marketplace/api/orders/{idDoPedidoNoMarketplace}/
Por último, assim como nos anúncios, o marketplace deverá marcar a operação com um sucesso ou fracasso no processo,
indicando que ela foi sincronizada corretamente através da chamada http://sandbox-
api.anymarket.com.br/marketplace/api/orders/{idDoPedido NoMarketplace}/transmissionStatus Com o json abaixo:
{
"marketPlaceStatus": "Enviado",
"success": "true",
"errorMessage": null
}
Está chamada irá remover o ícone de sincronizando que fica no pedido após realizar alguma operação.

Cotação de frete Externo (ANYMARKET)

Quando o parceiro marketplace optar em realizar a consulta externa, que seria consultar os valores de frete cadastrados aqui no
ANYMARKET, é necessário que seja feito a seguinte chamada:

METODO: POST

URL: http://sandbox-api.anymarket.com.br/marketplace/api/freight

HEADERS: appId (identificador do marketplace) e token (token do ambiente ANYMARKET – identificador do seller)

BODY:

{
    "zipCode": "87030030",

    "products": [

        {

            "skuId": "MEU_SKU",

            "amount": 1,

            "dimensions": {

                "length": 15,

                "width": 15,

                "height": 15,

                "weight": 15

            },

            "additionalDeliveryTime": 0

        }

    ],

    "marketPlace": "NOME_MARKETPLACE"

Obtendo como response o valor da cotação, lembrando que será apresentado apenas um registro para cada combinação
Transportadora x Tipo de Frete.

    "zipCode": "87030030",

    "products": [

        {

            "skuId": "MEU_SKU",

            "amount": 1,

            "dimensions": {

                "height": 15,

                "width": 15,

                "weight": 15,

                "length": 15

            },

            "stockAmount": 30,

            "price": 500,

            "discountPrice": 500
        }

    ],

    "quotes": [

        {

            "carrierName": "Transportadora teste",

            "serviceName": "PAC sem contrato - 41106",

            "deliveryTime": 14,

            "freightType": "normal",

            "price": 40.0000

        },

        {

            "carrierName": "Transportadora teste",

            "serviceName": "SEDEX sem contrato - 40010",

            "deliveryTime": 5,

            "freightType": "express",

            "price": 16.9000

        }

    ]

CONDIÇÃO ESPECIAL

É possível também realizar a cotação de mais de um sku de uma vez, o body da chamada será da seguinte maneira:

    "zipCode": "87030030",

    "products": [

        {

            "skuId": "MEU_SKU",

            "amount": 1,

            "dimensions": {

                "height": 1,

                "width": 1,

                "weight": 1,

                "length": 1

            }
        },

        {

            "skuId": "MEU_SKU2",

            "amount": 1,

            "dimensions": {

                "height": 1,

                "width": 1,

                "weight": 4,

                "length": 1

            }

        }

    ],

    "marketPlace": "NOME_MARKETPLACE"

A cotação de frente tem a quantidade de dias contabilizados para a entrega de forma “corrida”, ou seja, NÃO são levados em
consideração os dias uteis, fins de semana e ou feriados. É uma premissa da integração que o marketplace utilize o mesmo sistema para
contabilizar o prazo de entrega.

Caso o cliente utilize algum gateway de frete ou uma API de frete própria, o ANYMARKET realizará a consulta e retornará para o
marketplace os valores encontrados, seguindo o mesmo padrão de retorno descrito a cima.

Modal reenviar pedido criticado

Quando o pedido fica criticado na tela de vendas do ANYMARKET, por conta de algum erro na sincronização com o
marketplace, tendo como motivo a falta de preenchimentos de campos obrigatórios para atualização ou até mesmo uma
indisponibilidade no serviço do marketplace naquele momento.
Para isso, temos um modal que o seller consegue estar realizando o reenvio da notificação para o marketplace.

Ao ser acionado o modal “Reenviar” é disparado a seguinte chamada:

GET: {{ENDPOINT_MARKETPLACE}}/order/{idInMarketPlace}?idAccount
HEADER: x-anymarket-token
Tendo como retorno esperado um JSON no mesmo formato do que o da criação do pedido, contendo os dados e status que se
encontra o determinado pedido dentro do marketplace.

Tendo o retorno da chamada a cima e o JSON com os dados atualizados do pedido, o ANYMARKET realizará a chamada do
evento order/updateOrderStatusInMarketPlace, esperando que a integração venha consumir novamente os dados do pedido
que sofreu a alteração.

Condição especial
Quando o pedido integrar com o status “pendente” o ANYMARKET possui rotinas automáticas afim de buscar os dados mais
atualizados do pedido dentro do marketplace, sendo assim a chamada /order/{idInMarketPlace}?idAccount pode ser dispara de
forma automática, afim de garantir que o pedido possua sempre os dados e status atualizados conforme encontra-se no
marketplace.

Chamada para criação de monitoramento


O ANYMARKET possui um Painel de Monitoramento, que tem como objetivo dar visibilidade das falhas que acontecem na
importação de pedidos dentro do sistema e que necessitem de interação do usuário. Tais falhas podem ser registradas como
dois tipos:
Alertas – alertas que precisam de ação do usuário, porém, não possuem impacto financeiro ou prejudicial num nível urgente
para o lojista
Alertas Críticos – alertas que precisam urgente da ação do usuário e que estão impactando financeiramente o lojista
O padrão de registros que deve ser seguido ao registrar um monitoring no ANYMARKET está documentado em
http://developers.anymarket.com.br/help.html.

Para registrar os alertas, o parceiro deve utilizar o endpoint abaixo:


Modelo:
"createdAt": "Date",
"origin": "String",
"details": "String",
"id": "Long",
"partnerId": "String",
"message": "String",
"type": "CRITICAL_ERROR",
"retryCallbackURL": "String",
"status": "PENDING"
Segue abaixo um exemplo de criação
METODO: POST
Headers: AppId e token
Endpoint: http://sandbox-api.anymarket.com.br/marketplace/api/monitorings
Body:
{
"createdAt": "2020-05-13T20:01:33Z",
"origin": "Meu Marketplace",
"message": "PEDIDO NÂO IMPORTADO",
"details": "PEDIDO NÂO IMPORTADO, ENTRE EM CONTATO COM O MARKETPLACE",
"id": "001111",
"partnerId": "001111",
"type": "CRITICAL_ERROR",
"retryCallbackURL": "WWW.MINHACALLBACK.COM",
"status": "PENDING"
}

Modal de sincronizar Markup

O parceiro consegue realiza a implantação de um modal “Sincronizar markup” e com isso o seller ao clicar nesse botão o marketplace
realiza uma chamada no endpoint abaixo:

METODO: PUT

URL: http://sandbox-api.anymarket.com.br/marketplace/api/delegates/forceSyncMarkup

PARAMETROS: {{Nome do Marketplace}}

HEADER: token e appId

CONDIÇÃO ESPECIAL

Ao realizar essa chamada o ANYMARKET realizará um GET no endpoint /getPriceOptions que retornará os novos valores que o seller
informou em tela.

Feito isso será disparado várias chamadas de atualizações para o marketplace pelo endpoint /sendProduct já com o novo valor
calculado do markup e com isso o marketplace realiza as atualizações dos novos valores encaminhados.

Você também pode gostar