Платежи
На странице платежей пайщика отображаются все входящие и исходящие платежи по главному кошельку. Вступительный и минимальный паевой взносы, оплачиваеивые при регистрации пайщика, объединены в один тип платежа для внутреннего учета - регистрационный взнос.

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

Разработчикам¶
Канонические имена полей и типов — в файле components/controller/schema.gql монорепозитория; интерактивно — в документации GraphQL-API.
Список платежей¶
🛠️ 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: Mutations.Gateway.CreateDepositPayment | Mutation.createDepositPayment
Создание объекта паевого платежа производится мутацией createDepositPayment. Выполнение мутации возвращает идентификатор платежа и данные для его совершения в зависимости от выбранного платежного провайдера. Требуемые роли: chairman, member.
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Gateway.CreateDepositPayment.IInput = {
data: {
quantity: <number>; // Сумма взноса
symbol: <string>; // Символ валюты
username: <string>; // Имя аккаунта пользователя
};
};
const { [Mutations.Gateway.CreateDepositPayment.name]: result } = await client.Mutation(
Mutations.Gateway.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?: <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; } | { ...; }) & {}>; // Сертификат пользователя, создавшего платеж
};
}
Создать начальный платёж¶
🛠️ SDK: Mutations.Gateway.CreateInitialPayment | Mutation.createInitialPayment
Создание объекта регистрационного платежа производится мутацией createInitialPayment. Выполнение мутации возвращает идентификатор платежа и данные для его совершения в зависимости от выбранного платежного провайдера. Требуемые роли: chairman, member.
import { Mutations } from '@coopenomics/sdk';
const variables: Mutations.Gateway.CreateInitialPayment.IInput = {
data: {
username: <string>; // Имя аккаунта пользователя
};
};
const { [Mutations.Gateway.CreateInitialPayment.name]: result } = await client.Mutation(
Mutations.Gateway.CreateInitialPayment.mutation,
{ variables }
);
Результат:
interface IOutput {
createInitialPayment: {
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; } | { ...; }) & {}>; // Сертификат пользователя, создавшего платеж
};
}