Руководство по интеграции


Для подключения в Вашу CMS возможности оплаты товаров/услуг в рассрочку, после заключения договора с сервисом PayLate, Вам необходимо выполнить всего 3 шага.

1. Добавьте на сайт новый способ оплаты и настройте передачу данных о заказе, выбрав один из способов интеграции;

2. Создайте файл обмена статусами и передайте сотрудникам PayLate его URL;
3. Проведите тестирование сервиса совместно с сотрудниками PayLate.

Добавление способа оплаты

Добавьте способ оплаты в Вашу CMS, назвав его «PAYLATE - Доверительная оплата» или «PAYLATE - оплата в рассрочку».

Для тестирования интеграции сервисом paylate используйте следующие тестовые данные:
client_id – 1702082013
login – test
password – test

После проведения тестирования Вам будут выданы данные на рабочем сервере.


Передача данных с помощью js-скрипта

Подключение js-скрипта

Подключите js-скрипт на странице завершения оформления заказа (после оформления клиентом заказа и заполнением всех полей заказа Вашей CMS)

<script type="text/javascript" src="https://paylate.ru/js/partner_im.js" charset="utf-8"></script>

Передайте на странице завершения оформления заказа основные параметры и вызовите функцию создания кнопки paylate.ru.

# Параметр Описание
1 client_id Идентификатор клиента (предоставляется сервисом Paylate, соответствует номеру договора)
2 order_id идентификатор заказа в Вашей БД
3 category Наименование основной категории товаров магазина (необязательный параметр)
4 goods Массив товаров в формате JSON.
Данный массив может содержать один или несколько товаров. Товар определяется
следующей структурой:
{
  "Name" : " Телевизор Samsung", // Наименование товара
  "Category" : "Электроника", // Категория товара (необязательный параметр)
  "Price" : "120000.00", // Цена товара (за единицу)
  "Count" : "1" // Количество товаров
}

Перед отправкой JSON-строка (массив товаров) должна быть закодирована по типу контента application/x-www-form-urlencoded. Т.е. все не цифробуквенные символы, кроме – (минус), _ (подчеркивание) и .(точка) должны быть заменены знаком процента (%), за которым следует два шестнадцатеричных числа, а пробелы кодируются как знак сложения (+).
В PHP это делает функция urlencode.

5 token Токен, формируется как: md5(логин + md5(пароль) + номер_заказа)
6 result_url Адрес страницы для возврата клиента после совершения оплаты
7 fio Фамилия клиента (необязательный параметр)
8 fio1 Имя клиента (необязательный параметр)
9 fio2 Отчество клиента (необязательный параметр)
<script>
// Массив товаров. Возможно формирование, например, на PHP функцией json_encode() из массива представленного в следующем блоке
// При формировании массива посредством js (а не как строки из массива, например, на PHP), необходимо передавать параметр goods следующим образом: JSON.stringify(PayLateGoods)!
var PayLateGoods = [{
  "Name":"Мобильный телефон Apple", // Наименование товара
  "Category":"Мобильные устройства", // Категория товара (необязательный параметр)
  "Price":"35300.00", // Цена товара (за единицу)
  "Count":"2", // Количество товаров
  },
  {
  "Name":" Телевизор Samsung", // Наименование товара
  "Category":"Электроника", // Категория товара (необязательный параметр)
  "Price":"120000.00", // Цена товара (за единицу)
  "Count":"1", // Количество товаров
}];

// Установка параметров
var SetPayLate = {
  client_id : "1524072013", // Идентификатор Вашей организации
  order_id : 235, // Идентификатор заказа в Вашей БД
  category : "Мобильные устройства", // Категория товара (необязательный параметр)
  goods : JSON.stringify(PayLateGoods), // Массив товаров. При формировании массива посредством js (а не как строки из массива, например на PHP), необходимо передать так: JSON.stringify(PayLateGoods)!
  autostart : true, // Автоматическое открытие окна оплаты после загрузки страницы (по умолчанию false)
  token : 'a4915d4c982ec5fdff65c79e6eb4f03b', // Токен для определения отправителя
  image_type : 0, // Тип картинки-кнопки paylate
  result_url: 'http://partner.ru', // Адрес страницы для возврата клиента после совершения оплаты
  fio: 'Иванов', // Фамилия клиента (необязательный параметр)
  fio1: 'Иван', // Имя клиента (необязательный параметр)
  fio2: 'Иванович' // Отчество клиента (необязательный параметр)
}

// Отображение кнопки
PayLateButton(SetPayLate); </script>


Формирование токена (PHP):

$login = "test"; // Логин Вашей организации в системе paylate
$password = "test"; // Пароль Вашей организации в системе paylate
$order_id = "235"; // Идентификатор заказа в вашей системе
$token = md5($login . md5($password) . $order_id); // Сформированный токен


Пример формирования массива товаров (PHP):

// Пример массива товаров на PHP
$PayLateGoods = array(
  array('Name'=>'Мобильный телефон Apple','Category'=>'Мобильные устройства','Price'=>'35300.00','Count'=>'2'),
  array('Name'=>'Телевизор Samsung','Category'=>'Электроника','Price'=>'120000.00','Count'=>'1')
);
<script>
  var PayLateGoods = <?php json_encode($PayLateGoods); ?>;
  ...
</script>

После выполнения данных действий необходимо провести совместное тестирование подключения интернет-магазина со специалистами paylate.ru. В случае успешного подключения (все параметры будут переданы верно и Вами будет принят результат оплаты) специалист переведет подключение в рабочий режим, и пользователи Вашего интернет-магазина смогут оплачивать товары/услуги по пост-оплатной системе paylate.ru.


Передача данных о заказе напрямую в Paylate

Для интеграции без кнопки, т.е. перенаправление клиента может быть произведено непосредственно после нажатия на кнопку ”оформить заказ” в Вашем интернет-магазине, или для отображения сервиса оплаты во фрейме, Вы должны передавать на страницу https://paylate.ru/bypartner следующие параметры:

# Параметр Описание
1 client_id Идентификатор клиента (предоставляется сервисом Paylate, соответствует номеру договора)
2 order_id идентификатор заказа в Вашей БД
3 category Наименование основной категории товаров магазина (необязательный параметр)
4 goods Массив товаров в формате JSON.
Данный массив может содержать один или несколько товаров. Товар определяется
следующей структурой:
{
  "Name" : " Телевизор Samsung", // Наименование товара
  "Category" : "Электроника", // Категория товара (необязательный параметр)
  "Price" : "120000.00", // Цена товара (за единицу)
  "Count" : "1" // Количество товаров
}

Перед отправкой JSON-строка (массив товаров) должна быть закодирована по типу контента application/x-www-form-urlencoded. Т.е. все не цифробуквенные символы, кроме – (минус), _ (подчеркивание) и .(точка) должны быть заменены знаком процента (%), за которым следует два шестнадцатеричных числа, а пробелы кодируются как знак сложения (+).
В PHP это делает функция urlencode.

5 token Токен, формируется как: md5(логин + md5(пароль) + номер_заказа)
6 result_url Адрес страницы для возврата клиента после совершения оплаты
7 fio Фамилия клиента (необязательный параметр)
8 fio1 Имя клиента (необязательный параметр)
9 fio2 Отчество клиента (необязательный параметр)

Данные параметры могут быть переданы посредством html формы, т.е. обычным post запросом на страницу https://paylate.ru/bypartner.

<form action="https://paylate.ru/bypartner" target="_blank" method="post">
<input type="hidden" name="client_id" value="1524072013" />
<input type="hidden" name="order_id" value="235" />
<input type="hidden" name="category" value="Мобильные устройства" />
<input type="hidden" name="goods" value="%5B%7B%22Name%22%3A%22%D0%9C%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%20Apple%22%2C%22Category%22%3A%22%D0%9C%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0%22%2C%22Price%22%3A%2235300.00%22%2C%22Count%22%3A%222%22%2C%22fio%22%3A%22%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%20%D0%9F%D0%B5%D1%82%D1%80%20%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%22%2C%22passport%22%3A%222803536798%22%7D%5D" />
<input type="hidden" name="token" value="a4915d4c982ec5fdff65c79e6eb4f03b" />
<input type="hidden" name="result_url" value="http://partner.ru" />
<input type="hidden" name="fio" value="Иванов" />
<input type="hidden" name="fio1" value="Иван" />
<input type="hidden" name="fio2" value="Иванович" />
<input type="hidden" name="action" value="by_partner" />
<input type="submit" name="submit_button" value="Передать" />
</form>

Формирование ссылки для перенаправления клиента

После оформления заказа на сайте, Вы можете передать в PayLate данные по оформленному заказу для формирования ссылки по которой можно будет перенаправить клиента на сайт paylate.ru. Для этого необходимо отправить POST-запрос со следующими параметрами:

# Параметр Описание
1 URL https://paylate.ru
2 client_id Идентификатор клиента (предоставляется сервисом Paylate, соответствует номеру договора)
3 order_id идентификатор заказа в Вашей БД
4 sum Итоговая сумма заказа
5 goods Данный массив может содержать один или несколько товаров.
Товар определяется следующей структурой:
{
  "Name" : " Телевизор Samsung", // Наименование товара
  "Category" : "Электроника", // Категория товара (необязательный параметр)
  "Price" : "120000.00", // Цена товара (за единицу)
  "Count" : "1" // Количество товаров
}

6 token Токен, формируется как: md5(логин + md5(пароль) + номер_заказа)
7 action Постоянный параметр, значение: by_partner
8 pregen Постоянный параметр, значение: 1
9 result_url Ссылка для кнопки - "Вернуться на сайт магазина".

В ответ будет направлена ссылка вида - https://paylate.ru/zxcas

array (
'URL' => 'https://paylate.ru',
'POSTFIELDS' => 'client_id=1524072013&pregen=1&action=by_partner&sum=19880&token=1&order_id=1&goods=[{"Name":"BORK V705","Category":"Бытовая техника","Price":19880,"Count":1}]',
'RETURN_URL' => 'https://paylate.ru/zxcas',
    )

Передача данных о заказе в виджет фрейма Paylate

Для осуществления интеграции с использованием фрейма paylate необходимо подключить следующий javascript:

<script type="text/javascript" src="https://paylate.ru/widget/assets_widget/paylate_smartwidget.js" charset="utf-8"></script>

В случае, если Вы ранее использовали интеграцию без фрейма, необходимо прежний скрипт заменить на указанный выше. С данным скриптом возможна передача как во фрейм, так и в обычном режиме, на сайт.

Все параметры, указанные в разделе ”Подключение js-скрипта” сохранены. Для передачи параметров во фрейм, необходимо дополнить объект js параметром target:

<script>
var PayLateGoods = [{
  "Name":"iPhone 4", // Наименование товара
  "Category":"Мобильные устройства", // Категория товара (не обязательный параметр)
  "Price":"50000.50", // Цена товара (за единицу)
  "Count":"2" // Количество товаров
}];
Paylate.create({
  element: "pl",
  client_id : "1524072013",
  order_id : 235,
  category : "Электроника",
  goods : PayLateGoods,
  autostart : true,
  token : 'a4915d4c982ec5fdff65c79e6eb4f03b',
  image_type : '1',
  target: 'frame'
});
</script>


Пример работы виджета доступен по ссылке:

https://paylate.ru/widget/example_frame.html

Создание файла для обмена статусами

При регистрации Вам необходимо передать url результирующей страницы на вашем интернет-магазине (например, /result_url.aspx или /paylate/url_result.php). На данную страницу, после авторизации клиента на сервисе paylate.ru и получения согласия об оплате от клиента, Вам будут переданы следующие POST параметры:

Таблица 1. POST-параметры
# Параметр Описание
1 order_id идентификатор заказа в Вашей БД
2 state статус оплаты клиентом («-1» - отказ в пост-оплате, «0» – запрос системы paylate к Вашему сайту для определения возможности отправки заказа клиенту, «1» - оплачен)
3 sum сумма оплаты
4 token токен, формируется также как и при создании кнопки *
5 application_id уникальный номер заявки в системе paylate

Получив данные параметры, Вам необходимо сравнить token и сумму sum с суммой в Вашей БД по заказу order_id. Если суммы совпадают, и значение параметра state (статус) равно 1, Вы можете производить отгрузку товара/услуги клиенту.

После получения POST-параметров на url результирующей страницы, с параметром state (статус) равным «0» - Вам необходимо вернуть системе paylate возможность отгрузки товара/услуги – это «1», если имеется возможность отгрузки товара/услуги и «0» – если нет.

Если же на url результирующей страницы система paylate передала Вам параметр state (статус) равный «-1», то клиент отказался от оплаты данного заказа.

Ниже представлен пример файла для обмена статусами между Вашим сайтом и сервисом paylate, а также текстовое описание функционала данного файла.

Пример файла обмена статусами (PHP)

// Пример обработки результата оплаты клиентом

// Формируем токен, в соответствии с документацией(приведены тестовые данные)
$order_id = $_POST["order_id"];
$login = "test";
$password = "test";
$token = md5($login . md5($password) . $order_id);

// Ввывод строкой. Разделитель \n
if ($token != $_POST["token"])
{
   echo "RESULT:-1\nDESCR:ошибка определения источника запроса";
   exit;
}

// Есть ли возможность отгрузить заказ
// Процедура GetOrderApprove должна найти заказ по order_id, и сравнить сумму заказа с переданной суммой
$approve = GetOrderApprove($_POST["order_id"], $_POST["sum"]);

if ( $_POST["state"] == 0 )
{
   if ($approve)
   {
      // DESCR: может иметь любое присвоенное Вами значение, поскольку при данном статусе клиенту не выводится.
      echo"RESULT:1\nDESCR:актуален";
   }
   else
   {
      // В данном случае значение DESCR будет показано клиенту
      echo"RESULT:0\nDESCR:Ваш заказ был отменен менеджером";
   }
}

// Клиент оплатил
if ( $_POST["state"] == 1 )
{
   if ($approve)
   {
      // Устанавливаем статус заказа «клиент оплатил» и фиксируем application_id
      SaveOrderState($_POST["order_id"], $_POST["application_id"], "оплатил");
      // DESCR: может иметь любое присвоенное Вами значение, поскольку при данном статусе клиенту не выводится).
      echo "RESULT:1\nDESCR:статус оплатил";
   }
   else
   {
      // В данном случае значение DESCR будет показано клиенту
      echo "RESULT:0\nDESCR:Ваш заказ был аннулирован по сроку давности";
   }
}

// Клиент отказался от оплаты заказа
if ( $_POST["state"] == -1 )
{
   if ($approve)
   {
      // Устанавливаем статус заказа «клиент отказался» и фиксируем application_id
      SaveOrderState($_POST["order_id"], $_POST["application_id"], "отказался");
      // DESCR: может иметь любое присвоенное Вами значение, поскольку при данном статусе клиенту не выводится).
      echo "RESULT:1\nDESCR:отказ принят";
   }
}


Текстовое описание функционала файла обмена статусами

Если токен неверный, то выдать результат в виде следующей строки: «RESULT:-1\nDESCR:ошибка определения источника запроса».

Если $_POST[“state”] = 0, то выполняется проверка соответствия суммы заказа $_POST[“sum”] в Вашей базе по заказу $_POST[“order_id”]. И проверка возможности поставки услуги/товара. Если все ОК, то выдается строка «RESULT:1\nDESCR:актуален». (DESCR: может иметь любое присвоенное Вами значение, клиенту не выводится).

Если произошла ошибка или нет возможности предоставить клиенту данную услугу, то должна генерироваться строка «RESULT:0\nDESCR:Ваш заказ был отменен менеджером». (В данном случае значение DESCR будет показано клиенту).

Если $_POST[“state”] = 1, то выполняется проверка наличия заказа $_POST[”order_id”] (он должен быть). И установка статуса в Вашей БД у данного заказа что клиент его оплатил, система paylate выдала займ. В результате должна генерироваться строка «RESULT:1\nDESCR:статус оплатил». (DESCR: может иметь любое присвоенное Вами значение, клиенту не выводится). По параметру $_POST[«application_id»] можно производить сверку заказов в Вашей БД и БД paylate. Данный параметр Вы можете занести в свою БД для последующей идентификации заявки в системе paylate.

Если $_POST[“state”] = -1, то выполняется проверка наличия заказа $_POST[“order_id”] (он должен быть). И установка статуса в Вашей БД у данного заказа что клиент отказался от оплаты с помощью системы paylate. В результате должна генерироваться строка «RESULT:1\nDESCR:отказ принят». (DESCR: может иметь любое присвоенное Вами значение, клиенту не выводится)


ул. Лавочкина, 2а, офис 210
г. Химки, Московская область, Россия, 141407
Тел.: 8 (495) 248-01-41