Criação de um aplicativo no Painel do Melhor Envio
Autenticação
A autenticação deve ser realizada através da criação de um aplicativo no Painel do Melhor Envio, sendo que este aplicativo valerá para que a plataforma possa gerenciar os tokens de maneira que o usuário da plataforma não precise se preocupar com isto.
Através do aplicativo, o usuário apenas dará permissão para que a plataforma possa realizar requisições conforme as permissões concedidas. O usuário não deverá possuir acesso aos dados do aplicativo.
No formulário de cadastro de aplicativo, é necessário que sejam preenchidos com atenção todos os campos.
É de suma importância que o campo de callback seja idêntico a URL de callback de retorno da sua aplicação. Caso este campo esteja diferente, nossa API irá retornar Client invalid
impedindo a autorização do aplicativo.
A autenticação é baseada no padrão OAuth2.
Também disponibilizamos um fluxograma que poderá lhe auxiliar a visualizar este processo, assim como servir de base para que você adapte da melhor maneira ao fluxo de seu sistema.
Para uma documentação mais descritiva sobre como integrar o fluxo de autenticação, clique aqui para consultar o respectivo tópico de nossa nova documentação.
Autorização
Após o cadastro do aplicativo, serão fornecidas duas informações que serão essenciais no desenvolvimento do processo de autenticação com a API para solicitar a autorização dos usuários, estas informações são o Client ID e o Secret.
Para criar um novo app, basta clicar em "NOVO APLICATIVO" no painel de gerenciamento de autorizações e preencher o formulário com as informações solicitadas.
Dentre as informações que requerem maior cuidado estão o nome do aplicativo (que deve ser alusivo ao nome da plataforma) e a url de redirecionamento/callback (url para onde o usuário é redirecionado após autorizar o aplicativo).
Para disponibilizar a solicitação de autorização do aplicativo, deve-se realizar um redirect para a rota /oauth/authorize
informando as seguintes informações:
- O Client ID (fornecido após cadastro do app).
- A URL de redirecionamento (cadastrado no app).
- As permissões (separado por espaço).
Lista de permissões (solicitar apenas as permissões necessárias para sua integração)
- cart-read (Visualização dos itens do carrinho)
- cart-write (Cadastro e edição dos itens do carrinho)
- companies-read (Visualização das informações de empresas)
- companies-write (Cadastro e edição das informações de empresas)
- coupons-read (Visualização dos cupons cadastrados)
- coupons-write (Cadastro de novos cupons)
- notifications-read (Visualização das notificações)
- orders-read (Visualização das etiquetas)
- products-read (Visualização de produtos)
- products-write (Cadastro e edição de produtos)
- purchases-read (Visualização das compras)
- shipping-calculate (Cotação de fretes)
- shipping-cancel (Cancelamento de etiquetas)
- shipping-checkout (Checkout para compra de fretes, utiliza saldo da carteira)
- shipping-companies (Consulta de transaportadoras)
- shipping-generate (Geração de novas etiquetas)
- shipping-preview (Pré-visualização de etiquetas)
- shipping-print (Impressão de etiquetas)
- shipping-share (Compartilhamento de etiquetas)
- shipping-tracking (Rastreio de fretes)
- ecommerce-shipping (Cotação e compra de fretes para sua loja)
- transactions-read (Visualização das transações da carteira)
- users-read (Visualização das informações pessoais)
- users-write (Edição das informações pessoais)
O usuário irá autorizar ou não a solicitação de acesso, redirecionando para a url de redirecionamento (redirect_uri
), retornando um parâmetro error
caso não autorizado e um parâmetro code
caso autorizado.
O code
retornado neste redirecionamento é o mesmo que deverá ser enviado para a requisição do token.
Abaixo um exemplo de como a URL deve ser montada:
{{url}}/oauth/authorize?client_id={{client_id}}&redirect_uri={{callback}}&response_type=code&scope=cart-read
Nota: esta rota deve ser chamada através de redirect.
Nota: a URL de callback deve ser estática e conforme configurada no app.
Caso deseje passar algum argumento, é possível passar o campo state
com o valor desejado para que retorne junto ao code
, o campo state
é passado do mesmo modo que o Client ID, a URL de redirecionamento e as demais informações.
Abaixo um exemplo com todas as permissões e parâmetro state
:
{{url}}/oauth/authorize?client_id={{client_id}}&redirect_uri={{callback}}&response_type=code&state=teste&scope=cart-read cart-write companies-read companies-write coupons-read coupons-write notifications-read orders-read products-read products-write purchases-read shipping-calculate shipping-cancel shipping-checkout shipping-companies shipping-generate shipping-preview shipping-print shipping-share shipping-tracking ecommerce-shipping transactions-read users-read users-write