Skip to content

Latest commit

 

History

History
1030 lines (888 loc) · 35.5 KB

API-v1-reference.md

File metadata and controls

1030 lines (888 loc) · 35.5 KB

Список API-методов модуля

Содержание

Формирование пути url запросов к API

https://<HOST>/<PARTNER_PATH>/<METHOD>?k=<PREFIX><HASH><ENCRYPTED_DATA>

где

HOST — хост сервиса. Хост песочницы: sandbox.promopult.org;
PARTNER_PATH — уникальный путь к апи для каждого партнера.
METHOD — название апи-метода.
PREFIX — код алгоритма шифрования (всегда'zaa');
PARTNER_HASH — хеш Партнера или Пользователя в зависимости от вызываемого метода;
ENCRYPTED_DATA — закодированные данные запроса.

Регистрация пользователя — createUser

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/createUser ?
  k=<PREFIX><PARTNER_HASH><ENCRYPTED_DATA>

Для регистрации создадим следующий GET-запрос:

$data = [
  'username'        => '<string>',  // Обязательное поле
  'hash'            => '<string>',  // Обязятельное поле
  'email'           => '<string>',
  'phone'           => '<string>',
  'suggestedDomain' => '<string>',
  'inviterUserId'   => '<string>'
];

// генерируем URL
$k    = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url  = 'https://sandbox.promopult.org/partners/acme/createUser?k=zaa' . '<PARTNER_HASH>' . urlencode($code)';

Параметры:

username — уникальный логин в системе. Для поддержания уникальности желательно в него добавлять короткий префикс и идентификатор пользователя партнера. Например: acme-site.ru-11235813;
hash — уникальный 32-символьный случайный хеш пользователя. При этом его необходимо сохранить в БД для дальнейшего использования;
email — email пользователя в системе;
phone — мобильный телефон пользователя в интернациональном формате. Например: +79551234567;
suggestedDomain — домен, который должен продвигаться в системе (без схемы), например: site.ru, lenta.ru, cnn.com;
inviterUserId — идентификатор пользователя в системе Партнера (используется для удобства отладки и решения проблем).

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "cryptKey": "<CRYPT_KEY>"
  }
}

где

CRYPT_KEY — Ключ для шифрования-дешифрования данных пользователя. Необходимо сохранить в БД для дальнейшего использования. Формат: строка в 52 символа. Пример: ko808duypw6hxos6q4vihukgy4wpuzwwbwnerus676krgwcoi7u

FAIL

{
  "status": {
    "code": <ERROR_CODE>,
    "message": "<ERROR_MESSAGE>"
  },
  "error": true
}

Коды ошибок:

0 — Нет ошибки
1 — Ошибка валидации данных
2 — Неверный ключ партнера
3 — Данный ключ пользователя уже занят - сгенерируйте новый
4 — Длина хеша должна быть 32 символа

Авторизация пользователя — cryptLogin

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/cryptLogin ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>&r=<PAGE>

где

PREFIX'zaa';
ENCRYPTED_DATA — закодированные данные запроса.
PAGE — экран, который откроется после логина, см. deeplinks (необязательный параметр).

Для авторизации создадим адрес GET-запроса:

//
$data = [
  'login' => '<LOGIN>',
  'hash'  => '<USER_HASH>',
  'paymentNotifyUrl' => '<PAYMENT_NOTIFY_URL>' // Необязятельный параметр
];

// генерируем URL
$k    = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url  = 'https://sandbox.promopult.org/partners/acme/cryptLogin?k=zaa' . '<USER_HASH>' . urlencode($code) . '&r=<PAGE>';

где

LOGIN — логин пользователя,
USER_HASH — хэш пользователя,
PAYMENT_NOTIFY_URL — URL на который будут отправлятся уведомления при пополнении счета (см. раздел Шаблон PAYMENT_NOTIFY_URL).

В результате переменная $url будет содержать ссылку, которую можно подставлять в параметр src тега iframe.

Пример:

https://sandbox.promopult.org/partners/acme/cryptLogin?k=zaaf3102ac1d0588bea1db5411f662826636ZTQo%2BDP4JOoltfdzJ7T0tTXoanh0Wba5s%2BkZKaYa2uqk6OS1dfV05RvV9uimaZn2dOm0qKZbgHaqaef2Metn2OX15elpWymnm6bk5yVluPNlqve1cbej7CEnaJmaaKfoaNlqpCmn6yWZ7OYppPr

Архивация пользователя — archiveUser

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/archiveUser ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Для архивации создадим следующий GET-запрос:

$data = [
   'partner' => '<PARTNER_HASH>'
];

// генерируем URL
$k    = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url  = 'https://sandbox.promopult.org/partners/acme/archiveUser?k=zaa' . '<USER_HASH>' . urlencode($code)';

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "userHash": "<USER_HASH>",
    "lastBillingDate": "<DATE>"
  }
}

где

USER_HASH — Хеш пользователя, который был заархивирован PARTNER_HASH — Хеш партнера DATE — Дата до которой будут происходить списания

FAIL

{
  "status": {
    "code": <ERROR_CODE>,
    "message": "<ERROR_MESSAGE>"
  },
  "error": true
}

Коды ошибок:

0 — Нет ошибки
1 — Ошибка валидации данных
2 — Неверный ключ партнера
4 — Длина хеша должна быть 32 символа

Разархивация пользователя — unarchiveUser

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/unarchiveUser ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Для разархивации пользователя создадим следующий GET-запрос:

$data = [
   'partner' => '<PARTNER_HASH>'
];

// генерируем URL
$k    = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url  = 'https://sandbox.promopult.org/partners/acme/unarchiveUser?k=zaa' . '<USER_HASH>' . urlencode($code)';

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "userHash": "<USER_HASH>",
  }
}

где

USER_HASH — Хеш пользователя, который был заархивирован PARTNER_HASH — Хеш партнера

FAIL

{
  "status": {
    "code": <ERROR_CODE>,
    "message": "<ERROR_MESSAGE>"
  },
  "error": true
}

Коды ошибок:

0 — Нет ошибки
1 — Ошибка валидации данных
2 — Неверный ключ партнера
4 — Длина хеша должна быть 32 символа

Пополнение баланса пользователя — doPayment

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/doPayment ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Создадим GET-запрос для проводки платежа:

$paymentData = array(
  'paymentSum'      => '<PAYMENT_COST>',
  'paymentSumBonus' => '<PAYMENT_BONUS>',
  'paymentHash'     => '<PAYMENT_HASH>',
  'userLogin'       => '<LOGIN>',
);

$k = json_encode($paymentData);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'https://<HOST>/<PARTNER_PATH>/doPayment?k=zaa' .  '<USER_HASH>' . urlencode($code);

где

PAYMENT_COST — Сумма платежа
PAYMENT_BONUS — Сумма бонусного платежа
PAYMENT_HASH — Хеш платежа. Уникальное случайное 32-символьное значение. Формат: md5-код.
LOGIN — Логин пользователя в системе.

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "paymentId": "<PAYMENT_ID>"
  }
}

где

PAYMENT_ID — Ид платежа в системе. +Обязательно нужно его привязать (сохранить) к платежу в партнерской системе. Пример: 114163.

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Подтверждение платежа — confirmPayment

Обратите внимание, что платежи созданные методом doPayment, подтверждать не требуется.

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/confirmPayment ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Создадим GET-запрос для подтверждения платежа:

$dataJson = array(
  'amount' => '<AMOUNT>',
  'transactionId'  => '<TRANSACTION_ID>',
);

$k = json_encode($dataJson);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'https://<HOST>/<PARTNER_PATH>/confirmPayment?k=zaa' .  '<USER_HASH>' . urlencode($code);

где

AMOUNT — Сумма платежа
TRANSACTION_ID — Идентификатор платежа переданный при создании платежа (см. Пополнение со счета Партнера).

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "transactionId": "<TRANSACTION_ID>"
  }
}

где

TRANSACTION_ID — Идентификатор платежа в системе.

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Отклонение платежа — declinePayment

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/declinePayment ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Создадим GET-запрос для отклонения платежа:

$dataJson = array(
  'transactionId'  => '<TRANSACTION_ID>',
  'errorCode'      => <ERROR_CODE>,        // Необязятельный параметр (больше не поддерживается)
  'errorMessage'   => '<ERROR_MESSAGE>',   // Необязятельный параметр (больше не поддерживается)
  'errorLink'      => '<ERROR_LINK>',      // Необязятельный параметр (больше не поддерживается)
);

$k = json_encode($dataJson);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'https://<HOST>/<PARTNER_PATH>/declinePayment?k=zaa' . '<USER_HASH>' . urlencode($code);

где

TRANSACTION_ID — идентификатор платежа переданный при создании платежа (см. Пополнение со счета Партнера).

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "transactionId": "<TRANSACTION_ID>"
  }
}

где

TRANSACTION_ID — Идентификатор платежа в системе.

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Финансовая сводка пользователя за день — getFinSummaryByDate

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/getFinSummaryByDate?k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

где

USER_HASH — Хеш пользователя.

Создадим адрес GET-запроса:

$queryData = array(
  'date' => '<DATE>'
);

$k = json_encode($queryData);
$code = SimpleCrypt::encrypt($k, '<USER_CRYPT_KEY>');
$url = 'https://sandbox.promopult.org/partners/acme/getFinSummaryByDate?k=zaa' . '<USER_HASH>' . urlencode($code);  

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "date": "<DATE>",
    "balance": <USER_BALANCE>,
    "income": <USER_INCOME>,
    "outcome": <USER_OUTCOME>,
  }
}

где,

DATE — Дата в формате YYYY-MM-DD.
USER_BALANCE — Баланс счёта пользователя.
USER_INCOME — Сумма пополнений пользователя за день.
USER_OUTCOME — Сумма списаний пользователя за день (со знаком минус).

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Получение данных пользователя — getUserData

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/getUserData ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

где

USER_HASH — Хеш пользователя.

Создадим адрес GET-запроса:

$queryData = array(
  'partner' => '<PARTNER_HASH>'
);

$k = json_encode($queryData);
$code = SimpleCrypt::encrypt($k, '<PARTHER_CRYPT_KEY>');
$url = 'https://sandbox.promopult.org/partners/acme/getUserData?k=zaa' . '<USER_HASH>' . urlencode($code)

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "hash": "<USER_HASH>",
    "balance": <USER_BALANCE>,
    "dailyBudget": <DAILY_BUDGET>,
    "dailyExpense": <DAILY_EXPENCE>,
    "url": "<URL>",
    "keywords": <ARRAY_OF_KEYWORDS>,
    "status": "<STATUS>",
    "progress": "<PROGRESS>"
  }
}

где,

USER_HASH — Хэш пользователя.
USER_BALANCE — Баланс счёта пользователя.
DAILY_BUDGET — Дневной бюджет пользователя (считается как МЕСЯЧНЫЙ_БЮДЖЕТ / 30).
DAILY_EXPENCE — Средний дневной расход средств.
URL — Текущий хост продвигаемого проекта.
ARRAY_OF_KEYWORDS — Массив клучевых фраз, в формате ["слово1", "слово2"].
STATUS — Статус пользователя, принимает значения run, stopped или new.
PRGOGRESS - Прогресс пользователя, принимает значения WIZARD_STEP_1, WIZARD_STEP_2, WIZARD_STEP_3, WIZARD_STEP_4, CAMPAIGN_PAID, CAMPAIGN_UNPAID, UNKNOWN.
FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Получение данных всех пользователей партнера — getUsersData

При необходимости можно получить данные всех пользователей партнера: баланс, статус проекта и ключевых слов. Для этого необходимо запросить ключ шифрования партнера PARTNER_CRYPT_KEY, т.к. метод не подразумевает использования ключа шифрования какого-либо пользователя системы.

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/getUsersData ?
  k=<PREFIX><PARTNER_HASH><ENCRYPTED_DATA>

где

PARTNER_HASH — Хеш партнера.

Создадим адрес GET-запроса:

$queryData = array(
  'partner'   => '<PARTNER_HASH>',
  'createdOn' => date('Y-m-d h:i:s'),
);

$k = json_encode($queryData);
$code = SimpleCrypt::encrypt($k, '<PARTHER_CRYPT_KEY>');
$url = 'https://sandbox.promopult.org/partners/acme/getUsersData?k=zaa' . '<PARTNER_HASH>' . urlencode($code) . '&type=userInvite'

где

PARTHER_CRYPT_KEY — Ключ который необходимо запросить. Уникален для партнера системы.

Получение списка непрочитанных сообщений пользователя — getUserMessages

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/getUserMessages ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Создадим урл GET-запроса для получения сообщений

$data = array(
    'partner'  => <PARTNER_HASH>,
    'markRead' => <MARK_READ>,
);

$k = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'http://sandbox.promopult.org/partners/acme/getUserMessages?k=zaa' . '<USER_HASH>' . urlencode($code);

где

MARK_READ — — Необязятельный параметр, если передан TRUE, сообщения буду как прочитанное.

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "messages": <MESSAGES>
  }
}

где

MESSAGES — Массив сообщений в формате:

[
  ...
  {
    "id": "<MESSAGE_ID>",
    "userLogin": "<LOGIN>",
    "type": "<TYPE>",
    "title": "<TITLE>",
    "text": "<TEXT>",
    "params": "<PARAMS>",
    "templateId": "<TEMPLATE_ID>",
    "textTemplate": "<TEXT_TEMPLATE>",
    "titleTemplate": "<TITLE_TEMPLATE>"
  },
  ...
]

где,
MESSAGE_ID — Идентификатор сообщения в системе.
LOGIN — Логин пользователя.
TYPE — тип сообщения TITLE — Заголовок (тема) сообщения.
TEXT — Текст сообщения (Важно! в тексте могу содержаться Шаблоны ссылок на внутренние экраны iframe).
PARAMS — Массив динамических свойств сообщения (используется для подстановки в шаблон сообщения партнера).
TEMPLATE_ID — Целочисленный уникальный идентификатор шаблона сообщения.
TEXT_TEMPLATE — Шаблон текста сообщения в формате mustache.
TITLE_TEMPLATE — Шаблон заголовка (subject) сообщения в формате mustache.

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Получение списка непрочитанных сообщений всех пользователей партнёра — getMessages

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/getMessages ?
  k=<PREFIX><PARTNER_HASH><ENCRYPTED_DATA>

Создадим урл GET-запроса для получения сообщений

$data = array(
    'partner'  => <PARTNER_HASH>,
    'markRead' => <MARK_READ>,
);

$k = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'http://sandbox.promopult.org/parnters/acme/getMessages?k=zaa' . '<PARTNER_HASH>' . urlencode($code);

где

MARK_READ — Необязятельный параметр, если передан TRUE, сообщения буду как прочитанное.

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "messages": <MESSAGES>
  }
}

где

MESSAGES — Массив сообщений в формате:

[
  ...
  {
    "id": "<MESSAGE_ID>",
    "userLogin": "<LOGIN>",
    "type": "<TYPE>",
    "title": "<TITLE>",
    "text": "<TEXT>",
    "params": "<PARAMS>",
    "templateId": "<TEMPLATE_ID>",
    "textTemplate": "<TEXT_TEMPLATE>",
    "titleTemplate": "<TITLE_TEMPLATE>"
  },
  ...
]

где,
MESSAGE_ID — Идентификатор сообщения в системе.
LOGIN — Логин пользователя.
TYPE — тип сообщения TITLE — Заголовок (тема) сообщения.
TEXT — Текст сообщения (Важно! в тексте могу содержаться Шаблоны ссылок на внутренние экраны iframe).
PARAMS — Массив динамических свойств сообщения (используется для подстановки в шаблон сообщения партнера).
TEMPLATE_ID — Целочисленный уникальный идентификатор шаблона сообщения.
TEXT_TEMPLATE — Шаблон текста сообщения в формате mustache.
TITLE_TEMPLATE — Шаблон заголовка (subject) сообщения в формате mustache.
FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Получение шаблонов сообщений — getMessageTemplates

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/getMessageTemplates ?
  k=<PREFIX><PARTNER_HASH><ENCRYPTED_DATA>

Создадим урл GET-запроса для получения сообщений

$data = array(
    'partner'  => <PARTNER_HASH>
);

$k = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'http://sandbox.promopult.org/parnters/acme/getMessageTemplates?k=zaa' . '<PARTNER_HASH>' . urlencode($code);

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "messages": <MESSAGE_TEMPLATES>
  }
}

где

MESSAGE_TEMPLATES — Массив шаблонов сообщений в формате:

[
  ...
  {
    "templateId": "<TEMPLATE_ID>",
    "textTemplate": "<TEXT_TEMPLATE>",
    "titleTemplate": "<TITLE_TEMPLATE>"
  },
  ...
]

где,
TEMPLATE_ID — Целочисленный уникальный идентификатор шаблона сообщения.
TEXT_TEMPLATE — Шаблон текста сообщения в формате mustache.
TITLE_TEMPLATE — Шаблон заголовка (subject) сообщения в формате mustache.

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Отметка о прочтении списка сообщений — readMessages

Синтаксис запроса

POST https://<HOST>/<PARTNER_PATH>/readMessages ?
  k=<PREFIX><PARTNER_HASH><ENCRYPTED_DATA>

POST BODY

ids=<IDS_COMMA_SEPARATED>

где

IDS_COMMA_SEPARATED — строка чисел-идентификаторов сообщений, разделенных запятыми

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "success": <SUCCESS_COUNT>
  }
}

где

SUCCESS_COUNT — количество успешно обработанных сообщений

Изменение URL-а проекта — changeUrl

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/changeUrl ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Создадим урл GET-запроса

$data = array(
    'url' => <NEW_URL>
);

$k = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'http://sandbox.promopult.org/partners/acme/changeUrl?k=zaa' . '<USER_HASH>' . urlencode($code);

где

NEW_URL — Новый URL проекта, например http://my-new-domain.com.

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "newUrl": <NEW_URL>,
    "oldUrl": <OLD_URL>
  }
}

где

NEW_URL — Новый URL
OLD_URL — URL проекта до вызова метода

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Подключение счётчика Yandex.Metrika — attachYandexMetrikaCounter

Синтаксис запроса

GET https://<HOST>/<PARTNER_PATH>/attachYandexMetrikaCounter ?
  k=<PREFIX><USER_HASH><ENCRYPTED_DATA>

Создадим урл GET-запроса

$data = array(
    'counterId' => '<COUNTER_ID>',
    'accessToken' => '<ACCESS_TOKEN>'
);

$k = json_encode($data);
$code = SimpleCrypt::encrypt($k, '<CRYPT_KEY>');
$url = 'http://sandbox.promopult.org/partners/acme/attachYandexMetrikaCounter?k=zaa' . '<USER_HASH>' . urlencode($code);

где

COUNTER_ID — Номер счетчика.
ACCESS_TOKEN — OAuth-токен для доступа в Яндекс.

Формат ответа

SUCCESS

{
  "status": {
    "code": 0,
    "message": "ok"
  },
  "error": false,
  "data": {
    "id": <INTERNAL_COUNTER_ID>
  }
}

где

INTERNAL_COUNTER_ID — Внутрений идентификатор счетчика в Integra.

FAIL

{
  "status" : {
    "code" : <ERROR_CODE>,
    "message" : "<ERROR_MESSAGE>"
  },
  "error" : true
}

Авторесайз фрейма

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

<script type="text/javascript"
        src="https://web.promopult.org/partners/default/iframeResizer.min.js"></script>

Либо подключить самостоятельно из github-репозитория файл iframeResizer.min.js.

<script type="text/javascript"
        src="/iframeResizer.min.js"></script>

Далее, на событие onload html-элемента iframe добавить вызов: iFrameResize({ checkOrigin: false }, this)

<iframe src="https://sandbox.promopult.org/partners/acme/cryptLogin?k=..."
        scrolling="no"
        seamless="seamless"
        style="min-height: 600px"
        onload="iFrameResize({ checkOrigin: false }, this)"></iframe>

Также, можно ознакомиться с репозиторием либы на github.com на предмет других возможностей.

Deeplinks

Для организации deeplinks в методе cryptLogin служит GET-параметр r, который указывает на какой экран перейти после логина в iframe-е. Например, если необходимо открыть страницу пополнения для r нужно передать значение go/payment в URL-кодированном виде.

Пример:

https://sandbox.promopult.org/partners/acme/cryptLogin?k=...&r=go%2Fpayment

Для параметра r доступны следующие значения:

/go/payment
/go/support
/go/help

Deeplinks в тексте сообщений

В тексте сообщений может содержаться шаблон ссылки на один из внутренних экранов iframe-а, например, в сообщении с типом low_balance есть ссылка на страницу пополнения счета.

Часть сообщения, содержащая ссылку, выглядит так:

...
Чтобы пополнить баланс перейдите по <a target="_blank" href="{{go/payment}}">ссылке</a>. 

Атрибут href содержит шаблон адреса экрана пополнения счета в iframe {{go/payment}}, который, в зависимости от контекста вывода сообщения, необходимо заменить на deeplink через интерфейс Партнера в модуль продвижения.

После преобразования, для пользователя ссылка в сообщении может выглядеть так:

...
Чтобы пополнить баланс перейдите по <a target="_blank" href="http://my-cool-service.com/promotion?open=go/payment">ссылке</a>.

где http://my-cool-service.com/promotion?open=go/payment адрес страницы модуля на сайте партнера, а GET-параметр open пробросится в атрибут src тега iframe:

...
<iframe src='https://sandbox.promopult.org/iframe/cryptLogin?k=...&r=go/payment'></iframe>
...

Шаблон PAYMENT_NOTIFY_URL

Обратите внимание, уведомления будут отправлятся только в случае Пополнения со счета Партнера.

Для возможности более гибкой интеграции предусмотрена шаблонизация уведомлений пополнения баланса. Шаблон представляет из себя обыкновенный URL с плейсхолдерами вида {amount}, которые, перед вызовом, будут заменены на соответствующие значения.

Например для шаблона:

https://payment.acme.com/payment-notify?amount={amount}&transaction_id={id}

уведомление будет отправлено на:

https://payment.acme.com/payment-notify?amount=100&transaction_id=202cb962ac59075b964b07152d234b70

Поддердживаются следующие варинаты плейсхолдеров:

  • {id} — внешний идентификатор транзакции (строка 32 символа)
  • {amount} — сумма платежа
  • {hash} — хэш пользователя