Всем привет. Хочу поделиться опытом подключения к сбербанку онлайн. У них масса документации и возможно кому то будет сложно в ней разбираться. А кому то нет). Поэтому возможно данный пост облегчит задачу. Итак, после улаживания формальностей регистрации вам пришлют два логина и два пароля. Для доступа к личному кабинету и подключению к API. Для начала тестовые. Имеет смысл создать в админке вашего компонента поля для тестовых и рабочих(в сбере они зовутся боевыми ) пар. А так же вам понадобятся ссылки на страницы, куда вы будите перенаправлять в случае успеха или ошибки. Это ещё два поля. Я отделил тестовые поля от боевых и спрятал одну пару, что бы не путаться. И привинтил чекбокс для смены пар полей. Для тех кто ещё не знает как это сделать, пишу пример, для одного поля и чекбокса. Этот код я поместил в файл .../backend/forms/form_options.php
Далее создаём два экшена в паке вашего компонента. Названия пишу свои. sb_auth.php и sb_pays.php. Ваша ссылка, или кнопка "Оплатить", должна вести к первому экшену. И в ней вы должны передать параметрами стоимость товара, его id и id пользователя. Примерно так.
В файле мы получаем эти данные
Затем следует рубли перевести в копейки. Такие требования. А так же api не работает с кросс запросами(это типа аякс и тп.). А так же добавить функцию для генерации уникального id заказа. В исходниках у меня она есть, но можете и свою найти или написать.
Далее нужно составить гет параметры уже для ссылки сберу. В неё войдут
Ответ сбер отдаёт прямо в браузер, в формате json. Кто как его будет доставать дело личное). Я сделал так
Далее запоминаем $array в сессию(там два значения вроде.Код ошибки и OrderId), проверки и перенаправление на страницу второго зкшена с гет параметром OrderId sb_pays.php Во втором экшене сравниваем этот гет параметр и этот же параметр в массиве $array. И снова отправляем ссылку, уже другую, сберу.Указав в качестве параметров логин, пароль и OrederId. Ответ получаем так же в браузере. Обрабатываем и в случае отсутствия ошибок меняем статус заказа на сайте. Если всё сделано правильно, то нажав ссылку "Оплатить" на сайте вы попадаете на страницу сбера, где нужно ввести номер вашей карты. У них есть тестовые карты для этого.Вбиваете данные и жмёте Оплатить. Вот и всё). Выкладываю файлы, для ознакомления с кодом, кому интересно)
yadi.sk/d/vgFFK0ar0xur3w
public function init () { 'type' => 'fieldset', 'title' => LANG_SB_DO_POWER, 'default' => 0 )), new fieldString( 'sb_test_login', 'title' => LANG_SB_TEST_LOGIN, )) ... )); }
http://test.ru/'название компонента'/sb_auth?price=2500.00&user_id=1&id=47
$price = $_GET['price']; $user_id = $_GET['user_id']; $id = $_GET['id'];
Далее нужно составить гет параметры уже для ссылки сберу. В неё войдут
"userName" // Логин для API "password" // Пароль... "orderNumber" // Сгенерированный id "amount" // Цена, в копейках "returnUrl" // Ссылки перенапрвления "failUrl"
'https://3dsec.sberbank.ru/payment/rest/register.do?' . $data); // Где $data, гет параметры
yadi.sk/d/vgFFK0ar0xur3w
Реклама #
alexandr22 4 года назад #
Подключали к биллингу или интернет магазину ?