Установка IBAN Link для KeepinCRM
Сервис устанавливается самостоятельно. Программное обеспечение бесплатно; хостинг и банковские комиссии зависят от поставщика. Проверяйте условия тарифов перед запуском.
Вариант 1: Vercel и Neon
- Создайте PostgreSQL в Neon и получите pooled connection string.
- Импортируйте репозиторий сервиса в Vercel или используйте кнопку Deploy в README. Задайте DATABASE_URL, APP_URL, SESSION_SECRET, OWNER_PASSWORD, WEBHOOK_ISSUE_SECRET и WEBHOOK_PAYMENT_SECRET. Секреты должны быть разными и случайными.
- Запустите развёртывание. Конфигурация проекта выполняет миграции после сборки. Откройте адрес сервиса с путём /login.
Условия Vercel Hobby ограничивают коммерческое использование; проверьте актуальные тарифы.
Вариант 2: Docker или Coolify
Для Docker клонируйте репозиторий, выполните npm ci и npm run secrets -- --write, задайте DOMAIN и APP_URL в .env, затем выполните docker compose up -d --build. Для Coolify используйте compose.coolify.yaml, настройте переменные и направьте домен на web:3000, не на migrate. Настройте резервное копирование.
Получатель и KeepinCRM
В кабинете добавьте получателя с реквизитами и ключом. В KeepinCRM создайте поле ссылки и список получателей с точно такими же ключами. Настройте два исходящих вебхука: создание ссылки с Response $.payment_url и фиксацию оплаты из финансов. Проверьте обе операции на тестовой сделке и активируйте интеграцию в кабинете.
Подробная инструкция по вебхукам
Пошаговое подключение KeepinCRM
- Убедитесь, что тариф KeepinCRM поддерживает триггеры. В кабинете IBAN Link добавьте получателя, сохраните реквизиты и настройки подключения, оставив интеграцию выключенной.
- В настройках дополнительных полей сделок создайте текстовое поле для ссылки и список получателей. Значения списка должны точно совпадать с ключами получателей в кабинете, включая регистр и пробелы.
- Создайте исходящий webhook для сделок: POST на
/api/webhooks/keepincrm/issue, Content-Typeapplication/json, заголовок Authorization с Bearer и значениемWEBHOOK_ISSUE_SECRET. Условие — переход на выбранный этап оплаты. Используйте JSON-шаблон из кабинета; укажите системное имя поля получателя с префиксомcustom_fields.. В Response сопоставьте поле ссылки с$.payment_url. - Создайте второй webhook для таблицы «Финансы»: POST на
/api/webhooks/keepincrm/payment, тот же Content-Type и отдельный Bearer-секретWEBHOOK_PAYMENT_SECRET. Условие —created_at, Response оставьте пустым; используйте JSON-шаблон из кабинета. Передаётся накопленная сумма оплат сделки, а не сумма одного платежа. - В одной тестовой сделке выберите получателя и переведите её на этап оплаты. Убедитесь, что в сделку записан тестовый адрес
/integration-check. Создайте в той же сделке проведённый входящий платёж в UAH и проверьте обе тестовые записи в разделе «Події». - В разделе подключения подтвердите проверку и включите интеграцию, отметив оба флажка одновременно, затем сохраните настройки. Запланированный платёж (
planned: true) не закрывает ссылку; изменение его статуса позже не запускает webhook создания повторно.