How to Build a Jumpseller App
Learn how to build a Jumpseller App using our API to extend your store with custom integrations and functionality.
OAuth 2 é o protocolo padrão da indústria para autorização. De forma geral, o OAuth fornece aos clientes um acesso delegado e seguro a recursos do servidor em nome do proprietário do recurso. Especifica um processo para que os proprietários de recursos autorizem o acesso de terceiros aos seus recursos do servidor sem compartilhar as suas credenciais. Concebido especificamente para funcionar com HTTP, o OAuth permite essencialmente que tokens de acesso sejam emitidos para clientes de terceiros por um servidor de autorização, com a aprovação do proprietário do recurso. O terceiro usa então o token de acesso para acessar os recursos protegidos alojados no servidor de recursos.
Na Jumpseller, este fluxo de autorização gera um token de acesso que você pode usar para solicitar informações da API da Jumpseller.
O serviço OAuth 2 da Jumpseller suporta o fluxo de Código de Autorização (Authorization Code), ou seja, usa o seu client id para solicitar um código e depois trocar esse código por um access token e um refresh token. Por padrão, o access token expira em 1 hora, mas você pode obter um novo com o refresh token.
O access token é usado pelo cliente para acessar a API da Jumpseller.
A ideia dos refresh tokens é que, se um access token for comprometido, como tem uma duração curta, o atacante tem uma janela limitada para usá-lo indevidamente.
Os refresh tokens, se comprometidos, são inúteis porque o atacante necessita do client id e do secret, além do refresh token, para obter um access token.
Entre os diferentes fluxos suportados pelo OAuth 2, o Fluxo de Código de Autorização (Authorization Code Flow) é o usado pela Jumpseller. A maioria das linguagens de programação já disponibiliza bibliotecas que abstraem o fluxo OAuth 2 apresentado abaixo e podem facilitar o seu trabalho.

Estes são os passos do fluxo de código de autorização:
Vamos começar a compreender cada um deles.
Este passo começa com a aplicação solicitando autorização ao serviço OAuth 2 da Jumpseller:
GET https://accounts.jumpseller.com/oauth/authorize
Este pedido deve incluir os seguintes parâmetros na query string:
| Parâmetro | Descrição/Valor |
|---|---|
| client_id | Obrigatório. O client ID da sua aplicação registada. |
| redirect_uri | Obrigatório. O URI para redirecionar depois de o usuário conceder ou negar a autorização. |
| response_type | Obrigatório. Defina como code. |
| scope | Obrigatório. A lista de âmbitos separados por espaço necessários para a sua aplicação. Consulte a lista de âmbitos. |
Um pedido típico tem este aspeto:
GET https://accounts.jumpseller.com/oauth/authorize?client_id=e27af9be9e7343dc29095d292d7a1103383a5d010c8912783e0fa54f993ca751&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback&response_type=code&scope=read_orders%20write_products%20read_customers%20write_promotions

Depois de solicitar o endpoint /oauth/authorize, o serviço OAuth 2 da Jumpseller apresenta ao usuário detalhes sobre os âmbitos para os quais o acesso está sendo solicitado. O usuário é então convidado a autorizar o acesso aos conjuntos de dados definidos nos âmbitos.
Independentemente da autorização ou recusa por parte do usuário, o serviço OAuth 2 da Jumpseller redireciona de volta para o redirect_uri informado. No nosso exemplo do passo 1, este endereço é http://localhost:8000/callback.
Se o usuário autorizar o pedido, a query string da resposta conterá o parâmetro code. O parâmetro code é um código de autorização que pode ser usado para trocar por um access token e um refresh token. Por exemplo:
GET http://localhost:8000/callback?code=f04bb200f5779644a65e0a174f49776004bc3de060a96f961f72c5835533d006
Quando tiver o código de autorização, você precisará fazer um pedido POST e trocá-lo por um access token. Este pedido POST é feito ao endpoint:
POST https://accounts.jumpseller.com/oauth/token
O corpo deste pedido POST deve conter os seguintes parâmetros:
| Parâmetro | Descrição/Valor |
|---|---|
| client_id | Obrigatório. Este é o client id da sua aplicação OAuth 2. |
| client_secret | Obrigatório. Este é o client secret da sua aplicação OAuth 2. |
| grant_type | Obrigatório. Este campo deve conter o valor authorization_code. |
| code | Obrigatório. O código de autorização devolvido pelo pedido ao endpoint /authorize. |
| redirect_uri | Obrigatório. Usado apenas para validação e deve ser EXATAMENTE o mesmo informado no pedido /oauth/authorize. Use urn:ietf:wg:oauth:2.0:oob para testes a partir do terminal. |
Este é o formato cURL para solicitar os seus tokens usando o código:
curl -F grant_type=authorization_code \
-F client_id=6e19c63534c711bd2ec82da2a4bcc80638c79223b6bad064ce81a8987ec49ecb \
-F client_secret=bfab60ff47504b29bf2a29c4a8f30800286a36b590b1c36ce619f5255f43b0ef \
-F code=f04bb200f5779644a65e0a174f49776004bc3de060a96f961f72c5835533d006 \
-F redirect_uri=urn:ietf:wg:oauth:2.0:oob \
-X POST https://accounts.jumpseller.com/oauth/token
Numa resposta bem-sucedida a este pedido, o serviço OAuth 2 da Jumpseller devolve um código HTTP 200 OK no cabeçalho da resposta e os seguintes dados JSON:
{
"access_token":"80de978742714f8747036188cf6bab538e976adf72144d545e185ae444bc473d",
"token_type":"bearer",
"expires_in":3600,
"refresh_token":"86454df3e89cd34bd006ac68a76f6f2af884822ed68ce417777a4cffaae64b61",
"created_at":1502473092
}
Vamos compreender cada par chave-valor:
| Chave | Valor |
|---|---|
| access_token | Um token de acesso que você pode usar para solicitar, por exemplo, a API da Jumpseller. |
| token_type | A forma como o access token acima deve ser usado. É sempre "bearer". |
| expires_in | O período de tempo em segundos até o seu access token expirar. |
| refresh_token | Este é um token usado para atualizar/substituir o seu access token quando este expirar. |
| created_at | O formato timestamp da sua |
Recomendamos salvar estas credenciais na base de dados da sua aplicação.
Com este access token você pode começar a fazer pedidos à API da Jumpseller. Vamos fazer um pedido GET simples ao endpoint /store/info.json:
curl -H 'Content-Type: application/json' \
-H "Authorization: Bearer 80de978742714f8747036188cf6bab538e976adf72144d545e185ae444bc473d" \
https://api.jumpseller.com/v1/store/info.json
A resposta deste pedido devolve os seguintes dados JSON:
{
"store": {
"name":"Your Store",
"code":"yourstore",
"currency":"EUR",
"country":"PT",
"email":"youremail@example.com"
}
}
Acesse a página da API da Jumpseller para conhecer os nossos endpoints.
O access token é válido por apenas 1 hora, por isso, ao construir a sua aplicação web, é sua responsabilidade verificar se o access token atual expirou e depois usar o refresh token para solicitar um novo access token.
NOTA: Salve os access e refresh tokens, bem como uma data de expiração criada a partir do par chave-valor expires_in, na sua base de dados. Desta forma, você pode verificar se expirou e atualizá-lo sempre que necessário.
Para atualizar o seu access token, você deve fazer um pedido POST ao seguinte endpoint:
POST https://accounts.jumpseller.com/oauth/token
O corpo deste pedido POST deve conter os seguintes parâmetros:
| Parâmetro | Descrição/Valor |
|---|---|
| client_id | Obrigatório. Este é o client id da sua aplicação OAuth 2. |
| client_secret | Obrigatório. Este é o client secret da sua aplicação OAuth 2. |
| grant_type | Obrigatório. Este campo deve conter o valor refresh_token. |
| refresh_token | Obrigatório. O refresh token devolvido pela troca do código de autorização. |
Este é o formato cURL para solicitar os seus tokens atualizados:
curl -F grant_type=refresh_token \
-F client_id=6e19c63534c711bd2ec82da2a4bcc80638c79223b6bad064ce81a8987ec49ecb \
-F client_secret=bfab60ff47504b29bf2a29c4a8f30800286a36b590b1c36ce619f5255f43b0ef \
-F refresh_token=86454df3e89cd34bd006ac68a76f6f2af884822ed68ce417777a4cffaae64b61 \
-X POST https://accounts.jumpseller.com/oauth/token
A resposta terá a mesma estrutura JSON do passo 5, mas com tokens completamente novos.
Os âmbitos definem a que dados a sua aplicação pode acessar. Solicite apenas os âmbitos de que a sua aplicação necessita. Múltiplos âmbitos são separados por espaços no parâmetro scope.
| Âmbito | Descrição |
|---|---|
read_products | Ler produtos, variantes, imagens, opções e campos personalizados |
read_orders | Ler pedidos, expedições e histórico de pedidos |
read_customers | Ler contas e grupos de clientes |
read_categories | Ler categorias de produtos |
read_store | Ler informações e definições da loja |
read_settings | Ler configuração da loja |
read_shipping_methods | Ler métodos e tarifas de envio |
read_payment_methods | Ler métodos de pagamento |
read_hooks | Ler webhooks |
read_promotions | Ler promoções e descontos |
read_taxes | Ler regras fiscais |
read_pages | Ler páginas da loja |
read_countries | Ler informações de países |
read_custom_fields | Ler campos personalizados de produtos |
read_checkout_custom_fields | Ler campos adicionais do checkout |
read_customer_categories | Ler categorias de clientes |
read_jsapps | Ler aplicações JavaScript |
read_apps | Ler aplicações instaladas |
read_fulfillments | Ler informações de expedição |
read_locations | Ler localizações de armazém |
read_transaction_ledgers | Ler saldo da loja |
| Âmbito | Descrição |
|---|---|
write_products | Criar, atualizar e excluir produtos |
write_orders | Criar, atualizar e reembolsar pedidos |
write_customers | Criar, atualizar e excluir clientes |
write_categories | Criar, atualizar e excluir categorias |
write_store | Atualizar definições da loja |
write_settings | Atualizar configuração da loja |
write_shipping_methods | Criar e atualizar métodos de envio |
write_payment_methods | Criar e atualizar métodos de pagamento |
write_hooks | Criar, atualizar e excluir webhooks |
write_promotions | Criar, atualizar e excluir promoções |
write_taxes | Criar e atualizar regras fiscais |
write_pages | Criar, atualizar e excluir páginas |
write_countries | Atualizar definições de países |
write_custom_fields | Criar e atualizar campos personalizados |
write_checkout_custom_fields | Atualizar campos adicionais do checkout |
write_customer_categories | Criar e atualizar categorias de clientes |
write_jsapps | Criar, atualizar e excluir aplicações JavaScript |
write_fulfillments | Criar e atualizar expedições |
write_locations | Criar e atualizar localizações |
write_store_setup | Criar novas lojas através do endpoint de configuração de loja |
write_reviews | Gerenciar avaliações de produtos |
A especificação completa da API, incluindo definições de segurança OAuth 2.0, está disponível em:
https://api.jumpseller.com/swagger.json
Agora que você compreende o fluxo de código de autorização do OAuth 2, é hora de aprender mais sobre a API da Jumpseller e usá-la com o seu access token.
Comece seu teste grátis de 7 dias. Sem necessidade de cartão de crédito.