Форумы / National / Russian / Идеи / Платежные системы

Yusupov
#36050 01.11.2012 14:53

Хотел бы еще упомянуть о таком техническом моменте как колбэк некоторых ПС (в принципе большинство так работают). Это своего рода предварительный запрос со стороны ПС на сайт магазина, который происходит в процессе оплаты. Некоторые ПС, прежде чем произвести оплату (списать деньги со счета покупателя), проверяют доступность магазина и соответствие полученных данных от магазина.

Например так работает ПС Webmoney (опишу, не вдаваясь в детали):

Прежде чем совершить списание ПС отправляет запрос на специальный адрес магазина (на сайте) и проверяет сумму, номер кошельна получателя и вообще существует ли счет, который пытаются оплатить в магазине. Если данные верны, то для ПС надо вывести пустую страницу с текстом "YES", либо текст с ошибкой. Например: "ERR: Неверная сумма!" или "ERR: Неверный кошелек получателя!" или "ERR: Счет не найден!".

Если ПС "видит" текст "YES", то соответственно происходит списание средств с кошелька покупателя и начисление на кошелек получателя. Далее ПС отправляет данные об успешной оплате на специальный адрес магазина (на сайте), где также происходит проверка полученных данных и изменение статуса оплаченного счета на сайте (либо другие действия после успешной оплате). Здесь также выводится ответ для ПС. Если все прошло нормально, то ПС сообщает покупателю об успешной операции оплаты и перенаправляет пользователя на страницу магазина где выводится сообщение уже для покупателя. Здесь также можно осуществить проверку данных полученных от ПС и вывести соответствующее сообщение. Например: "Оплата прошла успешно!", либо "Некорректная подпись" при несоответствии полученных данных от ПС.

Для Яндекса успешным ответом является статус веб-страницы. 

header ( 'HTTP/1.1 200' ); - все ок,
header ( 'HTTP/1.1 302' ); - ошибка.

Надеюсь пригодится. 

Есть некоторые сомнения, что можно сделать какой-то общий шаблон для всех ПС, но стоит попытаться конечно.

Может быть имеет смысл сделать своего рода платежный модуль (ПМ) со своим API (модуль Cotonti), в который уже можно будет подключать отдельные ПС в виде отдельных плагинов. ПМ будет осуществлять функцию формирования "счетов" и механизм делегирования процесса оплаты в выбранный ППС. А дальше уже ППС по результатам операции оплаты (взаимодействия с ПС) сообщает ПМ результат операции. ПМ в свою очередь меняет статус счета, совершает определенные действия и т.д.