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

174
Всем привет. Хочу поделиться опытом подключения к сбербанку онлайн. У них масса документации и возможно кому то будет сложно в ней разбираться. А кому то нет). Поэтому возможно данный пост облегчит задачу. Итак, после улаживания формальностей регистрации вам пришлют два логина и два пароля. Для доступа к личному кабинету и подключению к API. Для начала тестовые. Имеет смысл создать в админке вашего компонента поля для тестовых и рабочих(в сбере они зовутся боевыми smile ) пар. А так же вам понадобятся ссылки на страницы,куда вы будите перенаправлять в случае успеха или ошибки. Это ещё два поля. Я отделил тестовые поля от боевых и спрятал одну пару,что бы не путаться. И привинтил чекбокс для смены пар полей. Для тех кто ещё не знает как это сделать, пишу пример,для одного поля и чекбокса. Этот код я поместил в файл .../backend/forms/form_options.php
Спойлер
Далее создаём два экшена в паке вашего компонента. Названия пишу свои. sb_auth.php и sb_pays.php. Ваша ссылка,или кнопка "Оплатить", должна вести к первому экшену. И в ней вы должны передать параметрами стоимость товара,его id и id пользователя. Примерно так.
Код PHP:
  1. http://test.ru/'название компонента'/sb_auth?price=2500.00&user_id=1&id=47
В файле мы получаем эти данные
Код PHP:
  1.  
  2. $price = $_GET['price'];
  3. $user_id = $_GET['user_id'];
  4. $id = $_GET['id'];
  5.  
Затем следует рубли перевести в копейки. Такие требования. А так же api не работает с кросс запросами(это типа аякс и тп.). А так же добавить функцию для генерации уникального id заказа. В исходниках у меня она есть, но можете и свою найти или написать.
Далее нужно составить гет параметры уже для ссылки сберу. В неё войдут
Код PHP:
  1.  
  2. "userName" // Логин для API
  3. "password" // Пароль...
  4. "orderNumber" // Сгенерированный id
  5. "amount" // Цена, в копейках
  6. "returnUrl" // Ссылки перенапрвления
  7. "failUrl"
  8.  
Ответ сбер отдаёт прямо в браузер, в формате json. Кто как его будет доставать дело личное). Я сделал так
Код PHP:
  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. Ответ получаем так же в браузере. Обрабатываем и в случае отсутствия ошибок меняем статус заказа на сайте. Если всё сделано правильно,то нажав ссылку "Оплатить" на сайте вы попадаете на страницу сбера, где нужно ввести номер вашей карты. У них есть тестовые карты для этого.Вбиваете данные и жмёте Оплатить. Вот и всё). Выкладываю файлы,для ознакомления с кодом,кому интересно)
https://yadi.sk/d/vgFFK0ar0xur3w
Авторизация через Facebook
Комментарии (1)
@alexandr22 2 августа 2020 в 12:15 0
Для физ. лиц ?
Подключали к биллингу или интернет магазину ?