6 уроков полученных при внедрении Stripe Connect в e-commerce проекты
Практически каждый сервис в Интернете сегодня так или иначе имеет дело с деньгами. И работа с деньгами требует стабильной платежной системы для учета денег, а разрабатывать свою платёжную систему это всегда больно. Она должна быть безопасной, безотказной, без багов и очень стабильной, иначе есть риск того, что бизнес или клиенты потеряют деньги, что неприемлемо.
Мы в Mad Devs предпочитаем использовать стабильные подходящие решения которые не только хороши в работе, но так же и позволяют экономить ресурсы клиентов и команды разработки. Именно поэтому для наших клиентов мы предпочитаем использовать Stripe & Stripe Connect как альтернативу платежек написанных с нуля. Это помогает избежать множества проблем, негатива, сохранить деньги и время.
Stripe, так же как и Stripe Connect, довольно легко внедрить в систему: у них очень хорошая и подробная документация и великолепная API. Но для тех, кто только начинает работу с онлайн платежами и электронной коммерцией интеграция Stripe может повлечь неожиданные и нежелательные последствия. Эта статья описывает уроки, которые мы вынесли из интеграции Stripe Connect для бизнеса, чтобы вы, прочитав, могли предотвратить либо исправить описанные здесь проблемы/последствия.
Урок #1 Всегда авторизовывайте карты
Если вы привязываете карты к учетным записям своих пользователей или принимаете платежи по картам, убедитесь, что пользователи авторизуют карты, в противном случае у вас может быть много мошенничества, приводящего к спорам (disputes). А это стоит денег. И это может повлечь даже штрафы. Авторизация карт происходит в несколько этапов: вы запрашиваете основные данные карты и убеждаетесь, что они передаются в Stripe, чтобы он мог проверить карту. Но легко сломать такую защиту если человек украл/отсканировал чужую карту. Чтобы полностью избежать случаев использования краденых карт используйте функционал 3D Secure!
Вы можете сделать это либо установив правила в Stripe Radar, и он будет запрашивать у пользователей авторизацию своих карт. Либо сделать 3D Secure способом авторизации карт по-умолчанию. Для этого нужно установить параметр ‘request_three_d_secure’ на значение ‘any’ при создании setup/payment intent и 3D Secure будет активироваться всегда для тех карт, которые поддерживают эту опцию. Это сэкономит вам много усилий, времени и денег. 3D secure также перекладывает ответственность (liability shift) за мошенничество с вашей платформы на самого пользователя, что очень хорошо помогает при спорах (disputes).
Урок #2 Полностью настраиваемый онбординг это больно!
Stripe Connect поставляется с опциями регистрации, что означает, что вы можете регистрировать и подтверждать личность новых пользователей через Stripe компоненты: формы на которые перенаправляются пользователи вашей платформы. Либо вы можете проводить собственную регистрацию и проверку личности в вашем сервисе. Второй вариант позволяет никуда не перенаправлять пользователей и избегать даже упоминания Stripe во время регистрации и подтверждения личности. Тем не менее, даже если это кажется действительно привлекательным, это нелегкий путь. Есть много данных, с которыми нужно иметь дело (паспортные данные, адреса, язык и т.д.), много случаев, которые нужно рассмотреть (каждая страна по-разному может подтверждать платежи или иметь разные телефонные коды), и учитывать много форматирования для правильной валидации.
Вам может быть очень больно интегрировать все это в вашу платформу, и особенно на этапе MVP оно того не стоит. Итак, убедитесь, что у вас есть веская причина не использовать Stripe Express.
Урок #3 Избегайте списания денег с карточек пользователей со стороны сервера, по возможности используйте Stripe компоненты.
Как и в случае с сохранениями карточек, платежи должны осуществляться со стороны клиента (мобильного приложения, веб-сайта и т. д.), поскольку только в этом случае они могут быть надлежащим образом авторизованы. С помощью Setup/Payment Intents вы можете реализовать все виды авторизации и сразу же отслеживать ответы сервера, пока пользователь платит. Есть случаи когда вы захотите снять деньги с карты пользователя вне сеанса, однако именно здесь (особенно если была добавлена украденная карта) может возникнуть много проблем. Избегайте взимания платы с пользователей со стороны сервера и убедитесь, что они платят вам пользуясь вашим сервисом. Использовать вне сессионное списание денег стоит только в том случае если это необходимо вашей бизнес модели, например оплата месячной подписки.
Урок #4 Подготовьте систему к ошибкам, форс мажорам и другим неблагоприятным обстоятельствам.
Есть много нестандартных случаев, которые могут произойти во время ваших рабочих процессов. Stripe может начать проверку на мошенничество и временно отключить ваши учетные записи. Пользователи могут не иметь достаточно средств на своих картах. Карты могут не поддерживать 3D Secure, и так далее. Чтобы избежать этого — будьте к этому готовы. Проверьте свою интеграцию через тесты используя тестовые данные из Stripe Testing. Вы всегда должны слушать веб-хуки и обновлять состояние учетных записей пользователей, уведомляя пользователей об изменениях, блоках и т.д. + синхронизировать свои собственные рабочие процессы кода с таковыми в Stripe, поэтому в случае каких-либо задержек, неудачных транзакций, временных блокировок вы сможете показать своим пользователям что конкретно происходит чтобы они не беспокоились. Читайте о чеклисте разработки, чтобы понять в какую сторону смотреть.
Урок #5 Уделите огромное внимание веб-хукам
Одним из наиболее важных компонентов Stripe является общение с вашим сервером через веб-хуки. Stripe отправляет события, когда что-то происходит с вашей учетной записью платформы или подключенными учетными записями (Важно! Это две разные вещи!). Поэтому убедитесь, что ваша платформа имеет высокую доступность, и включите все веб-хуки, которые помогут синхронизации данных вашего сервера с данными Stripe и наоборот. Никогда не используйте polling в случае со Stripe, так как для этого потребуется много ресурсов, будет делаться огромное кол-во запросов в Stripe, которые не нужны. Всегда полагайтесь на веб-хуки и убедитесь, что вы можете обработать те из них, которые по каким-то причинам не были обработаны на вашем сервере.
Урок #6 Утвердите какие способы оплаты вы будете использовать сразу же.
Stripe предлагает различные способы оплаты, которые на первый взгляд кажутся такими очевидными, но иногда этот выбор может оказать негативное влияние на систему или не совсем вписаться в ваши процессы.
Например, destination charges & transfers могут показаться хорошей идеей, но имейте в виду, что вы переводите деньги на аккаунт не своей платформы, а подключённый аккаунт (connected account). Если вы захотите отменить платёж и вернуть деньги, на этом аккаунте может остаться отрицательный баланс. Если вы захотите закрыть этот аккаунт, то вам придется вручную перевести деньги на него, чтобы довести баланс до 0. Обратите внимание на эти детали, так как они могут запутать вас или даже стоить вам денег.
Заключение
Все вышеперечисленные уроки — лишь малая часть того, что нужно знать и изучать при работе с онлайн-деньгами и интеграцией платежных процессоров. Но такие знания позволяют сэкономить много времени, финансовых и эмоциональных ресурсов и предотвратить ужасное. Если у вас есть, что добавить в список или какие-либо предложения, которые могут помочь улучшить эту статью, не стесняйтесь комментировать и присылайте нам свои отзывы по адресу team@maddevs.io.
Ранее статья была опубликована тут.