Кошелёк¶
Кошелёк в системе MONO представляет собой модуль для управления паевыми взносами и финансовыми операциями пайщиков кооператива. Все операции проходят через платёжный шлюз и отражаются в блокчейне для обеспечения прозрачности и неизменности записей.
Паевые взносы¶
Паевые взносы являются основой членства в кооперативе. Система поддерживает различные типы взносов и операций с ними.
Создать депозитный платеж¶
🛠️ SDK: Mutations.Wallet.CreateDepositPayment | 🔗 GraphQL API: Mutation.createDepositPayment
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Wallet.CreateDepositPayment.IInput = {
data: {
quantity: <number>; // Сумма взноса
symbol: <string>; // Символ валюты
username: <string>; // Имя аккаунта пользователя
};
};
const { [Mutations.Wallet.CreateDepositPayment.name]: result } = await client.Mutation(
Mutations.Wallet.CreateDepositPayment.mutation,
{ variables }
);
Результат:
interface IOutput {
createDepositPayment: {
blockchain_data?: <unknown>; // Данные из блокчейна
can_change_status: <boolean>; // Можно ли изменить статус
coopname: <string>; // Название кооператива
created_at: <unknown>; // Дата создания
direction: <PaymentDirection>; // Направление платежа
direction_label: <string>; // Человекочитаемое направление платежа
expired_at?: <unknown>; // Дата истечения
formatted_amount: <string>; // Форматированная сумма
hash?: <null | string>; // Хеш платежа
id?: <null | string>; // Уникальный идентификатор платежа
income_hash?: <null | string>; // Хеш входящего платежа (устарело)
is_final: <boolean>; // Завершен ли платеж окончательно
memo?: <null | string>; // Дополнительная информация
message?: <null | string>; // Сообщение
outcome_hash?: <null | string>; // Хеш исходящего платежа (устарело)
payment_details?: {
amount_plus_fee: <string>; // Сумма платежа с учетом комиссии
amount_without_fee: <string>; // Сумма платежа без учета комиссии
data: <unknown>; // Данные платежа (QR-код, токен, реквизиты и т.д.)
fact_fee_percent: <number>; // Фактический процент комиссии
fee_amount: <string>; // Размер комиссии в абсолютных значениях
fee_percent: <number>; // Процент комиссии
tolerance_percent: <number>; // Допустимый процент отклонения
};
payment_method_id?: <null | string>; // ID платежного метода
provider?: <null | string>; // Провайдер платежа
quantity: <number>; // Количество/сумма
statement?: <unknown>; // Подписанный документ заявления
status: <PaymentStatus>; // Статус платежа
status_label: <string>; // Человекочитаемый статус
symbol: <string>; // Символ валюты
type: <PaymentType>; // Тип платежа
type_label: <string>; // Человекочитаемый тип платежа
updated_at?: <unknown>; // Дата обновления
username: <string>; // Имя пользователя
username_certificate?: <({ username: string; type: AccountType; first_name: string; last_name: string; middle_name?: string | null | undefined; inn: string; } | { username: string; type: AccountType; first_name: string; last_name: string; middle_name?: string | ... 1 more ... | undefined; } | { ...; }) & {}>; // Сертификат пользователя, создавшего платеж
};
}
Создание объекта паевого платежа производится мутацией createDepositPayment. Выполнение мутации возвращает идентификатор платежа и данные для его совершения в зависимости от выбранного платежного провайдера.
Создать заявку на вывод средств¶
🛠️ SDK: Mutations.Wallet.CreateWithdraw | 🔗 GraphQL API: Mutation.createWithdraw
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Wallet.CreateWithdraw.IInput = {
input: {
coopname: <string>; // Имя аккаунта кооператива
method_id: <string>; // ID метода платежа
payment_hash: <string>; // Хеш платежа для связи с withdraw
quantity: <number>; // Количество средств
statement: {
doc_hash: <string>; // Хэш содержимого документа
hash: <string>; // Общий хэш (doc_hash + meta_hash)
meta: {
block_num: <number>; // Номер блока, на котором был создан документ
coopname: <string>; // Название кооператива, связанное с документом
created_at: <string>; // Дата и время создания документа
currency: <string>; // Валюта
generator: <string>; // Имя генератора, использованного для создания документа
lang: <string>; // Язык документа
links: <string[]>; // Ссылки, связанные с документом
method_id: <string>; // ID платежного метода
payment_hash: <string>; // Хеш платежа для связи с withdraw
quantity: <string>; // Количество средств к возврату
registry_id: <number>; // ID документа в реестре
timezone: <string>; // Часовой пояс, в котором был создан документ
title: <string>; // Название документа
username: <string>; // Имя пользователя, создавшего документ
version: <string>; // Версия генератора, использованного для создания документа
};
meta_hash: <string>; // Хэш мета-данных
signatures: <{
id: <number>; // Идентификатор номера подписи
meta: <string>; // Мета-данные подписи
public_key: <string>; // Публичный ключ
signature: <string>; // Подпись хэша
signed_at: <string>; // Время подписания
signed_hash: <string>; // Подписанный хэш
signer: <string>; // Аккаунт подписавшего
}[]>; // Вектор подписей
version: <string>; // Версия стандарта документа
};
symbol: <string>; // Символ валюты
username: <string>; // Имя пользователя
};
};
const { [Mutations.Wallet.CreateWithdraw.name]: result } = await client.Mutation(
Mutations.Wallet.CreateWithdraw.mutation,
{ variables }
);
Результат:
interface IOutput {
createWithdraw: <ModelTypes["CreateWithdrawResponse"]>;
}
Создание заявки на вывод паевых средств из кооператива. Заявка проходит процедуру рассмотрения советом.
Возврат паевых взносов¶
Система предоставляет полный документооборот для возврата паевых взносов при выходе из кооператива.
Заявление на возврат¶
🛠️ SDK: Mutations.Wallet.GenerateReturnByMoneyStatementDocument | 🔗 GraphQL API: Mutation.generateReturnByMoneyStatementDocument
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Wallet.GenerateReturnByMoneyStatementDocument.IInput = {
data: {
block_num?: <null | number>; // Номер блока, на котором был создан документ
coopname: <string>; // Название кооператива, связанное с документом
created_at?: <null | string>; // Дата и время создания документа
currency: <string>; // Валюта
generator?: <null | string>; // Имя генератора, использованного для создания документа
lang?: <null | string>; // Язык документа
links?: <null | string[]>; // Ссылки, связанные с документом
method_id: <string>; // ID платежного метода
payment_hash: <string>; // Хеш платежа для связи с withdraw
quantity: <string>; // Количество средств к возврату
timezone?: <null | string>; // Часовой пояс, в котором был создан документ
title?: <null | string>; // Название документа
username: <string>; // Имя пользователя, создавшего документ
version?: <null | string>; // Версия генератора, использованного для создания документа
};
options?: {
lang?: <null | string>; // Язык документа
skip_save?: <null | boolean>; // Пропустить сохранение
};
};
const { [Mutations.Wallet.GenerateReturnByMoneyStatementDocument.name]: result } = await client.Mutation(
Mutations.Wallet.GenerateReturnByMoneyStatementDocument.mutation,
{ variables }
);
Результат:
interface IOutput {
generateReturnByMoneyStatementDocument: <ModelTypes["GeneratedDocument"]>;
}
Генерация документа заявления на возврат паевого взноса. Документ подписывается пайщиком и подается в совет для рассмотрения.
Решение о возврате¶
🛠️ SDK: Mutations.Wallet.GenerateReturnByMoneyDecisionDocument | 🔗 GraphQL API: Mutation.generateReturnByMoneyDecisionDocument
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Wallet.GenerateReturnByMoneyDecisionDocument.IInput = {
data: {
block_num?: <null | number>; // Номер блока, на котором был создан документ
coopname: <string>; // Название кооператива, связанное с документом
created_at?: <null | string>; // Дата и время создания документа
currency: <string>; // Валюта
decision_id: <number>; // ID решения совета
generator?: <null | string>; // Имя генератора, использованного для создания документа
lang?: <null | string>; // Язык документа
links?: <null | string[]>; // Ссылки, связанные с документом
payment_hash: <string>; // Хэш платежа
quantity: <string>; // Количество средств к возврату
timezone?: <null | string>; // Часовой пояс, в котором был создан документ
title?: <null | string>; // Название документа
username: <string>; // Имя пользователя, создавшего документ
version?: <null | string>; // Версия генератора, использованного для создания документа
};
options?: {
lang?: <null | string>; // Язык документа
skip_save?: <null | boolean>; // Пропустить сохранение
};
};
const { [Mutations.Wallet.GenerateReturnByMoneyDecisionDocument.name]: result } = await client.Mutation(
Mutations.Wallet.GenerateReturnByMoneyDecisionDocument.mutation,
{ variables }
);
Результат:
interface IOutput {
generateReturnByMoneyDecisionDocument: <ModelTypes["GeneratedDocument"]>;
}
Генерация документа решения совета о возврате паевого взноса. Документ оформляется после рассмотрения заявления и принятия положительного решения.
Процедура возврата паевых взносов¶
- Подача заявления - пайщик генерирует и подписывает заявление на возврат
- Рассмотрение советом - совет рассматривает заявление на собрании
- Принятие решения - совет генерирует решение о возврате
- Выполнение возврата - технический возврат средств через платёжную систему
Безопасность операций¶
- Все финансовые операции требуют цифровой подписи
- Операции отражаются в неизменяемом блокчейне
- Многоступенчатая система подтверждений
- Аудит всех движений средств
Интеграция с платёжными системами¶
Кошелёк интегрирован с различными платёжными провайдерами для удобства пайщиков:
- Банковские карты
- Банковские переводы
- Электронные кошельки
- Криптовалютные платежи (в планах)