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 e o protocolo padrao da industria para autorizacao. De forma geral, o OAuth fornece aos clientes um acesso delegado e seguro a recursos do servidor em nome do proprietario do recurso. Especifica um processo para que os proprietarios de recursos autorizem o acesso de terceiros aos seus recursos do servidor sem partilhar 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 autorizacao, com a aprovacao do proprietario do recurso. O terceiro utiliza entao o token de acesso para aceder aos recursos protegidos alojados no servidor de recursos.
Na Jumpseller, este fluxo de autorizacao gera um token de acesso que pode utilizar para solicitar informacoes da API da Jumpseller.
O serviço OAuth 2 da Jumpseller suporta o fluxo de Código de Autorização (Authorization Code), ou seja, utiliza o seu client id para solicitar um código e depois trocar esse código por um access token e um refresh token. Por defeito, o access token expira em 1 hora, mas pode obter um novo com o refresh token.
O access token é utilizado pelo cliente para aceder à 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 o utilizar 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 utilizado 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 a solicitar 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 utilizador 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 utilizador detalhes sobre os âmbitos para os quais o acesso está a ser solicitado. O utilizador é então convidado a autorizar o acesso aos conjuntos de dados definidos nos âmbitos.
Independentemente da autorização ou recusa por parte do utilizador, 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 utilizador 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 utilizado 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, precisará de 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. Utilizado apenas para validação e deve ser EXATAMENTE o mesmo informado no pedido /oauth/authorize. Utilize urn:ietf:wg:oauth:2.0:oob para testes a partir do terminal. |
Este é o formato cURL para solicitar os seus tokens utilizando 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 pode utilizar para solicitar, por exemplo, a API da Jumpseller. |
| token_type | A forma como o access token acima deve ser utilizado. É sempre "bearer". |
| expires_in | O período de tempo em segundos até o seu access token expirar. |
| refresh_token | Este é um token utilizado para atualizar/substituir o seu access token quando este expirar. |
| created_at | O formato timestamp da sua |
Recomendamos guardar estas credenciais na base de dados da sua aplicação.
Com este access token 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"
}
}
Aceda à 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, é da sua responsabilidade verificar se o access token atual expirou e depois utilizar o refresh token para solicitar um novo access token.
NOTA: Guarde 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, pode verificar se expirou e atualizá-lo sempre que necessário.
Para atualizar o seu access token, 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 aceder. 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 encomendas, expedições e histórico de encomendas |
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 eliminar produtos |
write_orders | Criar, atualizar e reembolsar encomendas |
write_customers | Criar, atualizar e eliminar clientes |
write_categories | Criar, atualizar e eliminar 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 eliminar webhooks |
write_promotions | Criar, atualizar e eliminar promoções |
write_taxes | Criar e atualizar regras fiscais |
write_pages | Criar, atualizar e eliminar 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 eliminar 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 | Gerir 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 compreende o fluxo de código de autorização do OAuth 2, é altura de aprender mais sobre a API da Jumpseller e utilizá-la com o seu access token.
Comece o seu período experimental gratuito de 7 dias. Sem necessidade de cartão de crédito.