Estructura del soporte lógico:

  • ./exchanger-api/plugins - carpeta con los plug-ins para el cambiador

  • ./exchanger-api/config - carpeta con configuraciones rest-api

  • ./exchanger-admin-web/config - carpeta con configuraciones para la parte de los clientes del panel del administrador

  • ./exchanger-client-web/config - carpeta con configuraciones para la parte de los clientes

Servicios


  • nginx - Servicio para una emisión rápida y estable de la aplicación vue, así como para proxy rest api y ws

  • mongodb - Servicio base de datos principal del proyecto

  • redis - Servicio para datos operativos, así como para notificar otros micro servicios sobre un evento nuevo;

  • nodejs - Servicio la plataforma principal

  • (s) ex-api-http -Servicio proporciona REST-API (el servicio principal funciona en el modo de cluster);

  • (s) ex-ws - Servicio proporciona la conexión WebSocket con los clientes y el panel del administrador que es responsable de las acciones en tiempo real;

  • (s) ex-parser-rate - Servicio analiza el tipo de cambio en fuentes distintas, las procesa y actualiza en la base de datos;

  • (s) ex-cron - Servicio revisa el estado del servidor, cuenta el número de visitas, realiza el borrado de datos innecesarios y crea una copia de reserva de la base de datos;

  • (s) ex-payout-service - Servicio procesa las solicitudes marcadas como pagadas o listas para el pago (si está activado un cambio automático o semiautomático y está configurada la API de los sistemas de pagos);

  • (s) ex-notification-service -Servicio envía notificaciones al cliente y al administrador a través del correo electrónico y mensajeros comunes;

  • (s) ex-blacklist-bc - Servicio el servicio revisa y actualiza el estado de la lista negra del servicio bestchange.org

  • (s) ex-migrate - Servicio comprueba la pertinencia de los datos en la base y los estandariza;

  • (s) ex-seed - Servicio sube los datos principales al cambiador;


Módulo Pago

Estructura de ficheros:

  • plugins/payouts/__NAME_PAYOUT - la carpeta con el módulo
  • ./icon.png or ./icon.jpg - ícono del módulo 1:1 (recomendado 150px por 150px)
  • ./configure.js - fichero de normas la configuración del módulo, así como la configuración de accesos
  • ./index.js - Clase del módulo (punto de accesos al módulo)
  • ./template/admin.html - Patrón el administrador de la página de las configuraciones del módulo (vue template)
  • ./template/admin.js - fichero de exportación de lógica de los clientes js (vue js)

configure.js:

Ejemplo de fichero y sus funciones

module.exports.type = 'payout'; //  tipo del módulo (pago)
module.exports.title = 'Title of payout'; // el título del módulo para la visualización en el panel del administrador (hasta 200 símbolos)
module.exports.name = 'Name service'; // Nombre del módulo para la visualización en las monedas (hasta 50 símbolos)
module.exports.required_npm = []; //matriz con los módulos necesrios de npm

//matriz de xml de las monedas con las que funciona dicho módulo
module.exports.allow_XML = [ 
  "CARDUSD",
  "WMZ",
];

// objeto de configuración por defecto (será instalado en config/app_config.json)
module.exports.default_config = { 
  clientID: '',
  clientSecret: '',
  clientPassword: '',
};

// tipos de datos en la configuración donde 1 es clave pública, 2 es clave secreta (no se transferirá cada vez al administrador)
module.exports.required_config = {
  clientID: 1,
  clientSecret: 2, // ocultar
  clientPassword: 2, // ocultar
};

index.js:

Debe tener la clase de exportación

Cómo trabajar con la configuración:
const id_key = __dirname.split('/').slice(-1)[0];
const config = require('../main_config')(id_key);

const clientID = await config.get('clientID')  //recibir la configuración de la llave clientID
Ejemplo del constructor
constructor(API) {
    this.API = API;
    this.allowIPs = [];
    this.id_key = id_key;
    this.web_domain = config.get('domain');
    this.schema = config.get('schema');
  }

Function getFields(lang,xml){}

Param lang has Sting:

ru, en, etc... - Clave breve del lenguaje

Param xml has Sting:

Ejemplo del constructor

Should Return Array (when xml is support)
// example 
     return [{
        _id: 'account_p',
        name: 'Advanced account USD',
        placeholder: 'U000000',
        regexp: '^U+[0-9]{6,12}$',
        regexp_error: "Account incorrect",
        required: true,
      }];
Should Return NULL (when xml is not support)

Function transfer(order){}

Param order has object:
key Type Required Value
order.uid Number YES order uid
order.outAmount Float YES order outAmount
order.outXML String YES XML of currency for withdrawal
order.outValues Object YES Order requisites
//ejemplo de objeto order.outValues

order.outValues ={
  account_p:'U000000'
}

// key its from getFields ._id
// value entered client
Should Return Promise -> resolve (when transfer success) {Object}
key Type Required Value
ok Number YES 1 - success
transaction String YES transaction id or transfer id
to String YES Wallet id or other requisites who received payment
currency String YES Currency ISO (example USD)
amount Float YES amount of transfer
fee Float No Fee of tx (will add comment for admin)
note String No Note for order (will show to user)
Should Return Promise -> reject (when transfer fail) {String}

Message of fail