Stripe Connect & Rails - Часть 1
Это третья часть моей серии статей об интеграции Stripe Connect в приложение ruby on rails.
Недавно я работал над приложением, которое должно было предоставить пользователям торговую площадку, где они могут выступать как покупателями, так и продавцами товаров / услуг. Самой сложной задачей для меня было то, как мы собираемся обрабатывать платежи, комиссии за бронирование, скидки и все остальное, что может быть брошено нам при работе с деньгами.
Что еще более важно, как нам все это свести в красивую центральную систему? На помощь пришла платформа Stripe’s connect. Универсальное решение для обработки платежей в рыночном стиле, которые переходят от пользователя к пользователю через платформу.
Поэтому я подумал, что немного напишу и попытаюсь объяснить, как все концепции и функции могут сочетаться друг с другом, в серии блогов. В этом первом посте я подробно расскажу о концепциях и требованиях, с которыми вам нужно будет ознакомиться. Затем, начиная со второй части, мы создадим приложение rails, которое реализует все это на практике!
Если вы хотите сразу перейти к обучению, переходите ко второй части!
Привет сообществу!
Я, честно говоря, не могу похвалить Сообщество разработчиков Stripe, да и безупречную Документацию Stripe достаточно. Примите участие, и вы получите всю необходимую помощь.
Итак, давайте начнем, требования / особенности
- Пользователи должны иметь возможность проверять свои кредитные карты, и мы должны иметь возможность идентифицировать их как уникальных клиентов из Stripe.
- Организаторы должны иметь возможность регистрировать свой бизнес, чтобы получать платежи или обрабатывать возмещения.
- Платформа должна иметь возможность взимать плату за каждое бронирование.
- Платформа должна позволять нам кредитовать пользователей платформы.
Настройка платформы
Итак, приступим и создадим учетную запись Stripe. Как только все будет готово, перейдите к своим настройкам и перейдите на вкладку Подключить.
Первое, что вам нужно понять, это разницу между тем, что Stripe называет автономными и управляемыми учетными записями:
Автономная учетная запись Stripe - это обычная учетная запись Stripe, которая контролируется владельцем учетной записи: пользователем вашей платформы.
Напротив, управляемые аккаунты полностью контролируются платформой.
Оценив свои потребности, я решил настроить хосты как отдельные учетные записи.
Вас, вероятно, больше всего интересуют автономные аккаунты, если вы:
- Хочу приступить к работе как можно быстрее. (Платформы, которые не управляют учетными записями, намного проще настроить и требуют гораздо меньше пользовательского кода.)
- Есть пользователи, которые уже являются пользователями Stripe.
- Живете в стране, в которой еще не поддерживаются управляемые аккаунты.
Автономные учетные записи
В основном это типы аккаунтов, которые ваши Хосты должны будут использовать для приема платежей. И для этого Stripe рекомендует использовать их поток oAuth. Просто чтобы нам было понятно, как это может выглядеть:
- Как уже зарегистрированный пользователь в нашем приложении, я хочу подключить свой бизнес к Stripe, создав новую учетную запись Stripe или подключив уже существующую.
- Начиная со страницы вашего сайта, Хост нажимает кнопку / ссылку / что-то, что приведет их к Stripe, передавая
client_id
вашей платформы. - На веб-сайте Stripe пользователю будет предложено подключиться или создать свой бизнес-аккаунт Stripe.
- Затем пользователь будет перенаправлен обратно на ваш сайт (ваш
redirect_uri
), передав либо код авторизации, либо ошибку (если запрос на подключение был отклонен). - Затем ваше приложение использует эту информацию о токене OAuth и добавляет необходимые данные в свою запись.
- Последующие запросы 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. Во второй части мы создадим небольшое приложение для тех из вас, кто предпочитает практическое обучение;)
Спасибо за чтение и дайте мне знать, если заметите какие-нибудь ошибки или странности.