Від автора: займаючись інфобізнес, так або інакше виникне необхідність у прийомі грошових коштів у себе на сайті. Тому в даному уроці я хотів би показати, як організувати у себе на сайті прийом платежів, використовуючи сервіс Robokassa. Robokassa – це сервіс, який дозволяє продавцям товарів і послуг приймати платежі від клієнтів практично в будь-якій формі.
План уроку
1. Умови роботи з сервісом Robokassa.
2. Початок роботи з сервісом.
3. Автоматична форма ініціалізації платежу.
4. Ручна форма ініціалізації платежу.
5. Сторінка RESULT URL.
6. Сторінка SUCCESS URL.
7. Сторінка FAIL URL.
1. Умови роботи з сервісом Robokassa
Даний сервіс виступає посередником між Вами і Вашим клієнтом, і при виконанні грошових переказів буде стягуватися комісія. Про тарифи даного сервісу можна дізнатися за посиланням: http://www.robokassa.ru/ru/Tariff.aspx.
Працювати з цим сервісом, тобто приймати платежі можуть як фізичні, так і юридичні особи (індивідуальні підприємці). При роботі з юридичними особами сервіс ROBOKASSA приймає від покупців всі електронні валюти, SMS, оплату через термінали і банківські картки, а потім, з певною періодичністю грошові кошти перераховуються на Ваш розрахунковий рахунок.
Для того, щоб почати роботу з сервісом за договором (як юридична особа) й одержувати грошові кошти на свій розрахунковий рахунок, Вам потрібно:
Ознайомитись із Договором-офертою, перейшовши за посиланням http://www.oceanbank.ru/rtf/Dogovor_Robokassa.rtf
Завантажити в Особистому кабінеті і перевірити правильність заповнення вже заповнене «Заява про приєднання до Договору-оферти».
Зробити настройки в Особистому кабінеті і ввести відповідні дані.
Завантажити в Особистому кабінеті і перевірити правильність заповнення, заповнений «Акт про технічну готовність Сторін».
Надіслати на адресу: [email protected], вказавши свій Логін, заповнені документи у форматі MS WORD без підпису, печатки і БЕЗ зазначення дати.
При оформленні документів, для роботи з сервісом ROBOKASSA як юридична особа. Будьте дуже уважні, так як після активації Вашого облікового запису, провести зміни вже буде не можливо.
При роботі з фізичними особами сервіс приймає платежі і переводить електронну валюту. При цьому договір не укладається, а сервіс працює на підставі обміну електронних грошей. Комісія сервісу стягується з Вас у момент платежу. Зарахування електронних грошей на Ваш рахунок проводиться автоматично та миттєво.
Для роботи з сервісом Ваш сайт, або магазин повинен задовольняти наступним вимогам:
сайт повинен бути повністю робочим, з працюючими внутрішніми посиланнями;
сайт повинен бути відкритий для загального відвідування;
товари або послуги, представлені в Вашому магазині, не повинні суперечити чинному законодавству РФ;
сайт магазину не повинен бути розміщений на безкоштовному сервері (narod.ru, by.ru і т. д.) (вимога для юридичних осіб);
на сайті інтернет-магазину повинно бути вказано повне найменування, ІПН, юридична і фактична адреси, телефон та адресу електронної пошти, організації, що здійснює продаж товарів і послуг;
товари або послуги, які Ви продаєте повинні мати повний опис і ціну;
всі сторінки, які пов’язані з продажем товарів або послуг на сайті, повинні перебувати під єдиним доменним ім’ям.
2. Початок роботи з сервісом
Отже, тепер переходимо до роботи з цим сервісом. Насамперед необхідно зареєструватися: http://www.robokassa.ru. Потім переходимо по посиланню Підключитися зараз! (https://www.roboxchange.com/Environment/Partners/Reg/Register.aspx?reg=MerchantBN&culture=ru).
Заповнюємо всі поля, переходимо за посиланням Зареєструватися. Далі заповнюєте дані Вашого магазину, вказуєте пошту адміністратора і вибираєте тип реєстрації, тобто, на яке обличчя буде зареєстрована обліковий запис. Якщо вибираєте юридична особа, то при цьому відкриваються відповідні текстові поля для введення інформації. Якщо обрати фізична особа, досить ввести тільки системи Webmoney гаманець, на який Ви будете отримувати кошти. І в кінці, вказуєте категорію до якої відноситься Ваш інтернет-магазин.
Знову ж заповнюємо всі поля і переходимо за посиланням Реєстрація і потрапляємо в особистий кабінет.
В особистому кабінеті, за необхідності, Ви можете змінити дані введені при реєстрації. На даному етапі Ваш обліковий запис не активований і працює в тестовому режимі. Для активації необхідно відправити листа в службу підтримки даного сервісу, при цьому необхідно вказати свій Логін. Але переходити до активації ще рано, перед цим необхідно на вкладці Адміністрування зробити деякі налаштування.
Тому переходимо за посиланням Адміністрування.
Тут необхідно заповнити ряд дуже Важливих полів:
пароль 1 (sMerchantPass1) — використовується системою для ініціалізації оплати, тобто даний пароль необхідний для початку процесу оплати;
пароль 2 (sMerchantPass2) — використовується системою для оповіщення про платіж, використовуючи цей пароль можна здійснити перевірку правильності платежу;
Result URL — це спеціальна сторінка Вашого магазину, яка використовується системою оповіщення про платіж. Адреса цієї сторінки ніхто не повинен знати, крім Вас і системи ROBOKASSA. Після виконання платежу, на дану сторінку відправляються дані, для виконання перевірок пов’язаних з достовірністю та правильністю платежу.
Метод відсилання даних на сторінку Result URL – на сторінку Result URL система відправляє певні дані про платіж і яким способом надсилати ці дані вибирається в даному меню.
Success URL – сторінка, яка використовується в разі успішного проведення платежу (на дану сторінку потрапляє користувач після виконання платежу);
Метод відсилання даних в Success URL – аналогічно методу відсилання даних на сторінку Result URL;
Fail URL – спеціальна сторінка, яка використовується в разі відмови оплати платежу;
Метод відсилання даних в Fail URL – аналогічно методу відсилання даних на сторінку Result URL;
Після заповнення цих полів натискаємо на кнопку Ок. Тепер всі дані заповнені і можна приступати до роботи з цим сервісом, звичайно наша обліковий запис поки не активована, тому перевірити роботу даного сервісу ми можемо тільки в тестовому режимі.
3. Автоматична форма ініціалізації платежу
Отже, першим ділом давайте навчимося працювати з автоматичною формою ініціалізації платежу. Тобто форму відправлення платежу ми не будемо самі складати, а використовуємо для цього спеціальний код, який призводить сам сервіс ROBOKASSA:
Як Ви бачите, підключається файл за адресою https://auth.robokassa.ru/Merchant/Handler/MrchSumPreview.ashx, в який передаються такі параметри, методом GET:
MrchLogin=demo – логін Вашого облікового запису, для прикладу, я використовую Логін demo, так як наша обліковий запис ще не активна. demo – це логін спеціальної облікового запису, що використовується для тестування;
OutSum – сума платежу;
InvId – ідентифікатор платежу, повинен бути унікальним;
Desc – опис платежу. Якщо в описі використовується пробіл, замість нього потрібно використовувати знак”+”;
Shp_code=Asp&,Shp_demo=0&,Shp_item=& — користувацькі дані, які можна передавати разом з даними платежу. Вони будуть повернуті Вам на сторінках Result URL, Success URL, Fail URL
SignatureValue=a59cc0a610aaf876fe2cdb69d67133d2& — контрольна підпис платежу – використовується для перевірки автентичності платежу і формується шляхом шифрування (односпрямоване шифрування md5) наступного рядка: sMerchantLogin:nOutSum:nInvId:sMerchantPass1[:користувальницькі параметри, у відсортованому алфавітному порядку. Тобто іншими словами формуєте рядок з наступними даними Логін, роздільник, Сума платежу, роздільник, ідентифікатор платежу, роздільник, Перший пароль, роздільник, користувальницькі параметри, відсортовані в алфавітному порядку (формат Shp_code=Asp – ім’я параметра = значення параметра). Як роздільник використовується :. Користувальницькі параметри це будь-які дані, які Ви хочете передати під час виконання платежу. Єдина умова – імена цих параметрів повинні починатися з Shp в будь-якому регістрі;
Culture=uk – мова спілкування з користувачем;
IncCurrLabel – бажана форма оплати, тут передаємо мітку зручної форми оплати. Про всіх можливих мітках валют можна дізнатися перейшовши за посиланням: https://merchant.roboxchange.com/WebService/Service.asmx/GetCurrencies?MerchantLogin=demo&language=ru
Encoding=utf-8 – сторінок оплати.
Тепер давайте перейдемо в браузер і подивимося, що у нас вийшло:
Як Ви бачите, з’явилася форма, яка генерується скриптом системи ROBOKASSA, в якій вже прописана сума оплати і обрана бажана форма оплати. Звичайно, її користувач може змінити, використовуючи розкривний список. Далі натискаємо Оплатити і переходимо на сторінку оплати:
Дана сторінка автоматично генерується під обраний спосіб оплати. Тепер якщо Ви хочете використовувати наведений вище код, Вам необхідно активувати обліковий запис і вписати свій Логін в параметр MrchLogin і відповідно сформувати цифровий підпис платежу.
4. Ручна форма ініціалізації платежу
Тепер давайте розглянемо ручне створення форми ініціалізації платежу, для цього створимо новий файл формату HTML) ось такого змісту:
$mrh_pass1 = "1234567890q";
// номер заказа
$inv_id = 1;
// описание заказа
$inv_desc = "Оплата за тестовый товар";
// сумма заказа
$out_summ = "100";
// артикул товара товара
$shp_art = "05622";
$in_curr = "WMRM";
// язык
$culture = "ru";
// формирование подписи
$crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_Art=$shp_art");
echo "Сумма оплаты - ".$out_summ."
“;
echo “Опис товару – “.$inv_desc.”
“;
// форма оплати товару
///https://auth.robokassa.ru/Merchant/Index.aspx
print “”.
“”.
“”.
“”.
“”.
“”.
“”.
“”.
“”.
“”.
“”.
“”;
?>
Як Ви бачите це звичайна html форма, за допомогою якої необхідно передати певний набір прихованих полів, які є параметрами ініціалізації платежу. В атрибуті action даної форми необхідно передавати адреса скрипта обробника – https://auth.robokassa.ru/Merchant/Index.aspx, але в нашому випадку це http://test.robokassa.ru/Index.aspx, так як обліковий запис ще не активована, так і перед активацією потрібно виконати кілька тестів. Після активації не забудьте змінити значення атрибута action.
Тепер давайте розглянемо значення прихованих полів форми:
MrchLogin – логін Вашого облікового запису в системі ROBOKASSA – значення змінна $mrh_login;
OutSum – сума платежу – значення – змінна $out_summ;
InvId – ідентифікатор платежу, або інше унікальне значення – значення змінна $inv_id;
Desc – опис платежу – значення змінна $inv_desc;
SignatureValue – цифровий підпис платежу – значення змінна $crc. Зверніть увагу, як сформована дана змінна – спочатку формуємо рядок, а потім шифруємо за допомогою шифрування MD5. Важливе зауваження: всі користувальницькі параметри, які Ви хочете передати через форму (у нашому випадку це Shp_Art=$shp_art – артикул товару), необхідно обов’язково включати в дану рядок.
IncCurrLabel – форма оплати – значення змінна $in_curr. У нашому випадку я прийняв за форму оплати гаманець системи Webmoney (рублевий), Ви можете ввести свою форму оплати або запропонувати користувачеві самому. Наприклад, можна створити список, що випадає, використовуючи який користувач зміг би вибрати зручну для нього валюту. Як отримати мітки всіх доступних валют, ми з Вами розглянули Вище;
Culture value – мова спілкування сервісу з покупцем – значення змінна $culture.
Тобто візуально дана форма являє собою просто кнопку Оплатити, тому для наочності, краще вивести користувачеві суму оплати і найменування товару, що купується. Давайте перейдемо в браузер і подивимося, що у нас вийшло:
Створюючи дану сторінку, Ви повинні зберегти, наприклад в базі даних всі дані по поточним замовлення, тобто суму оплати, опис, артикул і т. д Що б після натискання на кнопку оплатити у Вас у базі даних були всі необхідні дані по замовленню. Тепер давайте натиснемо кнопку оплатити і подивимося, що у нас вийшло:
Зверніть увагу, що коли ми працюємо з тестовим сервером, то, натискаючи кнопку оплатити ми не потрапляємо на сторінку оплати, а потрапляємо на сторінку тестування сторінок Result URL, Success URL, Fail URL.
5. Сторінка RESULT URL
Дана сторінка необхідна для автентифікації платежу, тобто, після успішного виконання платежу (після зняття грошей). На дану сторінку, користувач ні коли не потрапить, так як до неї звертається тільки сервер системи ROBOKASSA і надсилає їй спеціальні дані, необхідні для перевірки. Головне завдання цієї сторінки – перевірка достовірності та правильності платежу. Ось приблизний код цієї сторінки:
Звертаючись до даної сторінки, сервер передає їй за допомогою методу POST (той метод, що Ви вказали в налаштуваннях), певний набір параметрів, головним з яких є цифровий підпис платежу. Дану підпис Ви повинні самі сформувати та порівняти з отриманою.
Дані які отримує сторінка RESULT URL методом POST:
$_POST[“OutSum”] – сума платежу повинна повністю збігатися з сумою, яку Ви вказували при ініціалізації платежу;
$_POST[“InvId”] – ідентифікатор платежу – повинен повністю збігатися з вказаним ідентифікатором при ініціалізації платежу;
$_POST[“Shp_Art”] – користувальницькі параметри, в нашому випадку артикул товару. Всі параметри що Ви передавали через форму ініціалізації платежу, повернутися до Вас на дану сторінку;
$_POST[“SignatureValue”] – цифровий підпис платежу. Зверніть увагу, як вона сформована: сума платежу, роздільник, ідентифікатор платежу, роздільник, другий пароль (який Ви вказали в налаштуваннях) , роздільник, користувальницькі параметри, відсортовані в алфавітному порядку, у форматі ипя параметр = значення.
Тобто для отримання і перевірки цифрового підпису використовуємо наступний код:
$my_crc = strtoupper(md5(“$out_summ:$inv_id:$pass:Shp_Art=$shp_art”));
І отриманий цифровий підпис повинна повністю збігатися з тією, що Вам передає сервер системи ROBOKASSA. Ця перевірка необхідна для захисту платежу від підміни даних, так як дивіться більшість даних ми отримуємо через метод POST, за винятком пароля №2, який знаєте тільки Ви і сервіс ROBOKASSA.
Після перевірки цифрового підпису, Ви можете також здійснити низку перевірок, за своїм розсудом, приміром перевірити власні параметри і т. д. Якщо Ви повністю впевнені, що платіж вірний, можете оновити дані за замовленням, бази даних, наприклад встановити стан замовлення – ОПЛОЧЕНО. Так як коли сервер звертається до сторінки Result URL – платіж вже був здійснений успішно. І в кінці необхідно повернути спеціальну рядок – ознака успішно виконаної перевірки:
// ознака успішно проведеної операції
echo “OK$inv_id\n”;
Тобто, як би виводимо на екран рядок OK і ідентифікатор платежу.
Тепер давайте натиснемо на кнопку отримати дані (в блоці сторінки Result URL) і тим самим протестуємо наш скрипт.
6. Сторінка SUCCESS URL
На дану сторінку переадресовується користувач після успішного переведення платежу. І що виконувати і виводити на екран браузера, використовуючи дану сторінку – це вже вирішувати Вам. До прикладу можна знову ж таки виконати перевірку цифрового підпису платежу, так як на цю сторінку, знову ж сервер передає певний набір даних, включаючи Ваші власні параметри, так само можна вивести на екран користувача квитанцію про успішну оплату і т. д. Ось приблизний код цієї сторінки:
Як Ви бачите, дані, що приходять на цю сторінку аналогічні тим, що приходять на сторінку Result URL. Але зверніть увагу, що цифровий підпис тут формується інакше, а саме: сума платежу, роздільник, ідентифікатор платежу, роздільник, пароль №1, роздільник, користувальницькі параметри, відсортовані в алфавітному порядку в форматі ім’я = значення.
Далі якщо в браузері натиснути Перейти в блоці сторінки Success URL, нас переадресують на сторінку успішно проведеного платежу – цю ж сторінку і побачать Ваші покупці при купівлі товару.
7. Сторінка FAIL URL
Дана сторінка необхідна, якщо покупець, з якихось причин відмовиться від платежу. Сервер при цьому передає на неї, тільки ідентифікатор платежу. Ось приблизний код цієї сторінки:
Тепер давайте перейдемо за посиланням, перейти в блоці сторінки FAIL URL і подивимося, що з’явиться на екрані.
Як Ви бачите це дійсно сторінка Fail URL, код якої ми з Вами створили раніше.
На цьому даний урок можна завершувати, ми з Вами розглянули всі основні моменти, що стосуються роботи з сервісом Robokassa. На сайті цього сервісу також можна ознайомитися з офіційною документацією
Ну а тепер давайте прощатися. Всього Вам доброго і вдалого кодування!