Для подключения в Вашу CMS возможности оплаты товаров/услуг в рассрочку, после заключения договора с сервисом PayLate, Вам необходимо выполнить всего 3 шага.
1. Добавьте на сайт новый способ оплаты и настройте передачу данных о заказе, выбрав один из способов интеграции;
- Передача данных с помощью js-скрипта
- Передача данных о заказе напрямую в PayLate
- Формирование ссылки для перенаправления клиента
- Передача данных о заказе в виджет фрейма
2. Создайте файл обмена статусами и передайте сотрудникам PayLate его URL;
3. Проведите тестирование сервиса совместно с сотрудниками PayLate.
Добавление способа оплаты
Добавьте способ оплаты в Вашу CMS, назвав его «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. Данный массив может содержать один или несколько товаров. Товар определяется следующей структурой: { В PHP это делает функция urlencode. |
5 | token | Токен, формируется как: md5(логин + md5(пароль) + номер_заказа) |
6 | result_url | Адрес страницы для возврата клиента после совершения оплаты |
7 | fio | Фамилия клиента (необязательный параметр) |
8 | fio1 | Имя клиента (необязательный параметр) |
9 | fio2 | Отчество клиента (необязательный параметр) |
<script>
// При формировании массива посредством 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 : "1702082013", // Идентификатор Вашей организации
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. Данный массив может содержать один или несколько товаров. Товар определяется следующей структурой: Перед отправкой 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="1702082013" />
<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 | Данный массив может содержать один или несколько товаров. Товар определяется следующей структурой:
|
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=1702082013&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 : "1702082013",
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: может иметь любое присвоенное Вами значение, клиенту не выводится)