Pagos

Build Status codecov Heroku Heroku

Este es el servicio de pagos de Back-End de bookBnB. Nuclea aquellas funcionalidades vinculadas a las interacciones y pagos con el contrato inteligente desplegado en la blockchain Ethereum.

Ambientes

Se encuentra desplegado en un ambiente productivo y otro interno del equipo de desarrollo para testing:

Instalaci贸n

Dado que la aplicaci贸n se encuentra dockerizada la instalaci贸n es tan sencilla como:

$ git clone git@github.com:BookBnB/payments-service.git
$ cd payments-service
$ docker-compose up -d

Luego para conectarse a la app:

$ docker-compose exec app bash

Imagen

Para crear una imagen de docker con el estado actual de la aplicaci贸n se debe ejecutar:

$ docker/build_production_image.sh

Esto crear谩 una imagen con el tag payments-service:latest.

Despligue

Luego para desplegar la imagen en Heroku:

$ docker/heroku_push.sh

Es necesario que para ello se encuentre configurada la variable de ambiente $TRAVIS_BRANCH indicando la rama que se desea desplegar.

Build

Para compilar la aplicaci贸n:

$ npm run build # one time
$ npm run build:watch # fast recompile on file changes

Tests

Para ejecutar los tests:

$ npm run test # all tests, no coverage
$ npm run test:unit # unit tests only
$ npm run test:acceptance # acceptance tests only
$ npm run test:coverage # all tests, with coverage

Configuraci贸n

Se deben configurar las siguientes variables de ambiente:

variabledescripci贸n
CORE_URLUrl del servicio principal
DATABASE_URLUrl de conexi贸n a la base de datos
NODE_ENVAmbiente en el que se encuentra
NODE_URLUrl del nodo Ethereum
CONTRACT_ADDRESSDirecci贸n del Smart Contract
BACKOFFICE_URLUrl del front-end del backoffice

Cobertura

El proyecto fue testeado con pruebas unitarias y de integraci贸n utilizando Gherkin logrando una cobertura mayor al 90%. Se puede ver el detalle de los reportes en codecov.

Arquitectura

Arquitectura

Este microservicio utiliza una arquitectura hexagonal para mantener desacoplada la l贸gica de negocio con el resto de las conexiones del servicio.

OpenApi

Puede consultarse la especificaci贸n OpenApi en api.json o utilizando swagger en api-docs.