Activación del Módulo de Integración
Uno de los primeros procesos que llevamos a cabo internamente en cuanto iniciamos un proyecto de integración con el Marketplace, es la creación del Módulo". Pero, cuál sería este módulo? En este tema traeremos más información sobre esta pantalla en ANYMARKET y su funcionamiento vía API.
Qué es el Módulo de Integración?
En ANYMARKET, el Vendedor tiene acceso a una pantalla donde listará todas las integraciones con los Marketplaces que tenemos disponibles, y es aquí donde el Vendedor activará y configurará la integración.
Apenas iniciamos el proceso de integración con un nuevo Marketplace en ANYMARKET, enviamos un formulario y uno de los datos que solicitamos es:
- Cuáles son los datos fundamentales para autenticar a un nuevo cliente?
Esta información es importante para la construcción de la pantalla del Módulo personalizado para cada Marketplace aquí en ANYMARKET, ya que será el propio Marketplace quien definirá qué información realizará la autenticación del Vendedor.
Ejemplos de autenticaciones:
- Token + Contrasenã;
- Identificación de la tienda;
- Nombre de usuario y contrasenã;
- Token + Usuario y Contrasenã;
- Etc;
Esta información debe ser pasada al Vendedor, para que pueda activar la integración a través de ANYMARKET. En la impresión de ejemplo que proporcionamos a continuación, Marketplace controlará mediante el inicio de sesión y la contrasenã, por lo que la pantalla de autenticación tendrá el campo Nombre de la cuenta (campo predeterminado para todas las pantallas del módulo ANYMARKET) y debajo de los campos de autenticación (Inicio de sesión + Contrasenã) que el Marketplace ha definido (Campos personalizados).

Comportamientos de la pantalla del módulo
Detallaremos en este tema cómo funciona la pantalla del módulo, qué mandos se activarán y el retorno y acciones esperadas el la integración.

Según el flujo anterior, desde el momento en que el Vendedor accede a la pantalla del módulo e ingresa la información y hace clic en el botón Guardar, ANYMARKET activará la siguiente información en el control remoto /testIntegration:
| Headers | |
|---|---|
| x-anymarket-token | JWT con la información para la autenticación en el middleware. |
Ejemplo JWT ANYMARKET:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpcCI6IjEwLjAuOS4xNzIiLCJvcmdhbml6YXRpb24iOiJBTllNQVJLRVQgVGVzdGUgLSBCcmFzaWwiLCJvaSI6IjIyNDQ5NTA0LiIsImV4cCI6MTYxMjc5MTI2NCwibG9naW4iOiJkYW5pbG8ub2xpdmVpcmFAZGIxLmNvbS5iciJ9.FKF8wRb97xZmpakGbkoYfO0cjIkj48rwcis4DOGlUEh4cD98sFRJTVfrmMOaAe-XrBoPvTWbSdJfNy81-_VMLq9dbcKpBPO8MfHDXmqWV7tuHT1BaIcOkYZl-uIvOMtxCmDiCrX1ny2DvjY_LLuzRjexM6CQw4rRt8NXZb3dGV4
Este JWT contiene la siguiente información:
"organization" - Nombre de la empresa
"oi" - ID de la organización, identificador único del comerciante; Este campo diferencia a los vendedores
"exp" - Tiempo de expiración del token
"login" - Usuario que realiza la llamada; Se puede utilizar con fines de auditoría.
El middleware debe estar preparado para recibir el token verificar su caducidad e identificar la firma con la clave pública ANYMARKET.
Requisição
{
"id": null,
"active": true,
"templateId": 10,
"accountName": "accountName",
"discountType": "PERCENT",
"useSandbox": true,
"accountDefault": true,
"priceFactor": 10.0,
"discountValue": 5.0,
"initialDateForOrderImport": "dd-MM-yyyy",
"updatePriceStockStatus": true,
"additionOfFreight": 0,
"user": null,
"login": "XXXXXXXX",
"senha": "XXXXXXXX"
}
{
"title": "testIntegration",
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Id de la cuenta"
},
"active": {
"type": "boolean",
"description": "Informa se la cuenta está activa"
},
"templateId": {
"type": "number",
"description": ""
},
"accountName": {
"type": "string",
"description": "Nombre de cuenta ingresado por el vendedor"
},
"discountType": {
"type": "string",
"description": "Tipo de descuento (PERCENT ou VALUE)"
},
"useSandbox": {
"type": "boolean",
"description": "Si la cuenta utilizada es Sandbox"
},
"accountDefault": {
"type": "boolean",
"description": "Si es cuenta estándar"
},
"priceFactor": {
"type": "number",
"description": "Factor de precio multiplicador (MARKUP ADICIONAL)"
},
"discountValue": {
"type": "number",
"description": "Valor de descuento"
},
"initialDateForOrderImport": {
"type": "string",
"format": "dd-MM-yyyy",
"description": "Fecha de inicio de importación de pedidos."
},
"updatePriceStockStatus": {
"type": "boolean",
"description": "Define que solo se permitirán actualizaciones de precio, stock y estado"
},
"additionOfFreight": {
"type": "integer",
"description": "Valor adicional en la parte superior de la tabla de envío."
},
"user": {
"type": "string",
"description": "En este primer momento será nulo, pero en el remoto saveAccount tendrá la información del Token del Vendedor."
},
"login": {
"type": "string",
"description": "CAMPO PERSONALIZADO PARA LA AUTENTICACIÓN DEL VENDEDOR"
},
"senha": {
"type": "string",
"description": "CAMPO PERSONALIZADO PARA LA AUTENTICACIÓN DEL VENDEDOR"
}
}
}
Respuestas que esperamos
El Marketplace verificará la información ingresada en los campos predeterminados, devolviendo:
true
Si Marketplace valida la información, activaremos otra llamada que active el control remoto /saveAccount. En ese momento, el Marketplace almacenará las configuraciones que el Vendedor haya realizado y la información visual a través de la pantalla se configurará como Activa.
{
"id": 127,
"active": true,
"templateId": null,
"accountName": "Seller_test",
"discountType": "PERCENT",
"useSandbox": false,
"accountDefault": true,
"priceFactor": 1,
"discountValue": 0,
"updatePriceStockStatus": true,
"additionOfFreight": 0,
"user": {
"token": "LG1620824269786R9896699",
"country": null
},
"initialDateOrderImport": "09-02-2022",
"storeId": "123456",
"password": "!@Teste"
}

Si Marketplace no identifica al vendedor que está activando el módulo , la devolución que esperamos es:
false