Статья6 минКак настроить интеграцию с Tilda
Заказы из форм и корзины Тильды попадают в Рефсейлс сами — с составом, контактами и реферальным кодом партнёра.
Партнёр делится ссылкой на вашего Telegram-бота. Бот запоминает код партнёра, создаёт заказ в Рефсейлс и выдаёт покупателю ссылку на оплату через ваш счёт PayAnyWay. После оплаты бот открывает доступ к продукту, а партнёр получает вознаграждение.
Схема подходит для закрытых чатов, клубов, курсов и других продуктов, которые продаются через бота.
Тариф «Оптимальный». API и вебхуки работают только на нём.
Доступ владельца магазина: API-ключи и вебхуки настраивает только владелец.
Расширенный счёт PayAnyWay: номер счёта и код проверки целостности из кабинета PayAnyWay.
Разработчик бота. Ему понадобятся три запроса к API и обработчик вебхука, примеры ниже.
Откройте раздел «Товары/Услуги» и нажмите «Добавить».
Заполните «Название» и «Цена», например «Подписка на месяц».
В поле «Артикул (SKU)» укажите короткий код, например SUB-MONTH. По нему бот будет ссылаться на товар.
Сохраните товар.
Откройте раздел «Программы» и создайте программу.
В поле «Ссылка на сайт или Telegram-бота *» укажите адрес бота, например https://t.me/MyBot.
В «Тип вознаграждения *» выберите «Процент» и заполните «Размер вознаграждения *».
Если нужна гарантированная сумма, заполните «Не менее за заказ». Партнёр получит большее из двух значений.
В блоке «Товары и услуги программы» отметьте товар из шага 1.
Нажмите «Создать программу».
Процент считается от цены товара, а не от суммы заказа. Каждый партнёр получит в кабинете, в разделе «Программа», личную ссылку вида:
https://t.me/MyBot?start=AB12CD34Код партнёра приходит боту в параметре start. Бот должен его сохранить, иначе заказ не засчитается партнёру.

Адрес бота вписывается в поле «Ссылка на сайт или Telegram-бота *».

При цене 2 000 ₽ и ставке 20% партнёр получит минимальные 500 ₽.
Откройте «Настройки» → «Интеграции» → «PayAnyWay».
Заполните «Номер расширенного счёта» и «Код проверки целостности».
Для первой проверки оставьте включённым «Тестовый режим».
Нажмите «Сохранить».
Скопируйте адрес из поля «Pay URL для кабинета PayAnyWay».
В кабинете PayAnyWay вставьте этот адрес в настройки счёта в поле Pay URL. Check URL оставьте пустым.
Заказ становится оплаченным только после уведомления PayAnyWay с верной подписью. Страница успеха, чек или скриншот оплату не подтверждают.

Поле «Pay URL для кабинета PayAnyWay» появится под переключателем после сохранения.
Откройте «Настройки» → «Интеграции» → «API-ключи».
Нажмите «Создать ключ» и задайте название, например «Telegram-бот».
В «Права доступа» в строке «Заказы» отметьте «Запись». Чтение включится само.
Нажмите «Создать ключ».
Нажмите «Скопировать ключ» и передайте ключ разработчику. Рефсейлс показывает ключ один раз.
Храните ключ только на сервере бота. Не вставляйте его в код, который видит покупатель.
Вебхук сообщает боту, что оплата прошла. Без него боту придётся опрашивать API по таймеру.
На той же странице в разделе «Вебхуки» нажмите «Добавить эндпоинт».
В поле «Адрес» укажите адрес сервера бота, например https://bot.example.ru/refsales/webhook.
В «События» оставьте отмеченным «Статус оплаты изменён».
Сохраните эндпоинт.
Нажмите «Скопировать секрет» и передайте секрет разработчику. Им бот проверяет подпись запроса.
Этот раздел для разработчика. Все запросы идут на https://refsales.ru с заголовком Authorization: Bearer <ключ>. Суммы в API указываются в копейках. Полное описание методов лежит в документации API.
Покупатель открывает ссылку партнёра, и бот получает команду /start AB12CD34. Сохраните код за пользователем Telegram. Код состоит из 6–8 латинских букв и цифр. Если покупатель пришёл без ссылки, кода не будет.
Когда покупатель нажимает кнопку оплаты, создайте заказ:
curl -X POST https://refsales.ru/api/v1/orders \
-H "Authorization: Bearer $REFSALES_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalId": "tg-123456789-1790505600",
"referralCode": "AB12CD34",
"customer": { "name": "Анна", "phone": "+79990000000" },
"items": [{ "sku": "SUB-MONTH", "quantity": 1 }]
}'externalId задаёт номер покупки в вашей системе. Повторный запрос с тем же значением вернёт уже созданный заказ, дубля не будет.
referralCode передаёт код из /start. С неизвестным кодом заказ всё равно создастся, но партнёру не засчитается.
Без unitPrice Рефсейлс берёт цену товара из каталога.
Сохраните data.id из ответа: это номер заказа в Рефсейлс.
curl -X POST https://refsales.ru/api/v1/orders/<data.id>/payment-link \
-H "Authorization: Bearer $REFSALES_KEY"Отправьте покупателю data.url из ответа, например кнопкой в сообщении. Повторный запрос для того же заказа вернёт ту же ссылку. Если сумма заказа изменилась, запросите ссылку заново: старая перестанет открываться.
После оплаты Рефсейлс отправит на адрес вебхука POST с заголовком X-Refsales-Event: order.payment_status_changed:
{
"id": "d1a8328d-114f-4787-8182-0d88148cafff",
"type": "order.payment_status_changed",
"data": { "orderId": "…", "externalId": "tg-123456789-1790505600" }
}Проверьте подпись из заголовка X-Refsales-Signature: это HMAC-SHA256 от строки t.тело с секретом вебхука. Отклоняйте запросы старше 5 минут.
Запросите заказ: GET /api/v1/orders/<orderId>.
Если paymentStatus.code равен paid, отправьте покупателю доступ.
Ответьте кодом 200. Повтор события приходит с тем же id, поэтому храните обработанные id и не выдавайте доступ дважды.
Готовые примеры проверки подписи на PHP, Node.js и Python есть в руководстве по вебхукам.
Рефсейлс начисляет вознаграждение, когда заказ переходит в статус «Выполнен». Оплата меняет только статус оплаты, статус заказа остаётся прежним. Выберите один из способов.
Автоматизация, без кода:
Откройте раздел «Автоматизации» и нажмите «Создать».
В окне «Новая автоматизация» выберите триггер «Смена статуса оплаты».
В настройках триггера в поле «В статус оплаты (необязательно)» выберите оплаченный статус.
Добавьте действие «Сменить статус заказа» и в «Целевой статус» выберите «Выполнен».
Сохраните автоматизацию и включите её переключателем в списке.
Через бота: после выдачи доступа отправьте PATCH /api/v1/orders/<orderId> с телом {"status": "completed"}.
Оставьте в PayAnyWay «Тестовый режим» включённым. Форма оплаты откроется на demo.moneta.ru.
Пройдите путь покупателя по ссылке партнёра: /start, кнопка оплаты, оплата.
На странице PayAnyWay появится строка «Последнее уведомление» с временем платежа.
В «API-ключи» → «Вебхуки» в «Последние доставки» появится событие «Статус оплаты изменён» со статусом «Доставлено».
В разделе «Заказы» заказ отмечен оплаченным, привязан к партнёру и переведён в «Выполнен».
Партнёр видит заказ у себя в разделе «Заказы».
Выключите «Тестовый режим» и проведите один реальный платёж.
API отвечает 402. Тариф магазина не включает API. Подключите тариф «Оптимальный».
API отвечает 403. У ключа нет права на запись заказов. Откройте ключ и отметьте «Запись» в строке «Заказы».
Ссылка на оплату не выдаётся, ответ 409 с причиной connection_not_found. PayAnyWay не подключён или выключен. Проверьте шаг 3.
Ответ 409 с причиной order_already_paid. Заказ уже оплачен. Создайте новый заказ с другим externalId.
На странице PayAnyWay написано «Уведомлений от PayAnyWay ещё не было». Pay URL не вставлен в кабинет PayAnyWay или вставлен с ошибкой. Скопируйте его заново.
Эндпоинт в статусе «Отключён из-за ошибок». Сервер бота долго не отвечал кодом 2xx. Исправьте обработчик, включите эндпоинт и нажмите «Отправить тестовое событие».
Заказ оплачен, но партнёру ничего не начислено. Заказ не переведён в «Выполнен» или бот не передал referralCode. Проверьте шаг 7 и сохранение кода из /start.
Нет. Такая ссылка не передаёт Рефсейлс номер заказа и не сообщает об оплате, поэтому заказ не станет оплаченным и партнёр не получит вознаграждение. Нужно подключить свой счёт PayAnyWay в настройках интеграций.
Нет. Заказ становится оплаченным только после уведомления PayAnyWay с верной подписью. Чек и страница успеха оплату не подтверждают.
Если бот передаёт тот же externalId, Рефсейлс вернёт уже созданный заказ, а запрос ссылки вернёт ту же ссылку на оплату. Дубля не будет.
Партнёр получает большее из двух значений: процент от цены товара или сумму из поля «Не менее за заказ».
Статья6 минЗаказы из форм и корзины Тильды попадают в Рефсейлс сами — с составом, контактами и реферальным кодом партнёра.