Обновлено: 08.06.2021
В предыдущей статье я описал, как автоматически выставлять инвойсы в Paypal. В этой статье расскажу, как получать уведомления о приходе денег.
Получаем данные в модуле уведомления от Paypal
Создаем новый сценарий и называем его, например Paypal Watch Payments.
Вот как выглядит мой сценарий целиком:

В моем случае он усложнен, но для начала, чтобы все работало, нужно намного меньше модулей.
Создаем первым модулем Paypal -> New notification (Instant). Данный модуль будет мониторить все уведомления, которые будут приходить в ваш аккаунт Paypal.

Модуль сгенерирует Webhook URL, его нужно скопировать.

Дальше идем в аккаунт Paypal -> Settings -> Seller Tools ->Instant payment notifications -> Update.
На следующей странице включаем IPN и вставляем скопированный Webhook URL, сохраняем.

Теперь в модуль Paypal будут приходить все уведомления по аккаунту.
Возвращаемся к сценарию. В моем случае нужно отфильтровать все уведомления, которые не по теме. Мне нужны уведомления только по моему проекту.
Ставим фильтр сразу же после модуля Paypal -> New notificaton

Данный фильтр проверяет, содержит ли уведомление конкретный комментарий в Item name. Если да, то сценарий продолжит работу.
Например комментарий может быть такой:
codelessman.com payment: nchfd43783bncndjn43
В предыдущей статье, при выставлении инвойса я рекомендовал добавлять в комментарий ID карточки Trello, так что теперь, чтобы мы могли использовать ID карточки, нам нужно отсечь из комментария все лишнее, а именно codelessman.com payment:
Для этого используем модуль Set variable и функцию replace():

В функции replace() мы:
- ищем «codelessman.com payment:».
- заменяем на пустое значение.
На выходе получаем чистый ID карточки Trello.
Получаем карточку в Trello, по которой была оплата
С помощью модуля Trello -> Get a card и ID карточки из предыдущего модуля получаем все данные по карточке.
Дальше можно отправлять уведомление в Telegram (как настроить бота я писал здесь), примеры как выглядят уведомления здесь. Также можно записывать новые данные в Google Sheets и так далее.
Я добавляю все оплаты в Google Sheets, так что с ними можно дальше работать с помощью формул.
- Если нужно добавлять оплату в конкретную строку таблицы, то лучше всего, если в этой строке уже есть столбец с ID карточки Trello. Тогда с помощью модуля Google Sheets -> Search Rows находим нужную строку, содержащую ID карточки. Далее создаем модуль Google Sheets -> Update Row, вставляем номер строки из предыдущего модуля Search Rows и вставляем в необходимый столбец сумму оплаты.
- Если нужно суммировать несколько оплат в ячейке (предыдущие оплаты с текущей), то можно использовать такую формулу в модуле Set variable:

Где:
- parseNumber() — функция, которая забирает данные из нужной ячейки и переводит их в цифровой формат с разделителем «точка».
- далее суммируем поступившую сумму с тем, что уже есть в ячейке.
- полученный результат можем вставлять в следующих модулях.
Другие уведомления
Уведомление о совершенном возврате
Иногда случаются рефанды, такое уведомление об успешном возврате также приходит в модуль Paypal -> New notification.
Чтобы понять, что был рефанд, нам нужно сделать где-нибудь роутер и поставить на одну из веток фильтр на переменную Reason code. Я поставил роутер после модуля Trello -> Get a Card, т.к. тогда можно будет в эту карточку записать рефанд и его сумму.

Уведомление о запросе на возврат
Для отлавливания такой ситуации, делаем новую ветку в роутере:

Уведомление о закрытом споре
Когда спор закрывается, отлавливаем его следующей веткой в роутере:

После этих событий, полученные данные можно также записывать в Google Sheets, отправлять сообщения в Telegram, Trello и т.д.
Оставшуюся ветку роутера (успешная оплата) можем пометить как запасную (Fallback route).
Что еще полезного можно добавить в сценарий
Постить комментарий в карточке Trello о приходе денег
Делаем это с помощью модуля Trello -> Create a Comment on a Card
Пример настройки модуля:

А вот как это будет выглядеть в Trello:

Перемещать карточку в нужный столбец
Если для выставления инвойса нужно передвинуть карточку в определенный столбец, то после оплаты её нужно куда-то убрать. В моем случае это рабочий столбец менеджера, например «Work Viktor». В этом столбце происходит работа над оплаченными заказами конкретного менеджера.
Чтобы убрать лишние действия для менеджера, можно сразу после оплаты двигать карточку в нужный столбец с помощью модуля Trello -> Edit a Card:

- Выбираем куда перемещать (доска и список).
- Далее размечаем в какой список двигать: в зависимости от того, кто добавлен в карточку с помощью функции switch(). Про эту функцию я писал здесь. ID списков и юзеров можно заранее задать переменной Set Multiple Variables.
- Выбираем позицию в списке. Лучше в самый верх, как самую свежую по активности.
Выставлять статус в карточке Trello
В кастомных полях Trello есть тип «Выпадающий список». В нем можно создать статусы, которые будут отражать работу над заказом.
Как часть автоматизации — после успешной оплаты можно сразу выставлять статус. В моем случае это либо Оплачено, либо Часть оплачена.
Выставить статус в кастомном поле можно через модуль Trello -> Set a Custom Field on a Card

Для выставления статуса нужно узнать ID кастомного поля и ID его значения. У выпадающих списков у каждой опции есть свой ID.
Узнать ID каждой опции можно через исходный код доски или модуль Trello -> Get Custom Field Options.
Отправлять клиенту письмо с успешной оплатой
Добавляем модуль Email -> Send an Email, настраиваем и размечаем письмо, отправителя, сервер. Чуть подробнее про этот модуль я описывал здесь.
В конце сценария у меня могут быть вариации из-за типа оплаты, поэтому использую много веток в роутере, чтобы выставить правильный статус и тип оплаты в Google Sheets в зависимости от нескольких условий. Здесь подробно останавливаться не буду.

Вот так работает сценарий с получением уведомлений об оплатах в Paypal. Надеюсь, статья была полезна. Если что-то не понятно, задавайте вопросы в комментариях.

SEO-менеджер.
Люблю SEO, маркетинг, увлекаюсь автоматизацией и терпеть не могу ручную работу, которую можно делегировать роботу.