Para testear todas las funcionalidades de la aplicación debemos hacer el despliegue. Lo podemos hacer en un VPS o en una plataforma como Render.
Lo mejor es hacer un fork del repositorio, o clonar el código y subirlo a Github. Pero antes modifica el archivo src/config.js de acuerdo a tus país y preferencias. En el campo thisApplicationURL debes especificar la URL donde estará hosteada la aplicación. Por ejemplo si usas Render, quedará algo así: https://mi-aplicacion.onrender.com. Para el campo frontendApplicationURL, la URL de la aplicación cliente o, igual a thisApplicationURL.
Seguido creamos una base de datos PostgreSQL en Render, versión >= 14. Una vez creada la instancia, buscamos las credenciales para conectarnos y las guardamos.
Luego creamos un servidor o Web Service y le indicamos el repositorio donde está el código de la aplicación. En el formulario para la creación de la instancia, en el campo Build Command, ponemos npm install.
Creada la instancia, accedemos a las variables de entorno, en la sección Environment, y establecemos las variables para la base de datos y demás. (Ver .env).
Una vez la actualización de las variables de entorno se haya realizado, hacemos una petición GET al endpoint /dbSchemeSeed y posteriormente a /dbDataSeed. Esto creará las tablas e insertará datos para poder probar la aplicación.
También es importante establecer adecuadamente el campo redirect_uri en la aplicación de Mercado Pago.
En el caso de que se quiera montar la aplicación en local, primero hay que copiar y pegar el archivo .env.example, renombrarlo a .env y reemplazar las variables.
Por otro lado si se hace un despliegue en cualquier plataforma, basta con establecer las variables en las configuraciones de la aplicación. En este caso, al inicio se debería establecer también N_ENV='development', para que los endpoints que crean la estructura de la base de datos estén disponibles, luego de eso se elimina.
LOGIN_SECRET: Cualquier clave secreta, solo es necesaria para la creación de JWT tokens.
DB_PASS: Contraseña de la base de datos PostgreSQL.
DB_USER: Usuario de la bdd.
DB_HOST: Host, por defecto localhost.
DB_NAME: Nombre de la bdd, por defecto mercadopago_marketplace.
MP_APP_ID: Identificador de la aplicación Mercado Pago.
MP_ACCESS_TOKEN: Access Token.
MP_CLIENT_SECRET: Client Secret.
N_ENV: Por defecto development, se elimina en producción.
Puedes usar el correo [email protected] y la contraseña 123 (Para todos los correos). La respuesta incluirá un token JWT, que posteriormente se debe usar en los headers.
Body:
{
"email": "[email protected]",
"password": "123"
}
Response:
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjk2ODc1ODk2LCJleHAiOjE2OTY4OTc0OTZ9.kW3LPpmHjVi3W4ARe53bGfr9hAOtaeOhDUSsNz3sZ3Q" // JWT TOKEN
}
Devuelve el link con el que un usuario puede otorgar acceso a información privada de su cuenta, a nuestra aplicación.
Headers:
{
"Content-Type": "application/json",
"Authorization": "Bearer [JWT TOKEN DE UN VENDEDOR]"
}
Response:
{
"success": true,
"password": "https://auth.mercadopago.com/authorization?client_id=[MP_APP_ID]&response_type=code&platform_id=mp&state=[state]&redirect_uri=[redirectUrl]"
}
Recibe por query params: code (Código para obtener credenciales) y state (Identificador aleatorio). Obtiene las credenciales del usuario y las guarda en la base de datos.
Devuelve una lista de productos.
Response:
{
"success": true,
"products": [
{
"id": 1,
"name": "Product1",
"description": "Lorem description",
"price": 1300,
"seller_id": 1,
"created_at": "2023-10-09T19:22:21.647Z"
}
// ...
]
}
Crea una preferencia con los datos de un producto y devuelve un link con el que un usuario puede realizar el pago.
Headers:
{
"Content-Type": "application/json",
"Authorization": "Bearer [JWT TOKEN DE UN CLIENTE]"
}
Body:
{
"productId": 1,
"quantity": 2
}
Response:
{
"success": true,
"link": // Init point
}
Devuelve las preferencias creadas.
Headers:
{
"Content-Type": "application/json",
"Authorization": "Bearer [JWT TOKEN DE UN VENDEDOR]"
}
Response:
{
"success": true,
"preferences": // Array de preferencias
}
Función a implementar.
Response:
{
"success": true
}
Para crear las tablas de la base de datos.
Response:
{
"success": true
}
Para insertar datos de prueba en la base de datos.
Response:
{
"success": true
}
Link al artículo en el que explico el funcionamiento de un Marketplace con Mercado Pago.