Autenticação Oauth2
A autenticação nas APIs do Magalu Marketplace acontece via OAuth2, utilizando o serviço do IDMagalu
como gerenciador de acesso dos usuários e das aplicações. Desta forma, você precisa criar uma conta
primeiro no IDMagalu, para posteriormente conseguir criar sua aplicação dentro do ecossistema
Magalu.
No processo de autenticação, iremos utilizar algumas informações que são fundamentais para que
você consiga criar uma aplicação dentro do ecossistema Magalu e, posteriormente, consiga realizar o acesso
nos módulos da API do Magalu Marketplace. Assim, segue um passo a passo do processo:
Criação de Conta no IDMagalu
Acesse o ID Magalu e informe os dados do administrador da empresa, bem como sua senha e um e-mail. Será necessário efetuar a validação do e-mail com um código a ser enviado para o mesmo.Com o cadastro do administrador concluído, será possível se autenticar no portal do ID Magalu, onde poderão ser preenchidas várias outras informações. Aqui é importante ressaltar que os dados da integradora estejam o mais completos possível. Ao alternar entre visões (física ou jurídica) será possível complementar o cadastro com várias outras informações como filiação, endereços, sócios da empresa, documentos entre outros.
Criação da API Key
A APIKey é uma senha que você precisará para conseguir realizar a chamada do recurso de criação do Client. No menu APIKey será possível efetuar toda a gestão das mesmas, ou seja, criar, editar e revogar. Para ser possível criar seu client na API do Magalu, será necessário efetuar o cadastro de uma ApiKey. Na lista de permissões, selecione ou pesquise pela API Product “API do Magalu - Marketplace“, selecionando a permissão “Permissão acesso marketplace“.IMPORTANTE - Este passo precisa ser executado dentro da visão de conta Pessoa Física.
Criação do Client Oauth2
O Client será a sua aplicação dentro do Ecossistema Magalu. Quando um seller for realizar o consentimento de acessos aos seus dados, ele irá ver as informações do integrador que foram cadastrados no momento da criação do Client. Por isso, no momento da criação do client(em produção) é importante cadastrar as informações corretas.. Para realizar a criação do Client:Homologação: https://api.integracommerce.com.br/api/v1/clients
Produção: https://in.integracommerce.com.br/api/v1/clients
Body:
{
"redirect_uri": "string",
"name": "string",
"description": "string",
"privacy_policy_url": "string",
"service_term_url": "string",
"own_integration": boolean
}
Detalhes da Requisição:
Header - Este passo precisa ser executado dentro da visão de conta Pessoa Física.x-api-key - conter a informação da APIKey gerada pelo portal do ID Magalu com as permissões ao aplicativo Integra API In.
Body:
redirect_uri - URL de callback por onde enviaremos os dados de acesso do seller em nossa API.
name - Nome de sua aplicação.
description - Descrição de sua aplicação.
privacy_policy_url - Política de privacidade de sua empresa.
service_term_url - Termos de serviço de sua empresa.
own_integration - Perfil de aplicação:
True - se sua aplicação for própria e você for utilizá-la para integrar apenas a sua conta no Magalu Marketplace
False - se sua aplicação for compartilhada entre várias contas(vários sellers), por exemplo se você for um hub de integração, uma plataforma de marketplace e etc.
Detalhes da Resposta:
Em caso de sucesso, será retornado o status code:200 - Created, com um objeto JSON representado por:
client_id - Identificador do seu Client Oauth2.
client_secret - Segredo do seu Client Oauth2.
Guarde os dados de client_id e secret_id - Eles são
suas credenciais, e você precisará destes dados para efetuar a troca do Code pelo Token.
Em caso de falha, será retornado um objeto JSON com atributo message juntamente com o status code.
Algumas respostas possíveis são:
400 - Corpo da mensagem inválido
401 - Apikey não informada ou inválida
403 - Apikey não possui escopos necessários para acessar a API do marketplace
409 - Conflito ao registrar client
500 - Falha inesperada
Consentimento de Acesso aos Dados
Com seu Client criado, agora você já consegue receber o consentimento de seus sellers. Para realizar o consentimento, o seller deve acessar a opção Listar Integradores, disponível dentro do menu Integrações do Portal do Seller Magalu. Uma vez que o seller realize o consentimento, você receberá os dados do seller via Redirect_URI(cadastrada no momento da criação do Client). Enviaremos os seguintes dados:Code - É o código temporário de acesso do seller. Este dado deverá ser trocado pelo token de acesso no passo seguinte. O token de acesso é quem possibilita o acesso à API do Magalu.
CNPJ - CNPJ do seller em questão.
Email do User - Email do usuário que realizou o consentimento
Id do seller no Magalu - Identificação do seller dentro do Magalu Marketplace
Exemplo de chamada na redirect_uri
curl --request GET \ --url
https://site-integradora.com.br/callback?code=aR2F3SQjACPYjpCJaH5IrWlw7Mc&state=123456
789000%26email%3Dteste-do-seller%40seller.com%26seller_id%3Did-seller-no-magalu
Troca do Code pelo Token
Uma vez recebido os dados do Seller, sua aplicação precisará efetuar a troca do Code pelo Token, para aí sim conseguir acessar os dados daquele seller via API. O Code é um código temporário que tem duração de 10 minutos, assim, caso você tente realizar a troca do Code pelo Token num prazo superior à 10 minutos iremos retornar 401 na aplicação. Neste caso, o seller precisará realizar o consentimento novamente.
curl --request POST \
--url https://id.magalu.com/oauth/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=refresh_token \
--data client_id= < client id do aplicativo da integradora > \
--data client_secret= < client secret do aplicativo da integradora > \
--data refresh_token= < token de refresh para um determinado seller >
Detalhes da Requisição
Headercontent-type - Informar application/x-www-form-urlencoded.
grant_type - Informar authorization_code.
redirect_uri - URL informado no momento da criação do client.
client_id - Client id do retornado após a criação do client.
client_secret - Client secret retornado após a criação do client.
code - Code temporário enviado para a redirect_uri após o consentimento.
Detalhes da Resposta
Em caso de sucesso será retornado o status code: 200 - Ok, com um objeto JSON representado por:access_token - Token para acessar os dados do seller.
token_type - Tipo do token.
expires_in - Tempo de expiração do token em segundos.
refresh_token - Token para efetuar o refresh do access_token.
scope - Escopos permitidos para o acesso deste token.
created_at - Data de criação do token(representado por um valor inteiro).
400 -
invalid_request - Algum atributo obrigatório não foi informado.
invalid_client - ClientId ou ClientSecret inválidos.
invalid_grant - Pode representar uma série de motivos, dentre eles: informações passadas são inválidas, expiradas, revogadas ou redirectURI não pertence ao client informado.
{"error": "invalid_grant",
"error_description":
"The provided authorization grant is invalid, expired, revoked,does not match the
redirection URI used in the authorization request, or was issued to another client."
}
Refresh Token
Este passo será necessário sempre que o access_token expirar, sendo necessário informar o refresh_token do seller que deseja operar.IMPORTANTE - O mesmo refresh_token só pode ser
utilizado uma única vez e tem validade de seis meses a partir da data de criação do access_token atual.
Caso seja utilizado um refresh inválido(vencido ou já utilizado) retornaremos um erro 401 na requisição de
refresh_token. Neste caso o seller precisará realizar o consentimento novamente.
curl --request POST \
--url /oauth/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=refresh_token \
--data client_id= \
--data client_secret= \
--data refresh_token=
Detalhes da Requisição
Headercontent-type - Informar application/x-www-form-urlencoded.
grant_type - Informar refresh_token
client_id - Client id do retornado após a criação do client.
client_secret - Client secret retornado após a criação do client.
refresh_token - Informar o refresh_token do seller em questão
Detalhes da Resposta
Em caso de sucesso será retornado o status code:200 - Ok, com um objeto JSON representado por:
access_token - Token para acessar os dados do seller.
token_type - Tipo do token.
expires_in - Tempo de expiração do token em segundos.
refresh_token - Token para efetuar o refresh do access_token.
scope - Escopos permitidos para o acesso deste token.
created_at - Data de criação do token(representado por um valor inteiro).
Em caso de falha, será retornado um objeto JSON com os atributos error e error_description juntamente com o status code.
401 -
invalid_request - Algum atributo obrigatório não foi informado.
invalid_client - ClientId ou ClientSecret inválidos.
invalid_grant - Pode representar uma série de motivos, dentre eles: informações passadas são inválidas, expiradas, revogadas ou redirectURI não pertence ao client informado.
{
"error": "invalid_grant",
"error_description": "The provided authorization grant is invalid, expired, revoked,
does not match the redirection URI used in the authorization request, or was issued to another client."
}