9.5 Примеры и руководства
Last updated
Last updated
Так как Bubble API позволяет сторонним сервисам связываться с вашим приложением, реализация для каждого из них будет отличаться. Вот 3 примера использования Bubble API в реальных ситуациях.
Типичный вариант использования Bubble API - осуществление вашим приложением каких-либо действий в случае, когда что-то происходит на стороне другого сервиса. В нашем случае произойдет несколько шагов как на стороне Bubble, так и на стороне Stripe. Мы начнем с того, что у нас есть приложение, в котором уже установлен плагин Stripe с настроенными во вкладке Плагины ключами. Мы также предположим, что процессы оплаты сохраняют ID пользователя в Stripe в сущности пользователе, нам нужно, чтобы он из ID, предоставляемого Stripe, попал в сущность пользователя, чтобы получить его/её адрес электронной почты.
В данном примере мы предполагаем, что домен приложения
https://stripeexample.bubbleapps.io
Начнем со стороны Bubble. Нам нужно задать точку входа API, которая будет срабатывать при ошибке списания средств с карты. Этот API процесс должен содержать действие, отправляющее пользователю письмо с сообщением, предлагающим ему или ей обновить данные карты. Поэтому, давайте начнем с создания нового API события, которое назовем "chargefailed" (ошибкасписания).
Мы создаем эту точку входа публичной, чтобы Stripe смог её запустить через webhook (см ниже), и для простоты сделаем возможным её запуск без аутентификации.
Посмотрев документацию (!!!ЛНК!!!) Stripe мы видим, что он посылает при срабатывании вебхука. Сервер Stripe делает запрос к нашей точке входа и посылает в теле запроса ID события. Поэтому мы добавляем параметр ID текстового типа к нашему вызову.
Использовать действие Send Email для отправки пользователю письма.
Использовать ID, отправленный Stripe, для получения "объекта События"/"Event object" (!!!ЛНК!!!). Это событие содержит ID покупателя и объект оплаты.
Выполнить поиск по базе данных для того, чтобы получить пользователя с данным ID покупателя.
Написать дружелюбное напоминание.
Начнем с добавления действия и заполним поле "Кому"/"To". При этом, нам важно понять, что нам нужно и от этого строить дальнейшие действия. Поэтому, мы начнем с поиска пользователей, добавим ограничение по полю "ID покупателя"/"Customer ID" и в качестве значения зададим результат API вызова от Stripe. Вот такой будет поиск.
API процедура называется "Get Stripe event", и нам нужно отправить именно тот event_id, который был получен от Stripe с первоначальным запросом (вебхуком). Этот параметр является первым в выпадающем списке, выбираем его.
На этом этапе мы извлекли "объект События Stripe"/"Stripe Event object" , и нам нужно получить "ID Покупателя"/"Customer ID" и выражение для поиска будет готово.
Теперь мы можем вернуться к полю "Кому"/"To" действия Send Email и получить email пользователя. Обратите внимание, что поиск возвращает список пользователей. В данном случае мы знаем, что Customer ID уникален для каждого пользователя, но нам нужно получить первый элемент в списке, чтобы перейти от списка пользователей к конкретному пользователю, а затем получить его email.
Теперь мы можем завершить действие добавлением сообщения, которое хотим послать.
Мы настроили все на стороне Bubble. Подытожим, что делает наш процесс:
Получает ID События, посланный Stripe через вебхук.
Запрашивает Event object и получает Customer ID
Осуществляет поиск по базе дынных приложения и получает пользователя по этому Customer ID
Посылает email пользователю, которого нашел поиск.
Полный адрес для этого процесса, как описано в справочнике (!!!ЛНК!!!):
https://stripeexample.bubbleapps.io/api/1.1/wf/chargefield
Этот пример описывает создание системы, в которой пользователи могут включать и отключать еженедельную рассылку. Мы затронем логику и процессы для настройки еженедельного действия, а содержание письма трогать не будем.
Начнем с активации API для POST/Процессов (POST/Workflow API) для нашего приложения во вкладке Настройки. Обратите внимание, что для этого у вас должен быть платный тариф.
API для GET/Данных позволяет читать данные программными методами. Это можно делать с помощью другого приложения, но также с помощью скриптов для сохранения или вывода данных на экран. Этот пример показывает, как это сделать на языке Python. Мы напишем этот скрипт для приложения, которое находится на домене yourapp.com и наша цель - получить все чеки. Это предполагает, что в нашем приложении есть тип с названием "invoice". Ограничений мы не добавляем, но это легко сделать, как описано в справочнике (!!!ЛНК!!!).
Ключевая идея в таком скрипте - разбивка на страницы (!!!ЛНК!!!). Когда вы делаете запрос по API, вам нужно задать, откуда начинать и сколько элементов запросить. Каждый ответ от GET API будет возвращать количество оставшихся элементов. В нашем примере нам нужно начать с увеличенного на один значения последнего элемента предыдущего вызова.
Такой скрипт может использоваться (и адаптироваться) для сохранения данных вместо их вывода, отображать данные, подходящие под какие-то ограничения и т.д.
Теперь мы можем начать создание действия "Послать Email"/"Send Email". Нам нужно сделать следующее:
Для получения ID покупателя из предыдущего события плагин Stripe предоставляет процедуру, которая извлекает "объект События"/"Event object" по "ID События"/"Event ID". При этом Stripe проверяет "ID События"/"Event ID" и возвращает "объект События"/"Event object". Из этого объекта вы можете получить ID Покупателя в Stripe. Итак, нам нужен источник данных "Получить Данные по API"/"Get Data from an API".
Перейдем в Stripe для настройки вебхука. Что нам нужно? При ошибке оплаты, отправить вебхук по дынной ссылке. Это делается здесь (!!!ЛНК!!!).Готово! При ошибке оплаты, отправляется вебхук, и Bubble посылает пользователю письмо. Исполнение такого процесса можно увидеть в Логах сервера (!!!ЛНК!!!).
После этого перейдем на страницу API и создадим новое повторяющееся событие.
Давайте назовем это событие "Newsletter" (Рассылка). Подписка на рассылку закрепляется за пользователем, поэтому выберем пользователя типом сущности.У данного процесса будет одно действие, посылающее письмо пользователю, которого передали в этот процесс. ("Current Workflow User")Теперь мы можем перейти на страницу нашего приложения, которая будет предлагать пользователям подписаться и отписаться от рассылки. Сделаем это на очень упрощенной странице "account", на которой есть две кнопки.На этой странице нам нужно настроить два процесса. Мы предположим, что здесь пользователь уже вошел в систему и не будем беспокоиться о проверке этого на странице для примера.
Первый процесс будет подписывать пользователей. Он запускается, когда пользователь кликнул по кнопке "Opt-in", и использует действие "Set/Cancel a recurring event".Это действие принимает в качестве параметров событие и сущность. В таком случае событие "Newsletter", а в качестве сущности "Current User". Процесс мы создаем для еженедельной рассылки, начиная с 9 утра следующего дня.У процесса отписки та же самая структура, только в периодичности (Frequency) нужно поставить "none". Практически, этот процесс отменяет любое запланированное повторяющееся событие (и ничего не делает, если расписание пустое).