Возврат взноса
Возврат паевого взноса инициируется заявлением пайщика из интерфейса страницы кошелька нажатием на кнопку "Получить возврат". Для получения возврата, предварительно необходимо добавить реквизиты, на которые будет производится платеж на странице Реквизиты.
После нажатия на кнопку "Получить возврат" появится меню ввода суммы и выбора реквизитов для получения из списка доступных. При создании заявления средства перейдут в статус «заблокировано» на главном кошельке на время обработки кассиром. После оплаты исходящего платежа кассиром, средства будут фактически списаны с кошелька.

Для наблюдения за состоянием обработки возврата паевого взноса см. страницу Платежи. Для просмотра заявления на возврат паевого взноса см. страницу Документы cтола пайщика.
Разработчикам¶
Канонические имена полей и типов — в файле components/controller/schema.gql монорепозитория; интерактивно — в документации GraphQL-API.
Заявление на возврат (генерация документа)¶
🛠️ SDK: Mutations.Wallet.GenerateReturnByMoneyStatementDocument | Mutation.generateReturnByMoneyStatementDocument
Сгенерировать документ заявления на возврат паевого взноса Требуемые роли: chairman, member.
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 | Mutation.generateReturnByMoneyDecisionDocument
Сгенерировать документ решения совета о возврате паевого взноса Требуемые роли: chairman, member.
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"]>;
}
Список платежей¶
🛠️ SDK: Queries.Gateway.GetPayments | Query.getPayments
Получить список платежей с возможностью фильтрации по типу, статусу и направлению. Требуемые роли: chairman, member. Исключение: доступ разрешен, если
data.username
совпадает с
username
текущего пользователя.
import { Queries } from '@coopenomics/sdk';
const variables: Queries.Gateway.GetPayments.IInput = {
data?: {
coopname?: <null | string>; // Название кооператива
direction?: <null | PaymentDirection>; // Направление платежа
hash?: <null | string>; // Хэш платежа
provider?: <null | string>; // Провайдер платежа
status?: <null | PaymentStatus>; // Статус платежа
type?: <null | PaymentType>; // Тип платежа
username?: <null | string>; // Имя пользователя
};
options?: {
limit: <number>; // Количество элементов на странице
page: <number>; // Номер страницы
sortBy?: <null | string>; // Ключ сортировки (например, "name")
sortOrder: <string>; // Направление сортировки ("ASC" или "DESC")
};
};
const { [Queries.Gateway.GetPayments.name]: result } = await client.Query(
Queries.Gateway.GetPayments.query,
{ variables }
);
Результат:
interface IOutput {
getPayments: {
currentPage: <number>; // Текущая страница
items: <{
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?: <unknown>; // Уникальный идентификатор платежа
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; } | { ...; }) & {}>; // Сертификат пользователя, создавшего платеж
}[]>; // Элементы текущей страницы
totalCount: <number>; // Общее количество элементов
totalPages: <number>; // Общее количество страниц
};
}
Изменить статус платежа¶
🛠️ SDK: Mutations.Gateway.SetPaymentStatus | Mutation.setPaymentStatus
Управление статусом платежа осущствляется мутацией setPaymentStatus. При переходе платежа в статус PAID вызывается эффект в блокчейне, который завершает операцию автоматическим переводом платежа в статус COMPLETED. При установке статуса REFUNDED запускается процесс отмены платежа в блокчейне. Остальные статусы не приводят к эффектам в блокчейне. Требуемые роли: chairman, member.
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Gateway.SetPaymentStatus.IInput = {
data: {
id: <string>; // Идентификатор платежа, для которого устанавливается статус
status: <PaymentStatus>; // Новый статус платежа
};
};
const { [Mutations.Gateway.SetPaymentStatus.name]: result } = await client.Mutation(
Mutations.Gateway.SetPaymentStatus.mutation,
{ variables }
);
Результат:
interface IOutput {
setPaymentStatus: <ModelTypes["GatewayPayment"]>;
}
Баланс программного кошелька¶
🛠️ SDK: Queries.Wallet.GetProgramWallet | Query.getProgramWallet
Получить один программный кошелек по фильтру Требуемые роли: chairman, member.
import { Queries } from '@coopenomics/sdk';
const variables: Queries.Wallet.GetProgramWallet.IInput = {
filter: {
coopname?: <null | string>; // Фильтр по имени кооператива
program_id?: <null | string>; // Фильтр по ID программы
program_type?: <null | ProgramType>; // Фильтр по типу программы
username?: <null | string>; // Фильтр по имени пользователя
};
options: {
limit: <number>; // Количество элементов на странице
page: <number>; // Номер страницы
sortBy?: <null | string>; // Ключ сортировки (например, "name")
sortOrder: <string>; // Направление сортировки ("ASC" или "DESC")
};
};
const { [Queries.Wallet.GetProgramWallet.name]: result } = await client.Query(
Queries.Wallet.GetProgramWallet.query,
{ variables }
);
Результат:
interface IOutput {
getProgramWallet?: <undefined | {
agreement_id: <unknown>; // Идентификатор соглашения
available: <string>; // Доступный баланс (формат: "100.0000 RUB")
blockNum?: <null | number>; // Номер блока последнего обновления
blocked: <string>; // Заблокированный баланс (формат: "100.0000 RUB")
coopname: <string>; // Имя кооператива
id: <unknown>; // Уникальный идентификатор кошелька в блокчейне
membership_contribution: <string>; // Паевой взнос (формат: "100.0000 RUB")
program_id: <unknown>; // Идентификатор программы
program_type?: <null | ProgramType>; // Тип программы
username: <string>; // Имя пользователя
}>; // Получить один программный кошелек по фильтру
Требуемые роли: chairman, member.
}