Вчера вечером добавил интерфейс взаимодействия с Робокассой в свою CMS.
Робокасса — интегратор платежных систем. Она позволяет организовать прием платежей в пользу магазина через множество известных электронных валют (Webmoney, ВКонтакте, ЯндексДеньги, Деньги@Mail.Ru, RBK Money и другие), через терминалы оплаты ЭлексНет, и, самое главное — через SMS.
Доступно два варианта подключения — для юридических лиц и ИП, с выводом денег из системы на расчетный счет и для физических лиц с возможностью вывода в электронные валюты.
Регистрация достаточно проста. Идете на https://www.roboxchange.com/Environment/Partners/Login/Login.aspx?reg=Merchant и аккуратно заполняете все необходимые поля. После завершения регистрации подождите некоторое время (около 5 минут) и входите в систему.
Изначально Ваш аккаунт будет иметь статус «Не активен», это позволяет настроить и протестировать магазин перед включением в реальный режим.
Робокасса принимает от магазина параметры через GET или POST запрос. Вам понадобится на странице оплаты создать примерно такую форму (это минимальный вариант):
В форме есть поле, которое я обозначил {SIGNATURE}. Это специальным образом сформированная подпись Вашего магазина, вернемся к ней позже.
Для того, чтобы обработать ответ Робокассы на попытку платежа, необходимо в личном кабинете системы по адресу https://www.roboxchange.com/Environment/Partners/Login/Merchant/Administration.aspx внести данные о трех страницах, которые будут обрабатывать этот ответ.
и выбрать для каждого адреса метод передачи параметров — GET или POST. Я лично выбрал POST.
Кроме этого необходимо заполнить два пароля, #1 и #2. Они будут нужны нам для формирования подписей. Первый — для отправки данных Робокассе, второй — для проверки данных, приходящих от нее.
Теперь вернемся к полю {SIGNATURE} в нашей форме. Оно вычисляется следующим образом:
Каждый раз при составлении формы запроса платежа необходимо вычислять эту подпись и передавать ее в форме.
По адресу Result URL Вам необходимо разместить обработчик ответа Робокассы.
Приведу сразу код:
Протестируйте Ваш магазин. Попробуйте сделать тестовый платеж и Вы попадате на специальную форму проверки интерфейса. Там Вы сможете проверить отклик Вашего Result URL, увидеть то, что передается от Вас к Робокассе, проверить функционирование Success URL и Fail URL.
Когда успешно закончите тестирование — подавайте заявку на активацию аккаунта. После положительного ответа не забудьте сменить action в форме платежа.
Удачи!
P.S. Подробное описание интерфейса Робокассы можно изучить здесь: http://www.robokassa.ru/Doc/Ru/Interface.aspx
Кратко о платежной системе
Робокасса — интегратор платежных систем. Она позволяет организовать прием платежей в пользу магазина через множество известных электронных валют (Webmoney, ВКонтакте, ЯндексДеньги, Деньги@Mail.Ru, RBK Money и другие), через терминалы оплаты ЭлексНет, и, самое главное — через SMS.
Доступно два варианта подключения — для юридических лиц и ИП, с выводом денег из системы на расчетный счет и для физических лиц с возможностью вывода в электронные валюты.
Регистрация
Регистрация достаточно проста. Идете на https://www.roboxchange.com/Environment/Partners/Login/Login.aspx?reg=Merchant и аккуратно заполняете все необходимые поля. После завершения регистрации подождите некоторое время (около 5 минут) и входите в систему.
Изначально Ваш аккаунт будет иметь статус «Не активен», это позволяет настроить и протестировать магазин перед включением в реальный режим.
Собственно код — отправка платежа
Робокасса принимает от магазина параметры через GET или POST запрос. Вам понадобится на странице оплаты создать примерно такую форму (это минимальный вариант):
- <form method="post" action="http://test.robokassa.ru/Index.aspx">
- <!-- для реального режима измените action формы на "https://merchant.roboxchange.com/Index.aspx" -->
-
- <input type="hidden" name="MrchLogin" value="-- Ваш логин в системе --" />
- <input type="hidden" name="OutSum" value="-- Сумма платежа, разделитель дробной части - точка --" />
- <input type="hidden" name="InvId" value="-- Уникальный номер транзакции в Вашем магазине -- " />
- <input type="hidden" name="Desc" value="-- Описание, например: покупка коньков -- " />
- <input type="hidden" name="SignatureValue" value="{SIGNATURE}" />
-
- <input type="submit" value="Оплатить" />
-
- </form>
* This source code was highlighted with Source Code Highlighter.
В форме есть поле, которое я обозначил {SIGNATURE}. Это специальным образом сформированная подпись Вашего магазина, вернемся к ней позже.
Для того, чтобы обработать ответ Робокассы на попытку платежа, необходимо в личном кабинете системы по адресу https://www.roboxchange.com/Environment/Partners/Login/Merchant/Administration.aspx внести данные о трех страницах, которые будут обрабатывать этот ответ.
- Result URL — адрес скрипта, который примет от Робокассы уведомление о платеже
- Success URL — сюда будет перенаправлен пользователь, если платеж пройдет успешно
- Fail URL — сюда будет перенаправлен пользователь, если платеж окончится неудачно
и выбрать для каждого адреса метод передачи параметров — GET или POST. Я лично выбрал POST.
Кроме этого необходимо заполнить два пароля, #1 и #2. Они будут нужны нам для формирования подписей. Первый — для отправки данных Робокассе, второй — для проверки данных, приходящих от нее.
Теперь вернемся к полю {SIGNATURE} в нашей форме. Оно вычисляется следующим образом:
$login = "Ваш логин в Робокассе";
$amount = floatval(сумма_к_оплате); // floatval нужен, чтобы привести значения типа "99.00" к "99"
$id = уникальный_номер_транзакции_в_магазине;
$pwd1 = "Ваш_пароль_#1";
$signature = md5($login . ":" . $amount . ":" . $id . ":" . $pwd1);
* This source code was highlighted with Source Code Highlighter.
Каждый раз при составлении формы запроса платежа необходимо вычислять эту подпись и передавать ее в форме.
Собственно код — обработка платежа
По адресу Result URL Вам необходимо разместить обработчик ответа Робокассы.
Приведу сразу код:
$id = intval($_POST['InvId']); // получаем номер транзакции
$pwd2 = "Ваш_пароль_#2";
$sum = здесь_код_который_по_номеру_транзакции_получит_ее_сумму;
/*
Не забудьте сначала вставить проверку на существование такого номера транзакции вообще.
Если его нет в базе - выведите "ERR"
*/
if ( $sum != floatval($_POST['OutSum']) ) {
// Не совпала сумма
echo "ERR: invalid amount";
exit();
}
if ( strtolower($_POST['SignatureValue']) != strtolower(md5($_POST['OutSum'] . ":" . $id . ":" . $pwd2)) ) {
// не совпадает подпись
echo "ERR: invalid signature";
exit();
}
// и если все нормально:
// принимаем платеж, помечаем у себя в базе его, как выполненный
// и выводим положительный ответ Робокассе
echo "OK" . $id;
exit();
* This source code was highlighted with Source Code Highlighter.
Активация
Протестируйте Ваш магазин. Попробуйте сделать тестовый платеж и Вы попадате на специальную форму проверки интерфейса. Там Вы сможете проверить отклик Вашего Result URL, увидеть то, что передается от Вас к Робокассе, проверить функционирование Success URL и Fail URL.
Когда успешно закончите тестирование — подавайте заявку на активацию аккаунта. После положительного ответа не забудьте сменить action в форме платежа.
Удачи!
P.S. Подробное описание интерфейса Робокассы можно изучить здесь: http://www.robokassa.ru/Doc/Ru/Interface.aspx