Примеры: cURL, Node, Python
Сквозной сценарий интеграции MeerPartners end-to-end: получить трекинг-ссылку, поймать click_id, отправить подписанный postback о конверсии и проверить начисление. Рабочий код.
Эта страница собирает интеграцию в один сквозной сценарий: от трекинг-ссылки до проверки начисления. Код рабочий — подставьте свои key_id, секрет и {API_BASE} (точный домен выдаёт оператор).
Что понадобится
API-ключ со скоупом postback (выпуск — в кабинете), его секрет, базовый URL API {API_BASE} и трекинг-домен ссылки. Подпись считается только на сервере.
Сценарий end-to-end
1) Партнёр берёт трекинг-ссылку на ваш оффер → /r/{code}
2) Пользователь кликает, попадает к вам с aff_click → ваш лендинг
3) Вы сохраняете aff_click рядом с заказом → ваша БД
4) Пользователь покупает → вы шлёте подписанный postback → POST /api/v1/postback
5) Вы проверяете, что начисление создано → ответ postback / кабинетШаг 1. Трекинг-ссылка
Партнёр создаёт ссылку в своём кабинете. Вам как бизнесу отдельно дёргать API не нужно — ссылка имеет вид:
https://go.meerpartners.com/r/a8Kf2?sub1=youtube&sub2=video-42При клике платформа редиректит пользователя на ваш лендинг и добавляет aff_click:
HTTP/1.1 302 Found
Location: https://your-product.io/promo?sub1=youtube&aff_click=9b1f7c2e-…Подробнее — Трекинг-ссылки и макросы.
Шаг 2–3. Поймать click_id и привязать к заказу
На лендинге читаете aff_click и сохраняете до оформления заказа.
const clickId = new URLSearchParams(location.search).get("aff_click");
if (clickId) localStorage.setItem("aff_click", clickId);
// при оформлении заказа — отправьте clickId на свой бэкенд и запишите в запись заказаШаг 4. Отправить подписанный postback
Когда заказ оплачен, ваш бэкенд шлёт конверсию. Ниже — полные, самодостаточные примеры с вычислением HMAC-подписи.
#!/usr/bin/env bash
set -euo pipefail
API_BASE="https://api.meerpartners.com"
KEY_ID="key_3f9a1c"
SECRET="sk_live_9f2a…"
# ref = пойманный ранее aff_click
BODY='{"external_order_id":"ORD-558123","event_type":"sale","ref":"9b1f7c2e-…","sub_id":"video-42","amount":"19.99","currency":"USD","status":"approved","occurred_at":"2026-06-14T10:15:00Z"}'
TS=$(date +%s)
BODY_HASH=$(printf '%s' "$BODY" | openssl dgst -sha256 -hex | awk '{print $NF}')
SIGNING=$(printf '%s\n%s\n%s\n%s' "POST" "/api/v1/postback" "$TS" "$BODY_HASH")
SIG=$(printf '%s' "$SIGNING" | openssl dgst -sha256 -hmac "$SECRET" -hex | awk '{print $NF}')
curl -sS -X POST "$API_BASE/api/v1/postback" \
-H "Content-Type: application/json" \
-H "X-Api-Key-Id: $KEY_ID" \
-H "X-Timestamp: $TS" \
-H "X-Signature: $SIG" \
--data "$BODY"
# → {"accepted":true,"duplicate":false,"conversion_id":7741,"commission":{...}}Шаг 5. Проверить начисление
В успешном ответе postback уже есть всё нужное:
{
"accepted": true,
"duplicate": false,
"conversion_id": 7741,
"commission": {
"id": 7741,
"amount": "2.50",
"currency": "USD",
"status": "pending",
"hold_until": "2026-06-28T10:15:00Z"
}
}conversion_id— конверсия создана.commission.status: "pending"— комиссия начислена и ждёт окончания hold-периода.hold_until— когда комиссия станет доступной.
Те же конверсии видны бизнесу в Аналитике, а партнёру — в его статистике и выплатах.
Проверка интеграции до боя
Не дожидайтесь реальной продажи — прогоните тестовый постбэк из кабинета. Он идёт через настоящий флоу и подтверждает, что ключ, подпись и привязка к офферу работают.
Чек-лист корректной интеграции
- Секрет API-ключа лежит только на бэкенде, не во фронтенде и не в репозитории.
- Подпись считается по сырым байтам тела; тело сериализуется один раз.
- Часы сервера синхронизированы (NTP) — иначе
POSTBACK_STALE_TIMESTAMP. -
aff_clickловится на лендинге и сохраняется до оплаты, затем уходит вref. - Ретраи — только на
5xx/таймаут, с backoff; на2xxи4xx(кроме replay) — стоп. -
external_order_idстабилен на повторах — идемпотентность не задвоит начисление.