- ./exchanger-api/plugins - folder z wtyczkami do wymiennika
- ./exchanger-api/config - folder z konfiguracjami rest-api
- ./exchanger-admin-web/config - folder z konfiguracjami po stronie klienta w panelu administracyjnym
- ./exchanger-client-web/config - folder z konfiguracjami po stronie klienta
sierwisy
- nginx - sierwis dla szybkiego i stabilnego wydawania aplikacji vue, a także dla proxy rest api i ws
- mongodb - sierwis główna baza danych projektów
- redis - sierwis do danych operacyjnych, a także do powiadamiania innych mikroserwisów o nowym zdarzeniu;
- nodejs - sierwis główna platforma
- (s) ex-api-http -sierwis udostępnia REST-API (usługa główna działa w trybie klastrowym);
- (s) ex-ws - sierwis udostępnia połączenie WebSocket z klientami oraz panel administracyjny odpowiedzialny za działania w czasie rzeczywistym;
- (s) ex-parser-rate - sierwis analizuje przebieg w różnych źródłach, procesy i aktualizacje w bazie danych;
- (s) ex-cron - sierwis sprawdza stan serwera, zlicza wizyty, czyści niepotrzebne dane i tworzy kopię zapasową bazy danych;
- (s) ex-payout-service - sierwis przetwarza aplikacje, które są oznaczone jako opłacone lub gotowe do wypłaty (jeśli aktywna jest wymiana automatyczna lub półautomatyczna i skonfigurowane są API systemu płatności);
- (s) ex-notification-service -sierwis wysyła powiadomienia do klienta i administratora za pośrednictwem poczty e-mail oraz popularnych komunikatorów ;
- (s) ex-blacklist-bc - sierwis serwis sprawdza i aktualizuje status czarnej listy z serwisu bestchange.org
- (s) ex-migrate - sierwis sprawdza aktualność danych w bazie danych i sprowadza do jednego standardu;
- (s) ex-seed - sierwis wgrywa podstawowe dane do wymiennika;
Payout Module
Struktura pliku:
plugins/payouts/__NAME_PAYOUT
- folder z modulem./icon.png
or./icon.jpg
- ikona modułu 1:1 (zalecane 150px na 150px)./configure.js
- plik reguł konfiguracja modułu również konfiguracja dostępu./index.js
- Klasa modułu (punkt wejścia do modułu)./template/admin.html
- Szablon strony administratora ustawień modułu (szablon vue)./template/admin.js
- Plik eksportu logiki klienta js (vue js)
configure.js
:
Przykładowy plik i jego funkcj
module.exports.type = 'payout'; // typ modułu (payout)
module.exports.title = 'Title of payout'; // tytuł modułu do wyświetlenia w panelu administracyjnym (do 200 znaków)
module.exports.name = 'Name service'; // Nazwa modułu do wyświetlenia w walutach (do 50 znaków)
module.exports.required_npm = []; //tablica wymaganych modułów npm
//tablica xml walut, z którymi współpracuje ten moduł
module.exports.allow_XML = [
"CARDUSD",
"WMZ",
];
// domyślny objekt konfiguracyjny (zostanie ustawiony w config/app_config.json)
module.exports.default_config = {
clientID: '',
clientSecret: '',
clientPassword: '',
};
// typy danych w konfiguracji gdzie 1 klucz publiczny 2 sekretny (nie będą każdorazowo przesyłane do administratora)
module.exports.required_config = {
clientID: 1,
clientSecret: 2, // hide
clientPassword: 2, // hide
};
index.js
:
musi mieć klasę eksportową
Jak pracować z konfiguracją:
const id_key = __dirname.split('/').slice(-1)[0];
const config = require('../main_config')(id_key);
const clientID = await config.get('clientID') //pobierz konfigurację według klucza clientID
Przykład konstruktora
constructor(API) {
this.API = API;
this.allowIPs = [];
this.id_key = id_key;
this.web_domain = config.get('domain');
this.schema = config.get('schema');
}
getFields(lang,xml){}
Function
lang
has
Sting:
Param ru, en, etc...
- Krótki klucz języka
xml
has Sting:
Param Przykład konstruktora
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,
}];
NULL
(when xml is not support)
Should Return transfer(order){}
Function
order
has object:
Param
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 |
//przykład obiektu 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