Macik |
|
---|---|
К вопросу расширения пользовательской базы и благодарностей разработчикам… (Смотря на популярность «биржи») Подумалось, что достаточно востребованной темой для движка стали бы плагины интеграци систем приема платежей. Потребность у пользователей однозначно есть. Наверняка многие из вас (разработчиков) уже писали какие-то «велосипеды». В общем-то по трудозатратам написание абстрактного платежного плагина скорее всего займет времени меньше среднего, т.к. API платежных систем стандартизирован, и как правило в доступе есть необходимые библиотеки для PHP, и необходимые примеры. Полагаю, что некоторые разработчики не стремятся делиться такими наработками, в силу различных причин. Кто-то, считает, что выкладывать такое в общий доступ «забесплатно» не допустимо, кто-то на этом зарабатывает и считает, что выложив это в доступ потеряет поток клиентов, кто-то не представляет как можно отделить платежи от «торговой плащадки». (Собственно ниже я попытаюсь развеять эти страхи.)
Во-первых, разработчиков можно даже простимулировать (если фонд Котонти это позволяет). Техническая сторона вопроса. Понятно, что многие наработки привязаны к конкретному функционалу (биржа, магазины и т.п.). Но можно создать некий универсальный прототип, который (как пример) позволял бы принимать переводы на свой счет в системе (т.е. у каждого пользователя в системе есть свой накопительный счет, который можно пополнить сделав перевод через одну из систем приема платежей). В таком случае мы:
В идеале (как я это вижу) это, если бы кто-то из гуру Котонти-разработки, сделал бы шаблон-пример, реализовав основные принципы на примере любой из платежных систем. Именно как пример, и важно, что бы это был хороший с точки зрения кода и продуманый с точки зрения функционала и дальнейшего использования модуль (например продумать где и какие хуки понядобятся, и т.п.). А если будет такой шаблон-пример, то реализовать дополнительный платежный механизм «по подобию» сможет уже и «средней руки разработчик».
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Trustmaster |
|
---|---|
Я в платёжных системах не силён, а чтобы универсальный API придумать, надо кое-какой опыт иметь. Поэтому неплохо бы изучить пару таких систем (хотя бы WM и Paypal) и сделать обобщение. У кого какие наработки имеются? May the Source be with you!
|
Macik |
|
---|---|
Наработок в виде кода нет, но есть некоторый опыт изучения внутренней структуры и АПИ, который я попробую обобщить. (Целевой сайт - сайт на котором изначально пользователь намеревается осуществить оплату услуг/товаро/прочего). Глобально, платежные операции (ПО) с помощью сторонних платежных систем (ПС) можно разделить на 2 вида:
Использовать предполагается первый вариант. Далее ПС можно разделить по типам интеграции с целевым сайтом:
Здесь нас будет интересовать второй тип. Далее рассмотрим технические моменты. Все ПС имеют некоторый API, который доступен для зарегистрированного в ПС разработчика. После регистрации в ПС как «магазин» (получатель платежей) мы получаем (как правило) некий идентификационный номер в системе (ID) и кодовую фразу (secret), на основании которых можно будет получить доступ к АПИ. В настройках ПС магазин указывает метод и счет для вывода денег, или периодически выводит их в ручную. Если рассмотривать глобально ПС, то надо отметить следующие нюансы:
Алгоритм реализации у всех ПС примерно одинаковый (там где вариаци дал пояснения):
Сама схема обработки платежей внутри Котонти, для простоты расширения, мне видится 3-уровневой: торговая площадка (ТП) [магазин формирует счет на плату, вызывает функции платежного плагина] → платежный плагин (ПП). [контролирует реестр подключенных ПС, их свойств допустимость использования в зависимости от различных условий] → плагин конкретной ПС (ППС) [содержит настройки интеграции, параметры ПС и т.п.]
Общая схема работы внутри Котонти:
Т.е. надо спроектировать и реализовать связку ПП←→ППС (это может быть единый плагин расширяемый доп.файлами pay.webmoney.php/pay.yandex.php или отдельные плагины для ПС и ППС, тогда каждый ППС это отдельный плаг). Вариант с отдельными плагинами для ПС и плаежным «плагином-агрегатором» мне видится более гибким. К тому же тогда, такие данные как ID, secret, … можно будет вводить через админку в настройке каждого отдельного ППС (иначе прописывать в файл руками, что менее удобно и безопасно). Основные моменты:
ps/ Теперь немного о юридических и прочих аспектах (к реализации расшрения они не имеют абсолютно никакого отношения, но будут полезны тем, кто соберется их исполтьзовать или проводить дальнейшую разработку). Каждая ПС, в которой регистрируется разработчик (магазин), имеет свои правила работы. Иможет требовать:
А также может налагать дополнительные ограничения на вывод средств:
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
Отредактировано: Macik (01.11.2012 13:43, 12 лет назад) |
Yusupov |
|
---|---|
Хотел бы еще упомянуть о таком техническом моменте как колбэк некоторых ПС (в принципе большинство так работают). Это своего рода предварительный запрос со стороны ПС на сайт магазина, который происходит в процессе оплаты. Некоторые ПС, прежде чем произвести оплату (списать деньги со счета покупателя), проверяют доступность магазина и соответствие полученных данных от магазина. Например так работает ПС Webmoney (опишу, не вдаваясь в детали): Прежде чем совершить списание ПС отправляет запрос на специальный адрес магазина (на сайте) и проверяет сумму, номер кошельна получателя и вообще существует ли счет, который пытаются оплатить в магазине. Если данные верны, то для ПС надо вывести пустую страницу с текстом "YES", либо текст с ошибкой. Например: "ERR: Неверная сумма!" или "ERR: Неверный кошелек получателя!" или "ERR: Счет не найден!". Если ПС "видит" текст "YES", то соответственно происходит списание средств с кошелька покупателя и начисление на кошелек получателя. Далее ПС отправляет данные об успешной оплате на специальный адрес магазина (на сайте), где также происходит проверка полученных данных и изменение статуса оплаченного счета на сайте (либо другие действия после успешной оплате). Здесь также выводится ответ для ПС. Если все прошло нормально, то ПС сообщает покупателю об успешной операции оплаты и перенаправляет пользователя на страницу магазина где выводится сообщение уже для покупателя. Здесь также можно осуществить проверку данных полученных от ПС и вывести соответствующее сообщение. Например: "Оплата прошла успешно!", либо "Некорректная подпись" при несоответствии полученных данных от ПС. Для Яндекса успешным ответом является статус веб-страницы.
header ( 'HTTP/1.1 200' ); - все ок, Надеюсь пригодится. Есть некоторые сомнения, что можно сделать какой-то общий шаблон для всех ПС, но стоит попытаться конечно. Может быть имеет смысл сделать своего рода платежный модуль (ПМ) со своим API (модуль Cotonti), в который уже можно будет подключать отдельные ПС в виде отдельных плагинов. ПМ будет осуществлять функцию формирования "счетов" и механизм делегирования процесса оплаты в выбранный ППС. А дальше уже ППС по результатам операции оплаты (взаимодействия с ПС) сообщает ПМ результат операции. ПМ в свою очередь меняет статус счета, совершает определенные действия и т.д. |
Dayver |
|
---|---|
Yusupov, не помню так ли это в вебмани но если вы ничего не путаете то и Робокасса так же действует как и вебмани - делает запрос на спец страницу магазина для проверки даны счета и в зависимости от возвращаемого кода-ответа разрешает или запрещает дальнейшую оплату счета. Macik, имеется опыт разработки как модуля интернет магазина так и его работа с ПС, а так же давно в планах публикация этих наработок в сообществе cotonti, но останавливает все время - то что коды заточены под конкретные проекты + отсутвует план, или если так можно выразиться Т3 на модуль электронной комерции опираясь на который можно было бы превратить все свои наработки к эдиному универсальному решению, а так не зная всех возможных вариантов использования даного функционала публикация станет бесполезными костылями подогнать которые под свой магазин сможет только опытный котовод знающий php. Но ваши обширные посты в данном топике, при условии расширения и продолжения их написания, а так же грамотного обсуждения с другими членами команды для уточнения конечного Т3 выбросит этот пункт из списка стоп-факторов публикации своих кодов + время на работу для общественности появляется редко и порционно, а не так как хотелось бы - пусть даже по немногу но регулярно. Потому ваш труд поддерживаю и постараюсь поучаствовать в решени задач даного сегмента функций для cotonti Pavlo Tkachenko aka Dayver
|
Macik |
|
---|---|
Yusupov спасибо, ценные замечания. Согласен, что взаимодействие с API ПС должен осуществлять ППС. Но все-таки счета как таковые, по моему, должна формировать ТП, а ПП (или платежный модуль) должен служить лишь прослойкой для выбора конкретной ПС. Dayver, Со своей стороны ты можешь тоже помочь с ТЗ, особенно учитавая практический опыт применения. Я попробую за сегодня немного изменить предложенную мной схему, и набросать ее более подробно в виде таблицы или схемы со всеми внутренними взаимодействиями. Т.е. немного скорректировав это будет выглядеть так:
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Yusupov |
|
---|---|
#36056 Dayver: В Робокассе все проще немного. У нее только один запрос происходит уже ПОСЛЕ произведения оплаты, то есть ответ для сайта, чтобы совершить нужные действия на стороне сайта (запрос result в терминологии Робокассы). А дальше перенаправление для покупатеря на страницу магазина с результатом успешной операции (запрос success), либо при неудачной операции (запрос fail). Видимо это связано с тем, что Робокасса как и другие агрегаторы ПС (например Интеркасса) уже в себе содержат все необходимые дополнительные проверки отдельных ПС, чтобы не усложнять их интеграцию с магазинами. Могу поделиться кодами подключения некоторых ПС (QIWI, Webmoney, Robokassa, Interkassa, Yandex). Постараюсь как-нибудь выложить на Github. Гораздо интереснее было бы освоить такие ПС как например PayPal, Assist. |
Macik |
|
---|---|
#36062 Yusupov:Могу поделиться кодами подключения некоторых ПС (QIWI, Webmoney, Robokassa, Interkassa, Yandex). Постараюсь как-нибудь выложить на Github. Гораздо интереснее было бы освоить такие ПС как например PayPal, Assist. Отлично. Примеры пригодятся. По поводу освоить PayPal я думаю не проблема, главное сделать единый механизм, что бы можно было расширять и пользовать. Добавлено 5 дня спустя: Вот обещаная мной схема: GoogleDocs Или в PNG формате: http://static.galaxyhost.org/cotonti/scheme.png https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
|
Отредактировано: Macik (07.11.2012 09:28, 12 лет назад) |
mak44 |
|
---|---|
Както все мудрено. Мой вариант магазина файлов http://93.100.60.208:8980 Пока, счет пополняется за клики. Думаю привязать его к биткойнам https://bitcointalk.org/index.php?topic=199300.msg2539463#msg2539463 Покупка осуществляется по средствой той-же программы fpauk, но через браузер . Пароли понить не надо - записываются в базу данных.
|
Macik |
|
---|---|
#37625 mak44: Что-то у меня «не завелось». А по поводу «мудрено», так это от желания сделать единую систему оплаты, расширяемую модулями. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
mak44 |
|
---|---|
#37665 Macik: Что-то пробовали? Что именно?
По моему, следует реализовать самый примитивный электронный магазин.
|
Yusupov |
|
---|---|
Для тех кто интересуется платежными системами для Cotonti представляю нашу реализацию платежного модуля Payments. Модуль позволяет развернуть на сайте полноценную систему оплаты с внутренними счетами пользователей и системой пополнения счетов через платежные системы. Платежные системы подключаются к модулю через специальные платежные плагины, что позволяет расширять список платежных систем путем установки соответствующих плагинов. На данный момент в составе модуля есть возможность подключить платежные системы Webmoney, Robokass и Interkassa. Модуль предназначен исключительно для разработчиков! Приглашаю разработчиков, которые хотели бы заниматься созданием различных веб-приложений на базе данного решения. На нашем сайте есть специальный каталог приложений для публикации и продажи плагинов, модулей и т.д., имеется база клиентов, которым было бы это интересно. В частности необходимо разрабатывать плагины для подключения востребованных платежных систем, таких как PayPal, LiqPay, и т.д.. Кому интересно пишите на почту support@cmsworks.ru
|