Stripe Connect & Rails - Часть 1

Это третья часть моей серии статей об интеграции Stripe Connect в приложение ruby ​​on rails.

Прочтите часть 2 здесь

Прочтите часть 3 здесь

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

Что еще более важно, как нам все это свести в красивую центральную систему? На помощь пришла платформа Stripe’s connect. Универсальное решение для обработки платежей в рыночном стиле, которые переходят от пользователя к пользователю через платформу.

Поэтому я подумал, что немного напишу и попытаюсь объяснить, как все концепции и функции могут сочетаться друг с другом, в серии блогов. В этом первом посте я подробно расскажу о концепциях и требованиях, с которыми вам нужно будет ознакомиться. Затем, начиная со второй части, мы создадим приложение rails, которое реализует все это на практике!

Если вы хотите сразу перейти к обучению, переходите ко второй части!

Привет сообществу!

Я, честно говоря, не могу похвалить Сообщество разработчиков Stripe, да и безупречную Документацию Stripe достаточно. Примите участие, и вы получите всю необходимую помощь.

Итак, давайте начнем, требования / особенности

  1. Пользователи должны иметь возможность проверять свои кредитные карты, и мы должны иметь возможность идентифицировать их как уникальных клиентов из Stripe.
  2. Организаторы должны иметь возможность регистрировать свой бизнес, чтобы получать платежи или обрабатывать возмещения.
  3. Платформа должна иметь возможность взимать плату за каждое бронирование.
  4. Платформа должна позволять нам кредитовать пользователей платформы.

Настройка платформы

Итак, приступим и создадим учетную запись Stripe. Как только все будет готово, перейдите к своим настройкам и перейдите на вкладку Подключить.

Первое, что вам нужно понять, это разницу между тем, что Stripe называет автономными и управляемыми учетными записями:

Автономная учетная запись Stripe - это обычная учетная запись Stripe, которая контролируется владельцем учетной записи: пользователем вашей платформы.

Напротив, управляемые аккаунты полностью контролируются платформой.

Оценив свои потребности, я решил настроить хосты как отдельные учетные записи.

Вас, вероятно, больше всего интересуют автономные аккаунты, если вы:

  • Хочу приступить к работе как можно быстрее. (Платформы, которые не управляют учетными записями, намного проще настроить и требуют гораздо меньше пользовательского кода.)
  • Есть пользователи, которые уже являются пользователями Stripe.
  • Живете в стране, в которой еще не поддерживаются управляемые аккаунты.

Автономные учетные записи

В основном это типы аккаунтов, которые ваши Хосты должны будут использовать для приема платежей. И для этого Stripe рекомендует использовать их поток oAuth. Просто чтобы нам было понятно, как это может выглядеть:

  1. Как уже зарегистрированный пользователь в нашем приложении, я хочу подключить свой бизнес к Stripe, создав новую учетную запись Stripe или подключив уже существующую.
  2. Начиная со страницы вашего сайта, Хост нажимает кнопку / ссылку / что-то, что приведет их к Stripe, передавая client_id вашей платформы.
  3. На веб-сайте Stripe пользователю будет предложено подключиться или создать свой бизнес-аккаунт Stripe.
  4. Затем пользователь будет перенаправлен обратно на ваш сайт (ваш redirect_uri), передав либо код авторизации, либо ошибку (если запрос на подключение был отклонен).
  5. Затем ваше приложение использует эту информацию о токене OAuth и добавляет необходимые данные в свою запись.
  6. Последующие запросы API могут выполняться от имени подключенной учетной записи с использованием ранее упомянутых учетных данных из токена.

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

В сводке

  • у нас будет уникальный идентификатор для нашей платформы (STRIPE_CONNECT_CLIENT_ID)
  • наши пользователи (продавцы) будут иметь уникальный идентификатор, связанный с полосой учетной записи их соответствующего бизнеса (UID)
  • У наших продавцов будет ключ, привязанный к нашей учетной записи Stripe, который в сочетании с их UID разрешает запросы API (PUBLISHABLE_KEY)
  • наши пользователи (покупатели) будут иметь идентификатор клиента (который ссылается на сохраненные данные кредитной карты внутри) через объект клиента, который дает нам полоса (у нас есть косвенный доступ к их кредитным картам, НО МЫ НЕ СОХРАНЯЕМ ИХ, ПОЛОСКА ДЕЛАЕТ) . (STRIPE_CUSTOMER_ID)
  • У вас также будут обычные ключи API для вашего приложения (STRIPE_PRIVATE_KEY)

Давайте начнем

Добавление пользователей

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

Но по сути он вернет временный токен, который выглядит примерно так:

«Tok_0XXXXXXX0XXXxxxxXXxX0xX0»

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

Это будет выглядеть примерно так:

stripe_customer_id: «cus_X1XXXxXxXxX1Xx»

Имейте в виду, что это не кредитная карта, это ссылка на объект клиента, находящийся на хранении Stripe, который в сочетании с идентификатором нашей платформы мы можем использовать, чтобы запросить списание средств Полоса.

Добавление хостов

Для этого я бы рекомендовал использовать гем omniauth-stripe-connect. Если вы используете Devise для аутентификации, вы найдете идеальное соответствие.

Теперь эта часть потребует от вас перейти к настройкам на вкладке Connect в Stripe и установить redirect_uri для ваших сред. Обычно после того, как пользователь попадает в процесс omniauth и успешно регистрирует свой бизнес, Stripe будет использовать этот URI для передачи обратно объекта продавца, который содержит целый ряд сохраняемых данных учетной записи.

Самая важная часть здесь - это UID продавца, потому что он критически важен для начисления платы, но поверьте мне, вы можете извлечь много информации из возвращенного объекта. Ознакомьтесь с справкой по API.

Создание списания

По сути, теперь у нас есть все необходимое для зарядки.

  • Заказчик взимать плату
  • Торговец в кредит
  • Ссылка на рынок или платформу (которая рассматривается отдельно, но важна, если вы решите взимать плату за платформу)

Но что еще мы можем вставить в заряд? Какие у нас есть варианты? Stripe API дает вам множество возможностей.

Но вот пример того, как это могло бы выглядеть, с небольшой обработкой ошибок:

Надеюсь, этот пост прояснил некоторые концепции, с которыми вам нужно будет познакомиться при внедрении платформы Connect Platform. Во второй части мы создадим небольшое приложение для тех из вас, кто предпочитает практическое обучение;)

Спасибо за чтение и дайте мне знать, если заметите какие-нибудь ошибки или странности.