/helpay

API REST para Controle de Estoques (Cartão de Crédito)

Primary LanguagePHP

Microserviço para Compra de Produtos c/ Cartão de Crédito.

A proposta desse exercício é construir uma API REST para compra de produtos utilizando a forma de pagamento cartão de crédito. A API deve possibilitar todo o gerenciamento de estoque e venda de produtos.

Arquitetura da solução:

Helpay

Estrutura do Código:

├─ api/

├─── config/

├────── core.php - Usado para configuração core

├────── database.php - Usado para conectar ao database

├─── objects/

├────── product.php - Propriedades e Métodos para as queries do produto.

├─── product/

├────── create.php - Cria o produto no database

├────── delete.php - Deleta o produto no database, de acordo com o produt_id

├────── read.php - Lê os produtos no database e os retorna em JSON

├────── read_one.php - Lê o produto no database de acordo com o product_id e trás os dados completos

├────── update.php - Atualiza a informação de um produto, de acordo com seu product_id

├─── purchase/

├────── purchase.php - Faz situação de compra

├─── routes/

├────── routes.php - Ajusta rotas da aplicação

├─ db/

├─── product_table.sql - Schema do banco de dados

├─ Dockerfile

├─ README.md

Endpoints:

1. Adicionar produtos ao estoque:

[POST] /api/products

{
    "name" : "Computador",
    "amount" : 450.0,
    "qty_stock" : 5
}

2. Listar produtos disponíveis do estoque:

[GET] /api/products

3. Detalhar um produto do estoque:

[GET] /api/product/product_id

4. Comprar um produto do estoque:

[POST] /api/purchase

{
	"product_id":1,
	"quantity_purchased":1,
	"card":{
		"owner":"John Doe",
		"card_number":"4111870010309393",
		"date_expiration":"12/2018",
		"flag":"VISA",
		"cvv":"123"
	}
}

5. Remover um produto do estoque:

[DELETE] /api/product/product_id

Integrações

A solução possui integração com o Google Drive. Quando uma compra é realizada, é gerado um arquivo .xml com os dados do pedido, e são salvos na root do mesmo. Após isso, é enviado um email para o administrador do sistema (exemplo@gmail.com) com o link do drive para download.