Установка IBAN Link для KeepinCRM

Сервис устанавливается самостоятельно. Программное обеспечение бесплатно; хостинг и банковские комиссии зависят от поставщика. Проверяйте условия тарифов перед запуском.

Вариант 1: Vercel и Neon

  1. Создайте PostgreSQL в Neon и получите pooled connection string.
  2. Импортируйте репозиторий сервиса в Vercel или используйте кнопку Deploy в README. Задайте DATABASE_URL, APP_URL, SESSION_SECRET, OWNER_PASSWORD, WEBHOOK_ISSUE_SECRET и WEBHOOK_PAYMENT_SECRET. Секреты должны быть разными и случайными.
  3. Запустите развёртывание. Конфигурация проекта выполняет миграции после сборки. Откройте адрес сервиса с путём /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. Настройте резервное копирование.

Подробная инструкция Coolify

Получатель и KeepinCRM

В кабинете добавьте получателя с реквизитами и ключом. В KeepinCRM создайте поле ссылки и список получателей с точно такими же ключами. Настройте два исходящих вебхука: создание ссылки с Response $.payment_url и фиксацию оплаты из финансов. Проверьте обе операции на тестовой сделке и активируйте интеграцию в кабинете.

Подробная инструкция по вебхукам

Пошаговое подключение KeepinCRM

  1. Убедитесь, что тариф KeepinCRM поддерживает триггеры. В кабинете IBAN Link добавьте получателя, сохраните реквизиты и настройки подключения, оставив интеграцию выключенной.
  2. В настройках дополнительных полей сделок создайте текстовое поле для ссылки и список получателей. Значения списка должны точно совпадать с ключами получателей в кабинете, включая регистр и пробелы.
  3. Создайте исходящий webhook для сделок: POST на /api/webhooks/keepincrm/issue, Content-Type application/json, заголовок Authorization с Bearer и значением WEBHOOK_ISSUE_SECRET. Условие — переход на выбранный этап оплаты. Используйте JSON-шаблон из кабинета; укажите системное имя поля получателя с префиксом custom_fields.. В Response сопоставьте поле ссылки с $.payment_url.
  4. Создайте второй webhook для таблицы «Финансы»: POST на /api/webhooks/keepincrm/payment, тот же Content-Type и отдельный Bearer-секрет WEBHOOK_PAYMENT_SECRET. Условие — created_at, Response оставьте пустым; используйте JSON-шаблон из кабинета. Передаётся накопленная сумма оплат сделки, а не сумма одного платежа.
  5. В одной тестовой сделке выберите получателя и переведите её на этап оплаты. Убедитесь, что в сделку записан тестовый адрес /integration-check. Создайте в той же сделке проведённый входящий платёж в UAH и проверьте обе тестовые записи в разделе «Події».
  6. В разделе подключения подтвердите проверку и включите интеграцию, отметив оба флажка одновременно, затем сохраните настройки. Запланированный платёж (planned: true) не закрывает ссылку; изменение его статуса позже не запускает webhook создания повторно.