Payment Links
API для создания ссылок с индивидуальной ценой на конкретный продукт. Позволяет создавать персонализированные ссылки на оплату с уникальными ценами и метаданными.
Предварительные требования
Важно
Для создания payment links необходимо сначала создать и настроить продукт в личном кабинете платформы Mesilat.
Ограничение
Payment links нельзя создавать для бесплатных продуктов. Попытка создать платежную ссылку для бесплатного продукта (is_free = true) приведет к ошибке 422.
Как узнать ID продукта
ID продукта можно получить из URL страницы редактирования продукта в браузере:
Где :product_id — это ID продукта.
Формат ссылки на оплату
В ответе API возвращается ссылка на оплату в следующем формате:
Где:
- app.mesilat.com - домен платформы
- alexsample - имя пользователя/магазина
- 141 - ID продукта
- uuid=d83dff3a - уникальный идентификатор payment link
Эта ссылка ведет на страницу оплаты, где клиент может совершить покупку продукта по указанной цене.
Предзаполнение данных клиента
Вы можете добавить URL параметры для предзаполнения информации о клиенте на странице оплаты:
| Параметр | Описание | Пример |
|---|---|---|
email |
Email клиента | [email protected] |
name |
Имя клиента | Соня Морозова |
phone_number |
Телефон клиента в международном формате (с + или 00 перед кодом страны) |
+35799123456 или 0035799123456 |
Пример:
https://app.mesilat.com/alexsample/141?uuid=d83dff3a&[email protected]&name=%D0%A1%D0%BE%D0%BD%D1%8F%20%D0%9C%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2%D0%B0&phone_number=%2B35799123456
URL кодирование
Специальные символы (пробелы, +, @, кириллица и т.д.) должны быть URL-encoded:
- Пробел →
%20 +→%2B@→%40И→%D0%98
В большинстве языков программирования есть встроенные функции для URL encoding.
Примеры создания ссылок вручную
const baseLink = 'https://app.mesilat.com/username/141?uuid=abc123';
const url = new URL(baseLink);
url.searchParams.set('email', '[email protected]');
url.searchParams.set('name', 'Соня Морозова');
url.searchParams.set('phone_number', '+35799123456');
const finalLink = url.toString();
// https://app.mesilat.com/username/141?uuid=abc123&email=sonya%40mesilat.com&name=%D0%A1%D0%BE%D0%BD%D1%8F+%D0%9C%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2%D0%B0&phone_number=%2B35799123456
$baseLink = 'https://app.mesilat.com/username/141?uuid=abc123';
$params = [
'email' => '[email protected]',
'name' => 'Соня Морозова',
'phone_number' => '+35799123456',
];
$finalLink = $baseLink . '&' . http_build_query($params);
// https://app.mesilat.com/username/141?uuid=abc123&email=sonya%40mesilat.com&name=%D0%A1%D0%BE%D0%BD%D1%8F+%D0%9C%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2%D0%B0&phone_number=%2B35799123456
from urllib.parse import urlencode
base_link = 'https://app.mesilat.com/username/141?uuid=abc123'
params = {
'email': '[email protected]',
'name': 'Соня Морозова',
'phone_number': '+35799123456'
}
final_link = f"{base_link}&{urlencode(params)}"
# https://app.mesilat.com/username/141?uuid=abc123&email=sonya%40mesilat.com&name=%D0%A1%D0%BE%D0%BD%D1%8F+%D0%9C%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2%D0%B0&phone_number=%2B35799123456
Интерактивный генератор ссылок
Генератор ссылки с предзаполненными данными
Аутентификация
Все эндпоинты требуют API ключ в заголовке X-API-Key.
Эндпоинты
Создание Payment Link
Создает новую ссылку на оплату для продукта.
POST /api/v1/creator/products/{product}/payment-links
Параметры URL
| Параметр | Тип | Описание |
|---|---|---|
product |
integer | ID продукта |
Тело запроса
{
"prices": [
{
"currency_id": 3,
"price": 500.00,
"discount_price": 39.99,
"is_discount_price": true
},
{
"currency_id": 1,
"price": 5000.00,
"is_discount_price": false
}
],
"use_once": true,
"metadata": {
"order_id": "ORD-2025-789456",
"project_id": "proj_12345",
"customer_id": "cust_67890",
"campaign": "summer_sale_2025",
"utm_source": "google",
"utm_medium": "cpc",
"referral_code": "FRIEND2025",
"affiliate_id": "aff_999"
}
}
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prices |
array | Да | Массив цен для разных валют. Цена в EUR (currency_id: 3) обязательна, цена в RUB (currency_id: 1) опциональна |
prices[].currency_id |
integer | Да | ID валюты (1 - RUB, 3 - EUR). EUR обязательна, RUB опциональна |
prices[].price |
number | Нет | Обычная цена. Обязательна если is_discount_price = false |
prices[].discount_price |
number | Нет | Скидочная цена. Обязательна если is_discount_price = true |
prices[].is_discount_price |
boolean | Да | Включена ли скидочная цена. Если true, то обычная цена будет "зачеркнута" и применяться будет скидочная цена при покупке |
use_once |
boolean | Нет | Можно ли использовать ссылку только один раз (по умолчанию: false) |
metadata |
object | Нет | Дополнительные метаданные (order_id, name, shop_url и т.д.). Эти данные будут переданы в webhook при успешной оплате |
Валюта и цены
Обязательные требования:
- Цена в EUR (currency_id: 3) обязательна и должна быть указана в массиве prices
- Цена в RUB (currency_id: 1) опциональна
Автоматическая конвертация: Если цена в RUB не передана, она будет автоматически рассчитана по текущему курсу валют на основе цены в EUR.
Ручная установка цены в RUB:
Вы можете передать собственную цену в RUB, указав её в массиве prices вместе с EUR. Это полезно, если вы хотите установить фиксированную цену в рублях или использовать свой курс конвертации.
Ответ
200 OK
{
"uuid": "abc123def456",
"metadata": {
"order_id": "ORD-2025-789456",
"project_id": "proj_12345",
"customer_id": "cust_67890",
"campaign": "summer_sale_2025",
"utm_source": "google",
"utm_medium": "cpc",
"referral_code": "FRIEND2025",
"affiliate_id": "aff_999"
},
"use_once": true,
"payment_link": "https://app.mesilat.com/alexsample/141?uuid=abc123def456"
}
Ошибки
401 Unauthorized
{
"error": "API key is required",
"message": "Please provide a valid API key in the X-API-Key header"
}
422 Unprocessable Entity
Ошибки валидации:
{
"message": "The given data was invalid.",
"errors": {
"prices": ["The prices field is required."],
"prices.0.currency_id": ["The currency_id field is required."]
}
}
Ошибка для бесплатного продукта:
{
"message": "Невозможно создать платежные ссылки для бесплатных продуктов",
"errors": {
"error": ["Невозможно создать платежные ссылки для бесплатных продуктов"]
}
}
Получение списка Payment Links
Получает список всех payment links для продукта.
GET /api/v1/creator/products/{product}/payment-links
Параметры URL
| Параметр | Тип | Описание |
|---|---|---|
product |
integer | ID продукта |
Ответ
200 OK
{
"data": [
{
"id": 188,
"product_id": 141,
"is_discount_price": true,
"prices": [
"€20.00",
"100.00 ₽"
],
"payment_link": "https://app.mesilat.com/alexsample/141?uuid=4204b476",
"use_once": true,
"uuid": "4204b476"
},
{
"id": 191,
"product_id": 141,
"is_discount_price": true,
"prices": [
"€20.00",
"100.00 ₽"
],
"payment_link": "https://app.mesilat.com/alexsample/141?uuid=6172bef",
"use_once": true,
"uuid": "6172bef"
},
{
"id": 193,
"product_id": 141,
"is_discount_price": true,
"prices": [
"€20.00"
],
"payment_link": "https://app.mesilat.com/alexsample/141?uuid=4b6b387e",
"use_once": true,
"uuid": "4b6b387e"
}
],
"links": {
"first": "https://api.mesilat.com/api/v1/creator/products/141/payment-links?page=1",
"last": "https://api.mesilat.com/api/v1/creator/products/141/payment-links?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "pagination.previous",
"active": false
},
{
"url": "https://api.mesilat.com/api/v1/creator/products/141/payment-links?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "pagination.next",
"active": false
}
],
"path": "https://api.mesilat.com/api/v1/creator/products/141/payment-links",
"per_page": 15,
"to": 3,
"total": 3
}
}
Ошибки
401 Unauthorized
{
"error": "API key is required",
"message": "Please provide a valid API key in the X-API-Key header"
}
Удаление Payment Link
Удаляет payment link.
DELETE /api/v1/creator/products/{product}/payment-links/{paymentLink}
Параметры URL
| Параметр | Тип | Описание |
|---|---|---|
product |
integer | ID продукта |
paymentLink |
integer | ID payment link |
Ответ
204 No Content
Тело ответа пустое.
Ошибки
401 Unauthorized
{
"error": "API key is required",
"message": "Please provide a valid API key in the X-API-Key header"
}
404 Not Found
Примеры использования
Создание простого Payment Link
curl -X POST "https://api.mesilat.com/api/v1/creator/products/123/payment-links" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prices": [
{
"currency_id": 3,
"discount_price": 39.99,
"is_discount_price": true
},
{
"currency_id": 1,
"price": 5000.00,
"is_discount_price": false
}
],
"use_once": true,
"metadata": {
"order_id": "ORD-2025-789456",
"project_id": "proj_12345",
"customer_id": "cust_67890",
"campaign": "summer_sale_2025",
"utm_source": "google",
"utm_medium": "cpc",
"referral_code": "FRIEND2025",
"affiliate_id": "aff_999"
}
}'
Коды ошибок
| Код | Описание |
|---|---|
| 200 | Успешный запрос |
| 204 | Успешное удаление (без содержимого) |
| 401 | Неверный или отсутствующий API ключ |
| 404 | Ресурс не найден |
| 422 | Ошибка валидации данных |
| 500 | Внутренняя ошибка сервера |