Каким способом реализовать баланс пользователя в моём web-приложении?
В процессе разработки приложения возникла тривиальная задача - реализовать баланс пользователя. Что бы он мог пополнять баланс и тратить на услуги сервиса. Приложение самописное, на NodeJS. Но разрабатывать такую систему прямо с нуля очень не хочу. Есть ли какие-нибудь облачные сервисы, предоставляющие Accounting As A Service?
Я нашёл только один, но его, судя по всему, забросили уже как 3 года - subledger.com .
Не поверю, что абсолютно каждая компания разрабатывает подобные решения с нуля.
Как реализовать это с наименьшими затратами человеко-часов?
Непонятно что в этом сложного. Да и баланс это сердце системы, отдавать её на сторону неразумно. Вы будете каждый раз спрашивать её сколько денег у вашего пользователя? А если она упадёт то ваш сервис не сможет работать
Это на первый взгляд непонятно, что сложного. На деле я уже написал две версии платёжек. И ни одна из них в итоге меня не устраивает, потому что кривая. Сначала ты просто делаешь всё одним полем balance в БД, и просто меняешь его. Потом ты осознаёшь, что нужны транзацкции, и делаешь их, и каждый раз пересчитываешь баланс на их основе. Потом ты понимаешь, что поля amount в транзакции недостаточно, нужен debit и credit.
Мне хватило, в общем) Хочу готовое решение.
Да и с доступностью в наше время проблем уже нет. Всякие AWS с 99.99% uptime позволяют сделать это.
Дмитрий: ну в общем то вы уже дошли до финала лекции бухгалтерского учета, финансовая операция это движение денег со счета на счет, вам осталось почитать про сущность двойной записи и вы сможете уже написать правильный алгоритм движения денег по счетам - план счетов для каждой вашей бизнес операции, которая может отражаться в бухгалтерии несколькими финансовыми операциями. Системы учета денежных средств не дешевые и не универсальные, есть типовые решения привязанные к стандартам законам некой страны и чаще всего в системах это реализовывается. скажем Акт купли продажи, это стандартная операция, под которое можно подготовить типовое решение в рамках страны.
Равшан Абдулаев: да, я это понимаю, там ещё и проводки, и платёжные агенты, именно поэтому у меня и отпало всё желание реализовывать это вручную!
Может вы подскажете какое-нибудь типовое решение, лучше несколько? Я просто безуспешно копаю гугл, никак не могу подходящий вариант найти.
Neoline: про аггрегаторы я знаю. Меня они не интересуют в данном случае, меня интересует следующая ступень после них. После того, как платёж проведён, это надо зафиксировать в приложении у себя.
Дмитрий: смотря что вам нужно, если вы для себя решили что то делать, тогда открывайте учебники по бух учету, если для организации, то смотрите какое из решений 1с закроет работу системы, есть еще SAP, AXAPTA, бог его знает что вам нужно автоматизировать, мыслите шире. начинать нужно с отрасли с определения бизнес деятельности, определения что у вас товар-склад, услуги что у вас? что продаете, что покупаете? какие типы бизнес-операций...
Дмитрий: Ну если у вас "Услуги" возьмите за пример "услуги оператора сотовой связи", Мегафон, билайн, работают по этой же схеме? и не бывает просто. услуги предоставляются разово или периодически. оплата будет списываться разово или переодически. Баланс автопополнение, доверительный платеж, привязка банковской карты. получение списка операций пополнения и расходов за период. это только CRM, еще есть наверное и операции внутри организации обеспечивающей предоставление услуг. вы все еще мыслите слишком узко для поиска решения.
Равшан Абдулаев: То, что вы описали, это уже задача самого приложения, а не платёжной системы. Мне от решения нужен только баланс пользователя и возможность проводить транзакции.
Дмитрий: или у вас странное представление о платежных системах. вот обзор платежных систем megagroup.ru/payments, при помощи этих систем можно получить платеж от клиента, но ни одна из них не будет хранить деньги у себя и предоставлять информацию о балансе... причем если вы говорите о балансе то это подразумевает и отчет приходов и расходов в том числе. нельзя говорить текущем остатке на счете не получив отчет приходов и расходов за любой период времени... возможно я плохо изучил вопрос, но мне сомнительно что хоть одна платежная система из перечисленных будет заниматься ведением индивидуальных счетов ваших клиентов... учитывая что это ваши клиенты, то конфиденциальность информации о балансе и операциях клиентов должны обеспечивать вы со своей стороны иначе зачем вы нужны, вас просто исключат из участия и ваш бизнес будут вести другие люди.
Вы можете вместо внутреннего баланса - реализовать оплату услуг с использованием каких либо платежных агрегатов, та же Я.Касса, UnitPay и другие. Тем самым вас не придется принимать и хранить средства других пользователей, а пользователям это плюс тем, что они напрямую смогут оплатить услуги любым доступным для них способом.