Перейти к содержимому

Как автоматически выставлять инвойсы в Stripe через Integromat

Как автоматически выставлять инвойсы в Stripe через Integromat

Обновлено: 19.09.2021

Привет. В этой статье я расскажу, как выставлять инвойсы в Stripe автоматически. Stripe нужен для того, чтобы можно было принимать платежи с пластика (обычные банковские карты). Разумеется, вам понадобится зарегистрированный аккаунт в Stripe и привязанный банковский счет для вывода денег.

Использовать мы будем опять же, Trello, и сценарий, который я описывал здесь.

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

Итак, вот как выглядит сценарий:

Полный сценарий с выставлением счетов
Полный сценарий с выставлением счетов

Как видим, модулей Stripe здесь довольно много, это потому, что у него несколько иная схема выставления счета, нежели в Paypal.

Определяем сценарий работы в Trello

Как вы помните из статьи про инвойсы в пейпале, в моем случае инвойсы выставляются при перемещении карточки в столбец. По умолчанию инвойс выставляется в пейпале. Чтобы инвойс выставился в Stripe, нужно придумать условие.

В моем случае условие — это Label (Метка) в карточке Trello. Метка так и называется «Stripe«. Т.е. перед тем, как передвигать карточку, менеджер должен выставить лейбл, если нам нужен именно Stripe.

Метка Stripe в карточке Trello
Метка Stripe в карточке Trello

Дорабатываем сценарий в Integromat

Далее нам нужно доработать сценарий в Integromat. Добавляем роутер перед модулем Paypal, добавляем к нему новую ветку, которая будет вести на выставление счета в Stripe. Ветку в Paypal можно сразу пометить, как запасную (Fallback route).

В ветке Stripe ставим фильтр, который будет проверять лейблы. А конкретнее — чтобы в лейблах присутствовал Stripe (определяется по id). Делается это с помощью функции map(). Нам понадобится узнать ID нашей метки через исходный код Trello, или через модуль Trello -> Get a Card.

Проверка наличия метки Stripe в карточке
Проверка наличия метки Stripe в карточке

Описание как работает функция map() и другие можно посмотреть здесь — https://support.integromat.com/hc/en-us/articles/360001986513-Mapping

Другие примеры использования этой функции — здесь https://codelessman.com/kak-avtomaticheski-vystavljat-invojsy-v-paypal-cherez-integromat/

Выставление инвойса в Stripe пошагово

Дальше в моем сценарии снова идет роутер, позже я объясню зачем. А пока добавляем модуль Stripe -> Make an API Call и добавляем аккаунт (для этого понадобится API ключ, найдете в личном кабинете).

Да, нам нужно будет обращаться к API, готовых действий, нужных нам, в модуле нет. Благо в Stripe отличная документация.

UPDATE: на момент написания статьи готовые действия уже появились, поэтому можно использовать их. Это проще и быстрее.

Принцип создания инвойса такой же:

  1. Создаем клиента (Create customer).
  2. Создаем кусочек инвойса (Create invoice item).
  3. Создаем инвойс и включаем в него тот кусочек (Create invoice).
  4. Финалим черновик инвойса, чтобы его можно было отправлять.

Ну а ниже я опишу, как делал это через запросы к API.

Создание клиента

Первым делом нужно создать клиента. В модуле Stripe -> Make an API Call заполняем следующие поля:

  • URL: /v1/customers
  • Method: всегда будет POST
  • Body: здесь нам понадобиться имя клиента и его имейл. Вытащить можно из карточки трелло при помощи модуля Set variables.

Вот как выглядит модуль с заполненными полями:

Создание клиента в Stripe
Создание клиента в Stripe

Остальные поля не трогаем.

Создаем Invoice Item (кусочек инвойса)

Кусочек инвойса в данном случае, это часть, из которого он может состоять. Это полезно, когда в инвойс нужно добавить несколько частей. В моем случае это всегда одна часть, но её все равно нужно создать перед созданием самого инвойса.

Копируем предыдущий модуль Stripe и заполняем поля:

  • URL: /v1/invoiceitems
  • Body: customer=45.body.id&amount=Prepayment field* 100&currency=eur

Про Body поясню: customer — это переменная с ID клиента из предыдущего модуля (его нужно разок прогнать, чтобы хотя бы 1 раз клиент создался). Amount — сумма в центах для части инвойса, я сразу умножаю на 100. Currency: валюта.

Вот как выглядит модуль с заполненными полями:

Создание части инвойса в Stripe
Создание части инвойса в Stripe

Сумму можно опять же, вытянуть из кастомного поля в Trello.

Создание инвойса

После выставления части инвойса, его можно включить в основной инвойс и создать его.

Копируем предыдущий модуль Stripe и заполняем поля:

  • URL: /v1/invoices
  • Body: customer=45.body.id&auto_advance=false&collection_method=send_invoice&days_until_due=60&description=Order number:{{14.idShort}}

Где customer — ID клиента, которого мы создали в первом модуле, auto_advance отключаем, чтобы «самому управлять статусами инвойса», тут подробнее — https://stripe.com/docs/billing/invoices/overview#auto_advance, collection_method выставляем send_invoice, days_until_due — дни, сколько живет инвойс до оплаты, description — что нибудь, что вы хотите вставить в описание инвойса, например номер заказа из Trello.

Вот как выглядит модуль с заполненными полями:

Создание инвойса Stripe
Создание инвойса Stripe

Финалим инвойс

После этой процедуры инвойс переходит из статуса черновика в статус «открытый» и его можно оплатить.

Копируем предыдущий модуль Stripe и заполняем поля:

  • URL: /v1/invoices/{{48.body.id}}/finalize
  • Body: auto_advance=false

Где {{48.body.id}} — ID инвойса из предыдущего модуля.

Вот как выглядит модуль с заполненными полями:

Открытие инвойса для оплаты в Stripe
Открытие инвойса для оплаты в Stripe

Результатом работы данного модуля будет готовый урл с инвойсом, так называемый hosted invoice. Тут подробнее https://stripe.com/docs/billing/invoices/hosted.

Урл можно отправлять самому в письме, или сделать, чтобы Stripe сам отправлял письмо клиенту на указанный имейл.

Отправка инвойса менеджеру и клиенту

Что можно делать дальше?

  1. Отправлять клиенту на почту фирменное письмо с урлом инвойса.
  2. Отправлять уведомление в Telegram.
  3. Записывать ID клиента в нужную строку Google Sheets.
  4. Постить комментарий в карточку Trello.

Все с помощью соответствующих модулей.

Вот как выглядит комментарий в трелло (в данном случае инвойс с пейпала):

Комментарий в Trello с инвойсом Paypal
Комментарий в Trello с инвойсом Paypal

Если клиент в Stripe уже есть

Если по заказу (карточке) несколько платежей, то логично чтобы инвойсы создавались для одного клиента, а не создавался каждый раз новый клиент.

Для этого доработаем сценарий:

  1. Перед первым модулем Stripe с созданием клиента ставим роутер.
  2. Ветку с созданием нового клиента ставим как запасную (Fallback route).
  3. В новой ветке ставим фильтр, который проверяет наличие ID клиента в кастомном поле в карточке Trello. (записывать ID клиента в это поле можно после создания клиента при первой оплате).
  4. Если фильтр обнаружит, что ID клиента присутствует, то сценарий пойдет по этой ветке. А в ней мы просто дублируем все то же самое, кроме модуля Stripe с созданием клиента.
Создание инвойса Stripe для существующего клиента
Создание инвойса Stripe для существующего клиента

Вот, в принципе и вся схема. Если будут вопросы — задавайте. В следующей статье расскажу, как мониторить оплаты, рефанды и ошибки платежа в Stripe.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *