Подключение к Сбербанку.

+10
1.38K
Всем привет. Хочу поделиться опытом подключения к сбербанку онлайн. У них масса документации и возможно кому то будет сложно в ней разбираться. А кому то нет). Поэтому возможно данный пост облегчит задачу. Итак, после улаживания формальностей регистрации вам пришлют два логина и два пароля. Для доступа к личному кабинету и подключению к API. Для начала тестовые. Имеет смысл создать в админке вашего компонента поля для тестовых и рабочих(в сбере они зовутся боевыми smile) пар. А так же вам понадобятся ссылки на страницы, куда вы будите перенаправлять в случае успеха или ошибки. Это ещё два поля. Я отделил тестовые поля от боевых и спрятал одну пару, что бы не путаться. И привинтил чекбокс для смены пар полей. Для тех кто ещё не знает как это сделать, пишу пример, для одного поля и чекбокса. Этот код я поместил в файл .../backend/forms/form_options.php

  1.  
  2. public function init ()
  3. {
  4. return array(
  5. 'type' => 'fieldset',
  6. 'childs' => array(
  7.  
  8. new fieldCheckbox('versions', array(
  9. 'title' => LANG_SB_DO_POWER,
  10. 'default' => 0
  11. )),
  12. new fieldString(
  13. 'sb_test_login',
  14. 'title' => LANG_SB_TEST_LOGIN,
  15. 'visible_depend' => array('versions' => array('show' => array('0')))
  16. ))
  17. ...
  18. ));
  19. }
  20.  
Далее создаём два экшена в паке вашего компонента. Названия пишу свои. sb_auth.php и sb_pays.php. Ваша ссылка, или кнопка "Оплатить", должна вести к первому экшену. И в ней вы должны передать параметрами стоимость товара, его id и id пользователя. Примерно так.
  1. http://test.ru/'название компонента'/sb_auth?price=2500.00&user_id=1&id=47
В файле мы получаем эти данные
  1.  
  2. $price = $_GET['price'];
  3. $user_id = $_GET['user_id'];
  4. $id = $_GET['id'];
  5.  
Затем следует рубли перевести в копейки. Такие требования. А так же api не работает с кросс запросами(это типа аякс и тп.). А так же добавить функцию для генерации уникального id заказа. В исходниках у меня она есть, но можете и свою найти или написать.
Далее нужно составить гет параметры уже для ссылки сберу. В неё войдут
  1.  
  2. "userName" // Логин для API
  3. "password" // Пароль...
  4. "orderNumber" // Сгенерированный id
  5. "amount" // Цена, в копейках
  6. "returnUrl" // Ссылки перенапрвления
  7. "failUrl"
  8.  
Ответ сбер отдаёт прямо в браузер, в формате json. Кто как его будет доставать дело личное). Я сделал так
  1.  
  2. $content = file_get_contents(
  3. 'https://3dsec.sberbank.ru/payment/rest/register.do?' .
  4. $data);
  5. $array = json_decode($content, true);
  6. // Где $data, гет параметры
  7.  
Далее запоминаем $array в сессию(там два значения вроде.Код ошибки и OrderId), проверки и перенаправление на страницу второго зкшена с гет параметром OrderId sb_pays.php Во втором экшене сравниваем этот гет параметр и этот же параметр в массиве $array. И снова отправляем ссылку, уже другую, сберу.Указав в качестве параметров логин, пароль и OrederId. Ответ получаем так же в браузере. Обрабатываем и в случае отсутствия ошибок меняем статус заказа на сайте. Если всё сделано правильно, то нажав ссылку "Оплатить" на сайте вы попадаете на страницу сбера, где нужно ввести номер вашей карты. У них есть тестовые карты для этого.Вбиваете данные и жмёте Оплатить. Вот и всё). Выкладываю файлы, для ознакомления с кодом, кому интересно)
yadi.sk/d/vgFFK0ar0xur3w
0
alexandr22 alexandr22 3 года назад #
Для физ. лиц ?
Подключали к биллингу или интернет магазину ?

Еще от автора

Уведомления с вашего сайта на телефон
Привет. Собственно сабж). Разработка включает в себя мобильное приложение для андроид и компонент для InstantCMS.
IcmsBilling
Компонент для организации монетизации на сайте. Бесплатная версия.
Форматирование текста
Компонент позволяет выделять текстовой блок и назначать ему нужный класс. Для версии 2.15.2
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.