Платежи и взносы
Типы взносов¶
Кошельки управляют учётом взносов пайщиков на их лицевых счетах и фондах кооператива. Когда пайщик совершает взнос - это фиксируются на счетах в кошельке пайщика и фондах кооператива.
Взносы бывают: вступительные
, паевые
, членские
.
Вступительный взнос оплачивается пайщиком однократно при вступлении в кооператив.
Паевые взносы совершают пайщики, чтобы затем получить возврат паевого взноса с выгодой в качестве удовлетворения потребности.
Членские взносы берутся при участии в целевых потребительских программах в фиксированной сумме или как % от суммы паевого взноса, и используются для пополнения невозвратных фондов кооператива. Подробнее о членских взносах смотри разделы Фондов и Программ.
Вступительные
и Паевые
взносы принимаются через совершение Платежа
. Приём паевых взносов не ограничивается только платежами, и может осуществляться любым имуществом, но это выходит за описание данного раздела.
Платежи¶
Платеж
- это информационное сообщение, которое порождается, обрабатывается и преобразуется платежным провайдером и советом во взнос. Платеж создаётся и обрабатывается провайдером платежей на основании поручения пользователя, а взносы принимаются и обрабатываются смарт-контрактами после успешного получения платежа.
flowchart TB
%% Определение платежей
REG_PAYMENT["Регистрационный платеж"]
SHARE_PAYMENT["Паевой платеж"]
REFUND_PAYMENT["Платеж возврата"]
SHARE_REFUND["Возврат паевого взноса"]
%% Взносы
ENTRY_FEE["Вступительный взнос"]
MIN_SHARE["Минимальный паевой взнос"]
SHARE_CONTRIBUTION["Паевой взнос"]
%% Связи
REG_PAYMENT --> ENTRY_FEE
REG_PAYMENT --> MIN_SHARE
SHARE_PAYMENT --> SHARE_CONTRIBUTION
%% Добавленные блоки
SHARE_REFUND --> REFUND_PAYMENT
%% Цветовые стили (платежи выделены красным, шрифт принудительно чёрный)
style REG_PAYMENT stroke:#ff6666,stroke-width:2px
style SHARE_PAYMENT stroke:#ff6666,stroke-width:2px
style REFUND_PAYMENT stroke:#ff6666,stroke-width:2px
Платежи обладают суммой и типом. В системе предусмотрено два типа платежей: регистрационные и паевые. Регистрационные платежи порождают одновременно два типа взносов: вступительный и минимальный паевый взносы, которые требуются совершить при регистрации нового пайщика.
Вступительный взнос направляется в фонд кооператива для дальнейшего списания на расходы и хранится там до принятия советом соответствующего решения на списание. Минимальный паевый взнос помещается в кошелёк пайщика и паевый фонд кооператива. Причина же, почему эти взносы вообще появились - это успешный регистрационный платеж
.
Кроме регистрационного платежа
, который порождает вступительный и минимальные паевые взносы для регистрации пайщика, в системе существуют паевые платежи
, которые после успешной обработки добавляются в кошелёк пайщика и увеличивают паевый фонд кооператива.
Паевые взносы отображаются в Кошельке и могут быть использованы в Целевых Программах для удовлетворения потребностей пайщиков кооператива. При использовании паевых средств в Целевых Программах могут взыматься членские взносы, размер которых определяется условиями программы.
Все паевые взносы безусловно возвратные и должны быть возвращены кооперативом по требованию пайщика в границах баланса его паевого счёта. Минимальный паевый взнос, при этом, возвращается при выходе пайщика из кооператива. Управление возвратами паевых взносов производится смарт-контрактами, на основе которых бэкенд MONO создаёт платежи возврата
, которые обрабатываются администрацией кооператива.
Подробнее о методологии кооперации смотри на сайте платформы "Кооперативная Экономика. Здесь же нам важен принцип - платежи порождают взносы. Платежи обрабатываются платежными провайдерами, а взносы - смарт-контрактами.
Платежные провайдеры¶
Подключение платежных провайдеров производится через установку и конфигурацию расширений. Получить список подключенных провайдеров с их идентификаторами возможно с помощью запроса getPaymentProviders
Каждый провайдер умеет по-своему создавать платежи и обрабатывать платежи. Количество платежных провайдеров в системе не ограничено. Какие конкретно провайдеры подключены в конкретном кооперативе - определяет сам кооператив с помощью установки расширений.
Например, провайдер qrpay
возвращает в result.data
строку с реквизитами в формате, который при пребразовании в QR-код и его сканировании банковским приложением, распознаётся им и приводит к автоматическому заполнению полей реквизитов и суммы для оплаты. Обработка платежа производится "вручную" через изменение администратором статуса платежа.
Провайдер yookassa
(если подключен и настроен) возвращает токен платежа confirmation_token
в result.data
, который может быть пребразован в платежный виджет и встроен в сайт для приёма платежей. Обработка происходит автоматически при поступлении оповещения от Yookassa на бэкенд MONO.
Список активных провайдеров¶
⚠️ 🛠️ SDK: Queries.Payments.GetPaymentProviders не найден | 🔗 GraphQL API: Query.getPaymentProviders
Запрос по извлечению списка провайдеров возвращает идентификаторы провайдеров и схемы их данных.
Вступительный и минимальный паевой взносы¶
🛠️ SDK: Mutations.Payments.CreateInitialPayment | 🔗 GraphQL API: Mutation.createInitialPayment
В процессе регистрации пайщика необходимо совершить вступительный и минимальный паевый взносы, выполнив регистрационный платеж. Для создания регистрационного платежа необходимо вызвать мутацию CreateInitialPayment.
Создание объекта регистрационного платежа производится мутацией CreateInitial. Выполнение мутации возвращает идентификатор платежа и данные для его совершения в зависимости от выбранного платежного провайдера.
import { Mutations } from '@coopenomics/sdk';
const variables = {
data: {
username: <string>; // Имя аккаунта пользователя
};
};
const { [Mutations.Payments.CreateInitialPayment.name]: result } = await client.Mutation(
Mutations.Payments.CreateInitialPayment.mutation,
{ variables }
);
Паевый взнос¶
🛠️ SDK: Mutations.Payments.CreateDepositPayment | 🔗 GraphQL API: Mutation.createDepositPayment
Создание объекта паевого платежа производится мутацией CreateDeposit. Выполнение мутации возвращает идентификатор платежа и данные для его совершения в зависимости от выбранного платежного провайдера.
import { Mutations } from '@coopenomics/sdk';
const variables = {
data: {
quantity: <string>; // Сумма взноса
username: <string>; // Имя аккаунта пользователя
};
};
const { [Mutations.Payments.CreateDepositPayment.name]: result } = await client.Mutation(
Mutations.Payments.CreateDepositPayment.mutation,
{ variables }
);
Список платежей¶
🛠️ SDK: Queries.Payments.GetPayments | 🔗 GraphQL API: Query.getPayments
Получить список платежей
import { Queries } from '@coopenomics/sdk';
const variables = {
data: {
blockchain_id?: <null | string>; // Идентификатор платежа в блокчейне
id?: <null | string>; // Идентификатор платежа во внутренней системе
status?: <null | PaymentStatus>; // Статус платежа
username?: <null | string>; // Имя пользователя для фильтрации платежей
};
};
const { [Queries.Payments.GetPayments.name]: result } = await client.Query(
Queries.Payments.GetPayments.query,
{ variables }
);
Платеж возврата¶
⚠️ 🛠️ SDK: Mutations.Payments.CreateWithdraw не найден | 🔗 GraphQL API: Mutation.createWithdraw
⚠️ Описание для Mutations.Payments.CreateWithdraw
не найдено
⚠️ Mutations.Payments.CreateWithdraw
не найден
Управление платежами¶
🛠️ SDK: Mutations.Payments.SetPaymentStatus | 🔗 GraphQL API: Mutation.setPaymentStatus
Управление статусом платежа осущствляется мутацией setPaymentStatus. При переходе платежа в статус PAID вызывается эффект в блокчейне, который завершает операцию автоматическим переводом платежа в статус COMPLETED. При установке статуса REFUNDED запускается процесс отмены платежа в блокчейне. Остальные статусы не приводят к эффектам в блокчейне.
import { Mutations } from '@coopenomics/sdk';
const variables = {
data: {
id: <string>; // Идентификатор платежа, для которого устанавливается статус
status: <PaymentStatus>; // Новый статус платежа
};
};
const { [Mutations.Payments.SetPaymentStatus.name]: result } = await client.Mutation(
Mutations.Payments.SetPaymentStatus.mutation,
{ variables }
);