Правильно обрабатываем платежи в связке amoCRM + Payer с помощью виджета TapKit


Правильно обрабатываем платежи из amoCRM в виджете Payer

В данной статье описывается следующий сценарий кейса, при котором менеджер вводит сумму оплаты, которую внес клиент.

MoreKit проверит все платежи клиента, соотнесет их с суммой, которую внес клиент и обновит статус платежей на «Оплачено». В случае если клиент внес денег меньше, чем сумма его платежей, то создастся платеж на оставшуюся сумму.

Процесс будет запускаться по кнопке, которая создается с помощью виджета TapKit. Менеджер введет сумму, нажмет кнопку и процесс обработки платежей запустится.

Подключение сервисов в MoreKit и создание процесса для построения логической схемы

Подключение Payer

Для начала необходимо подключить Payer и amoCRM к MoreKit. Для подключения Payer необходимо сначала получить token для доступа к API для работы с виджетом.

Необходимо отправить запрос на почту support@catcode.io, где необходимо указать ID аккаунта в amoCRM, в котором установлен виджет Payer, название виджета и цели использования API.

После получения токена, подключаем сервис


Вводим необходимые данные для подключения сервиса

Подключение amoCRM

В добавлении сервисов ищем amoCRM, после нажатия кнопки «Добавить» произойдет перенаправление на страницу amoCRM, где выбираем нужную CRM для подключения

Подключение виджета TapKit в amoCRM

В amoCRm переходим в amoМаркет, вводим в поиске виджетов Tap Kit, устанавливаем виджет

Создание процесса с типом «Другое» в MoreKit

Создаем процесс в Morekit с типом «Другое». Данный процесс может принимать в себя любые данные по ссылке, которая генерируется в первоначальном блоке.

Копируем ссылку на созданный процесс, она понадобится нам для настройки виджета Tap kit

Настройка виджета Tap Kit

После установки виджета Tap Kit создадим кнопку, по которой будет происходить отправка данных на процесс в MoreKit.
Нажимаем на кнопку Добавить в виджете, чтобы создать новую кнопку.

Выбираем тип данных, который необходимо отправить в MoreKit, в случае с текущим процессом — нам нужны сделки. Выбираем расположение кнопки, нужное содержимое и вставляем ссылку на процесс в поле Адрес отправки.


Остальные настройки устанавливаем по вкусу, например вы можете поменять расположение кнопки, выбрать цвет кнопки и поменять текст кнопки.
После установки настроен активируем тумблер «Включена», чтобы включить кнопку

После настройки и активации кнопки можно проверить работоспособность. Если перейти в сделку — увидим кнопку. Жмем кнопку !

Теперь переходим в события нашего созданного процесса, увидим лог, в котором будут входящие данные, содержащие информацию о сделке, с карточки которой была нажата кнопка

Как видим — отправка данных из сделки успешно произошла. Можно приступить к настройке процесса с Payer.

Настройка процесса и выстраивание схемы

Первым делом подготовим базу в amoCRM. Создадим поле Внесение платежа, в которое менеджер будет вводить сумму, которую принес клиент для оплаты платежей, созданных в Payer

Параллельно с этим — добавим платежей в виджете Payer. В данном примере добавили несколько платежей, общей суммой в 10.000р

После добавления нового поля в amoCRM необходимо нажать на кнопку Обновить в карточке сервиса amoCRM в Morekit, так как MoreKit еще не знает о новом созданном поле

Выстраивание схемы

После успешного подключения сервисов и добавления виджета Tap Kit можно приступать к выстраиванию логической схемы. Схемы будет выглядеть следующим образом:

И часть схемы внутри цикла (для перехода в тело цикла нажми на карандашик):

Описание блоков схемы

#73 — Создание текущей даты, необходимо для фиксирования даты фактической оплаты платежа

#6 — Создание даты сдвигом на 1 день вперед, необходима для фиксирования даты для планируемой даты оплаты платежа

#4 — Поиск сделки по ID из входящих данных, полученных по кнопке. Далее в процессе можно обращаться к нашей сделке через подсказки при открытии маски

#3 Блок подсчета — менеджер будет вводить сумму в рублях для удобства. Для работы с Payer все данные должны передаваться в копейках. Данный блок переведет введенную сумму в копейки

#1 — Получаем список платежей по ID сделки. Из блока есть два выхода, выход вправо по галочке — когда в сделке будет хоть один платеж и выход вниз по крестику — когда платежи отсутствуют

#5 — если платежей в сделке не будет, создаем оплаченный платеж. Передаем дату фактической оплаты, созданную в блоке #6 и передаем сумму в копейках

#14 — Создаем переменную средства_для_оплаты, записывая в нее сумму в копейках, данная переменная будет использоваться в теле цикла и перезаписываться после каждого платежа

#7 — цикл, который будет перебирать наши платежи. В поле Для каждого обращаемся к нашему списку платежей из блока #1

Далее описаны блоки внутри цикла

#85 — проверка, чтобы перебирались только платежи без оплаты. При переборе каждого элемента проверяем значение переменной средства_для_оплаты, что значение в ней не равно 0, так как подразумеваем, что если 0 — то доступные средства для оплаты у клиента закончились

Следующая проверка #76 будет сравнивать количество денег у клиента и сумму по текущему платежу. В зависимости от суммы платежа процесс будет разветвляться

#77 — если средства клиента равны сумме по платежу, либо больше чем сумма платежа — обновляем платеж. В данном блоке:
ID платежа — получаем из текущего элемента цикла

ID сделки — получаем либо из входящих данных, либо из блока #4 поиска сделок

Сумма платежа в минимальных единицах — передаем текущую сумму по платежу, тем самым закрывая текущий платеж

Дата фактической оплаты — передаем дату фактической оплаты из #6 блока

#79 — считаем остаток средств, который остался у клиента, вычисляем разность между доступными средствами для оплаты клиента и текущей суммой платежа

#78 — перезаписываем переменную средства_для_оплаты актуальной суммой после закрытия платежа, которая осталась у клиента. Не забудьте поставить галочку перезаписи переменной в данном блоке

Далее нижняя ветка от проверки #76

#81 — подсчет суммы для остатка оплаты. Вычитаем из текущей суммы по платежу доступные средства для оплаты клиента

#80 — создаем новый платеж, в сумму в минимальных единицах передаем остаток подсчитанной оплаты в блоке #81, в поле даты — дату ожидания платежа из блока #73, где создавалась дата со сдвигом на день

#82 — Обновляем текущий платеж на доступные средства для оплаты клиента, указывая фактическую дату оплаты

#84 — так как был создан платеж на остаток суммы и обновлен текущий платеж, записываем 0 в переменную средства_для_оплаты

В цикле все блоки сделаны, выходим из цикла

#88 — переводим оставшиеся средства назад в рубли для заполнения в поле в amoCRM

#87 — обновляем поле внесения платежа в сделке в amoCRM. Если сработал блок #5 и процесс не проходил через цикл, заполняем 0, если процесс прошел через цикл — заполняем оставшиеся средства в рублях

Проверяем работоспособность схемы

Переходим в сделку в amoCRM. Заполняем поле Внесение платежа, в данной документации введем 2000 рублей и нажимаем на созданную кнопку Отправить платеж

Проверяем результат

Как видим, перед отправкой был платеж на 2500 рублей. После отправки оплатилось 2000 рублей, создался новый платеж на 500 рублей, при этом поле «Внесен платеж» обновилось на 0

Подводим итоги

В данной статье рассмотрели кейс по обработке платежей Payer. Менеджер вводит в поле необходимую сумму, которую принес клиент для оплаты платежей, нажимает на кнопку отправки платежа, MoreKit перебирает платежи клиента по сделке и закрывает их, создавая новые платежи на остаток средств по оплате.