Передача данных пользователей при подключении интеграции

Что это дает

Данная настройка позволяет получить разработчику персональные данные пользователя, тем самым упрощая процесс регистрации и, соответственно, увеличивая общую конверсию в подключение приложения.

Как включить

В Личном Кабинете, в режиме редактирования приложения перейти в «Настройки для разработки». Отметить чекбокс «Передавать данные пользователя при подключении интеграции». Пока чекбокс не отмечен, данные по умолчанию передаваться не будут.

_______________.png

Как передаются данные

При нажатии на кнопку «Подключить» в Маркетплейсе происходит переход по ссылке «Registration Redirect Url», указанной в Личном Кабинете партнера. К этой ссылке GET-параметром прикладывается параметр user_data и user_data_sign, помимо уже существующего параметра salon_id. При отключении настройки подключение интеграции происходит по обычному флоу.

Как формируются данные

user_data — это JSON, который кодируется алгоритмом base64.

user_data_sign — это подпись, которую мы крайне рекомендуем проверять во избежание нежелательных регистраций от третьих лиц. Формируется он посредством шифрования алгоритмом SHA-256 раскодированного JSON (user_data) вашим партнерским ключом (он находится в меню «Настройки аккаунта»).

Ниже приведен пример расшифровки данных на языке PHP:

 <?php
const PARTNER_TOKEN = '2t6u73mrh85btb8wgyfj';
$userData = $_GET['user_data'];
// Строка eyJ1c2VyX2lkIjoxMjMsIm5hbWUiOiLQkNC90LTRgNC10Lkg0JjQstCw0L3QvtCyIiwiZW1haWwiOiJhbmRyZXlAZXhhbXBsZS5jb20iLCJwaG9uZSI6Ijc5OTkwMDA5OTAwIn0=
// 1 этап - декодируем base64
$userData = base64_decode($userData);
var_dump($userData);
/**
 * Получаем после декодирования массив с информацией о пользователе
 * array(4) {
 *   ["user_id"] => int(123)
 *   ["name"] => string(25) "Alex Smith"
 *   ["email"] => string(18) "alexsmith@example.com"
 *   ["phone"] => string(11) "19990009900"
 * }
 */
// 2 этап - проверяем валидность подписи
$isSignValid = $_GET['user_data_sign'] === hash_hmac('sha256', $userData, PARTNER_TOKEN);
if (! $isSignValid) {
    die("Invalid sign!");
}
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0

Комментарии