Безопасная сделка от Тинькофф Оплаты: как автоматизировать и обезопасить расчеты для онлайн-площадок и маркетплейсов
У эквайрингового сервиса Тинькофф Оплаты есть сервис по управлению расчетами между клиентами онлайн-площадок и маркетплейсов — безопасная сделка. Она помогает автоматизировать и защитить переводы между физлицами.
В статье рассказываем, как работает безопасная сделка и как ее применяют наши клиенты — Авито и сервис по переводу чаевых CloudTips.
Обычно маркетплейсы, биржи фрилансеров, стриминговые платформы, сервисы клининга и другие онлайн-площадки связывают между собой физлиц, но при этом в сделках не участвуют. Из-за этого у площадок возникают проблемы.
Площадка не может гарантировать честное исполнение сделки. Например, продавец в маркетплейсе продает сломанный товар, а покупатель не может вернуть деньги.
Если площадка не контролирует сделки, она не может на них зарабатывать. Пользователи обмениваются деньгами лично, переводят друг другу на личные карты, а площадка не получает вознаграждение.
Площадка рискует деньгами пользователей и своей репутацией. Бывает, что площадка косвенно участвует в расчетах, деньги пользователей проходят через ее счет. Например, так бывает на биржах фриланса: заказчики зачисляют деньги для оплаты работы фрилансеров, они уходят на счет биржи. Но тут есть риски и для площадки, и для пользователей.
Например, налоговая накладывает арест на счет биржи фриланса. В итоге фрилансеры не могут получить деньги за свою работу. Они пишут негативные отзывы, а площадка теряет пользователей.
Как раз в этих случаях поможет внедрение безопасной сделки. Давайте посмотрим, как это работает.
Безопасная сделка — инструмент, который помогает защитить расчеты между пользователями: покупатель бронирует товар или услугу, а продавец получает деньги, только когда покупатель подтвердил, что с товаром все в порядке.
Представим, что у нас маркетплейс. Вот как это выглядит:
Покупатель бронирует товар или услугу и предоставляет данные своей карты.
Банк замораживает деньги на счете покупателя.
Перевод идет напрямую: с карты покупателя на карту продавца. Расчетный счет площадки в процессе не участвует. Поэтому деньги пользователей защищены: даже если счет площадки арестуют, пользователи все равно получат свои выплаты.
При этом площадка видит информацию о списаниях и контролирует весь процесс в личном кабинете: подтверждает операции, делает частичный или полный возврат денег, выгружает подтверждения оплат или возвратов.
Получается, с безопасной сделкой площадка:
Гарантирует пользователям честность сделок.
Контролирует весь процесс расчетов.
Не рискует своей репутацией, потому что ее счет никак не участвует в расчетах.
Но это еще не все.
Обычно банк может заморозить деньги на карте покупателя от 4 до 6 дней при отложенном заказе. Например, покупатель выбрал товар в маркетплейсе и оплатил его — формально он видит смс об оплате, но деньги замораживаются. Если через 6 дней не будет подтверждения, что он принял товар, то произойдет отмена списания: деньги вернутся на карту покупателю.
Для маркетплейсов это неудобная схема. Если покупатель выбрал доставку Почтой России, то он может прийти за посылкой в течение двух недель. В пунктах выдачи Boxberry товары хранятся до двух месяцев. Получается, через 6 дней придет возврат, хотя товар еще не получен.
Тинькофф Оплата может заморозить деньги на карте покупателя в один день, а выплату продавцу сделать через два месяца. Если через 6 дней покупатель не подтвердил, что получил товар, а площадка не отменила заморозку денег, то деньги переходят на транзитный счет банка и могут лежать там до 60 дней. Это помогает площадке подстраиваться под разные правила хранения у служб доставки.
Площадка может зарабатывать на безопасных сделках: сделать эту опцию отдельной услугой и брать вознаграждение. Площадка как бы говорит пользователям: «Если вы хотите обмениваться товарами без риска, платите вот такую комиссию, я все проконтролирую». Если сделка завершится успешно, то есть покупатель оплатит товар, а продавец получит деньги, то площадка получит вознаграждение.
Площадка сама устанавливает, какое вознаграждение хочет получить с закрытых сделок. Например, покупатель оплачивает товар в 5000 рублей, а в счете видит 5500 рублей вместе с вознаграждением площадки.
Тинькофф берет комиссию при списании денег со счета покупателя и при выплате продавцу. В целом по закрытой сделке комиссия составляет от 3% — с каждым партнером договариваемся отдельно. Эту комиссию площадка зашивает в свое вознаграждение. Когда сделка завершится, Тинькофф возьмет свою комиссию и отправит площадке ее часть вознаграждения.
Например, площадка хочет получать 500 рублей с каждой завершенной сделки, когда покупатель и продавец обменялись товарами и деньгами. Из этих 500 рублей площадка заплатит комиссию банку.
Иногда бывает, что сделка не завершилась. Например, покупатель оплатил товар, но не забрал его из пункта выдачи, и деньги ему вернулись. В этом случае Тинькофф берет комиссию за покупку, а за выплату — нет.
Авито: безопасная сделка увеличила продажи между регионами
«Мы внедрили безопасную сделку от Тинькофф Оплаты в 2018 году. С тех пор увеличились продажи между регионами: почти всю доставку товаров мы проводим с безопасной сделкой.
Раньше продавцу было страшно отправлять товар неизвестному человеку: не было гарантии, что покупатель оплатит. А покупатель был не защищен от некачественного товара.
Теперь схема такая:
1. Покупатель бронирует товар, банк замораживает деньги на его карте.
2. Продавец отправляет товар курьером или через службу доставки.
3. Когда покупатель забирает товар, площадка получает об этом оповещение и подтверждает выплату денег продавцу.
Если товар не доставили или он пришел покупателю испорченным, мы разбираемся в ситуации и можем подтвердить полный или частичный возврат.
Тинькофф Оплата умеет замораживать деньги на любое время. Поэтому нам удобно работать с разными службами доставки: в Boxberry товар может ждать покупателя 21 день, а в Почте России — около 2 месяцев».
Андрей Новокрещенов,
Старший технический специалист Авито
С безопасной сделкой площадка может настроить, как часто делать выплаты физлицам: переводить деньги мгновенно после выполнения условий договора или копить мелкие переводы, а потом за раз выводить крупную сумму.
Такой формат удобен, например, для сервисов по выплате чаевых. Посетители кафе переводят небольшие суммы чаевых, они накапливаются, а потом сервис выплачивает официанту сразу крупную сумму.
Другой пример — выплаты для фрилансеров на биржах фриланса. Выплаты от заказчиков могут накапливаться на счете фрилансера, потом он может их вывести одной суммой.
Площадка сама настраивает, какое вознаграждение с суммы хочет получать и как часто. Например, по закрытым сделкам деньги могут приходить на счет площадки уже на следующий день.
CloudTips: «Принимаем чаевые по картам и без расчетного счета»
«CloudTips — первый банковский сервис для безналичных чаевых от CloudPayments. Благодаря ему клиенты ресторанов могут оставлять безналичные чаевые лично официанту. Мы работаем с Gett, iGooods, FoodBand, ресторанами Ginza Project, 354 Exclusive Height и другими заведениями по всей России.
Расчеты между гостями и официантами происходят при помощи безопасной сделки от Тинькофф Оплаты. Деньги идут напрямую со счета гостя на счет официанта, расчетный счет ресторана не участвует.
Чтобы оставить электронные чаевые, гостям не нужно авторизовываться в сервисе CloudTips и привязывать карту. Деньги будут накапливаться на транзитном счете в Тинькофф до тех пор, пока официант не привяжет свою карту, чтобы получить выплату».
Дмитрий Спиридонов,
Сооснователь и генеральный директор CloudPayments
Тинькофф следит за подозрительной активностью на площадках клиентов и собирает статистику. Банк составляет портрет поведения мошенников и помогает блокировать подозрительные аккаунты на этапе регистрации.
Если банк обнаружит, что перевод совершается на карту мошенника, он сразу же передаст эту информацию площадке. Так она сможет разобраться в ситуации и остановить платеж.
Авито: подозрительные карты можно добавить в черный список
«Обманывают и продавцы, и покупатели. Тинькофф помогает нам обучать пользователей, как защитить себя от мошенников. Например, банк сделал серию роликов про разводы в интернете, в том числе и про мошенничество на Авито.
В личном кабинете мы можем следить за каждой сделкой и вмешиваться, если что-то идет не так. Например, мы можем добавить данные подозрительной карты в черный список, и на них невозможно будет совершить платеж.
Тинькофф поддерживает наши идеи и работает быстро: например, за два дня перекрасили платежную форму в фирменные цвета и поставили на ней логотип Авито. Это тоже защищает от мошенников: форму с логотипами и в фирменных цветах сложнее подделать».
Андрей Новокрещенов,
Старший технический специалист Авито
Для подключения безопасной сделки не нужно открывать расчетный счет в Тинькофф — достаточно подать заявку и провести интеграцию. Подключение занимает неделю: все процессы подробно описаны, а технические специалисты готовы ответить на все вопросы. За проведение сделок Тинькофф Оплата берет фиксированную комиссию от 3%. Чтобы подключить безопасную сделку, оставьте заявку.
Безопасная сделка от «Тинькофф Оплаты» для автоматизации расчетов онлайн-площадок и защиты их клиентов от мошенников
Фото: depositphotos.com —>
Маркетплейсы, онлайн-площадки частных объявлений, биржи фрилансеров и другие подобные сервисы имеют одну общую черту: их пользователи хотят быть уверенными в том, что их не обманут. Если купленный товар или оплаченная услуга не соответствуют ожиданиям, нужно дать возможность быстро и без лишних телодвижений вернуть потраченные деньги. И, конечно, надо защитить посетителей от мошенников, иначе они уйдут на другие ресурсы, где все это реализовано. Что в свою очередь негативно скажется на популярности сервиса и может поставить под угрозу весь бизнес.
Есть готовое решение: безопасная сделка от «Тинькофф Оплаты». В ней заложена простая, но в то же время очень эффективная идея. Суть в том, что человек сначала бронирует товар или услугу, а продавец получает оплату только тогда, когда покупатель подтвердил, что все в порядке.
Схема такая: покупатель предоставляет данные своей карты, после чего банк замораживает на ней деньги на сумму покупки. Когда услуга оказана или товар получен в пункте выдачи, площадка получает уведомление об удачной сделке, отправляет подтверждение в банк, а тот в свою очередь осуществляет перевод с карты покупателя на карту продавца. Если же покупатель решил отказаться от сделки, потому что получил не то, что хотел, или не получил ничего, он может сделать это буквально в один клик, и замороженные на его карте деньги снова становятся доступны.
При этом площадка видит информацию о списаниях и контролирует весь процесс: подтверждает операции, делает частичный или полный возврат денег, выгружает подтверждения оплат или возвратов. Таким образом, площадка гарантирует пользователям честность сделок, не рискуя при этом своей репутацией, поскольку сама в расчетах не участвует.
Есть еще одна причина для того, чтобы использовать сервис безопасной сделки от «Тинькофф Оплаты». Обычно банк может заморозить деньги на карте на срок от четырех до шести дней. Когда покупатель выбрал товар в маркетплейсе и оплатил его, приходит СМС об оплате, но деньги еще никуда не ушли. Если через шесть дней не будет подтверждения, что он принял товар, произойдет отмена списания: заблокированная сумма вернется на карту покупателя.
Для маркетплейсов это неудобная схема. Доставка «Почтой России» занимает минимум несколько дней, и потом посылка может еще до двух недель пролежать в отделении, пока за ней не придет получатель. В пунктах выдачи Boxberry срок бесплатного хранения — семь дней, но покупатель может его продлить (правда, за это придется доплатить). То есть через шесть дней может прийти возврат, хотя сам товар еще не получен.
«Тинькофф Оплата» может сделать выплату продавцу через два месяца после блокировки средств. Если через шесть дней покупатель не подтвердил, что получил товар, а площадка не отменила заморозку денег, то они переходят на транзитный счет банка и могут лежать там до 60 дней. Это помогает площадке подстраиваться под разные правила хранения у служб доставки.
Бизнес — о преимуществах безопасной сделки
Андрей Новокрещенов старший технический специалист Авито Мы внедрили безопасную сделку от Тинькофф Оплаты в 2018 году. С тех пор увеличились продажи между регионами: почти всю доставку товаров мы проводим с безопасной сделкой. Раньше продавцу было страшно отправлять товар неизвестному человеку: не было гарантии, что покупатель оплатит. А покупатель был не защищен от некачественного товара. Теперь схема такая: покупатель бронирует товар, банк замораживает деньги на его карте, продавец отправляет товар курьером или через службу доставки. Когда покупатель забирает товар, площадка получает об этом оповещение и подтверждает выплату денег продавцу. Если товар не доставили или он пришел покупателю испорченным, мы разбираемся в ситуации и можем подтвердить полный или частичный возврат. Тинькофф Оплата умеет замораживать деньги на любое время. Поэтому нам удобно работать с разными службами доставки: в Boxberry товар может ждать покупателя 21 день, а в Почте России — около 2 месяцев.
Тинькофф помогает Авито обучать пользователей. Например, банк сделал серию роликов про разводы в интернете, в том числе и про мошенничество на Авито. Кроме того, благодаря сервису Тинькофф оплата у Авито появилась возможность заносить подозрительные карты в черный список, после чего на них невозможно отправить платеж.
С безопасной сделкой площадка сама может выбирать, как часто делать выплаты физлицам. Можно переводить деньги мгновенно, а можно копить мелкие переводы, чтобы потом вывести за раз крупную сумму. Такой формат удобен, например, для сервисов по выплате чаевых.
Безопасную сделку использует CloudTips — первый банковский сервис для безналичных чаевых. С ним работают Gett, iGooods, FoodBand, рестораны Ginza Project, 354 Exclusive Height и другие заведения по всей России. С его помощью клиенты ресторанов могут оставлять безналичные чаевые лично официанту.
Чтобы оставить электронные чаевые, гостям не нужно авторизовываться в сервисе CloudTips и привязывать карту. Деньги накапливаются на транзитном счете в Тинькофф до тех пор, пока официант не привяжет свою карту, чтобы получить выплату.Тинькофф следит за подозрительной активностью на площадках клиентов и собирает статистику. Банк составляет портрет поведения мошенников и помогает блокировать подозрительные аккаунты на этапе регистрации.
Если банк обнаружит, что перевод совершается на карту мошенника, он сразу же передаст эту информацию площадке. Так она сможет разобраться в ситуации и остановить платеж.
Для подключения безопасной сделки не нужно открывать расчетный счет в Тинькофф банке — достаточно подать заявку и провести интеграцию. Это занимает не больше недели. Все процессы подробно описаны, а технические специалисты банка готовы ответить на все вопросы по подключению.
Неравный бой — Tinkoff эквайринг. Рекуррентные платежи
В рамках разработки нашего SaaS решения для автоматизации процессов кар-шерингов и авто-ренталов CarSense, перед нами стояла задача реализации системы рекуррентных платежей (Добавление карт пользователями для дальнейшего безакцептного списания).
Изначально мы использовали YooMoney, но крайне высокая комиссия не позволяла нам остаться на нем, в связи с чем было принято решение перейти на иной сервис эквайринга. Мы выбрали Tinkoff эквайринг. Данное решение стоило нам нескольких недель интеграции. В то время как в случае с ЮКассой интеграция заняла пару дней.
Пролог
С самого начала стало понятно, что будет это непросто, так как документация совершенно не помогает в интеграции, а, зачастую, вообще не описывает что и как должно работать. В интернете я не нашел ничего хотя бы отдаленно похожего на завершенное решение.
Интегрироваться с этим самостоятельно человеку в здравом уме не представляется возможным.
Но мы не такие, поэтому нам нужно было сделать свой клиент для организации приема платежей. Единственным источником правды был репозиторий реализации клиента на Flutter (ссылка) (что абсолютно небезопасно учитывая что все ключи хранятся прямо в нем). Выяснив, что сделать с этой документацией ничего нельзя, я начал реверсить то, что они написали в этом репозитории и адаптировать под клиент на бекенде.
В предыдущих реализациях нашего мобильного приложения мы уже пользовались этим клиентом, но отказались в силу того что НЕЛЬЗЯ ХРАНИТЬ СЕКРЕТНЫЕ КЛЮЧИ НА КЛИЕНТЕ! Следовательно, делаем вывод что как-то оно работает.
Сам процесс разбора кода мы описывать не будем, кому интересно, могут сами пройти по ссылке и попробовать разобраться.
Клиент мы реализовывали на TypeScript и Nodejs. Потому и примеры реализации будут на нем.
Сам Тиньков предоставляет нам схему (ссылка) по которой оно как бы работает.
Говоря о рекуррентных платежах мы видим следующую картину:
Что происходит между этими двумя вызовами никто описать не удосужился. Помимо прочего существует метод AddCard который присутствует в Flutter клиенте, и отсутствует в документации. Однако RemoveCard в документации есть. Есть ответы на которые нету вопросов, дальше это станет ясно.
Реализовать все с использованием этого метода наверное можно, но в силу того, что из документации его судя по всему удалили, пользоваться им мы не будем.
Опишем наш базовый клиент
signRequestPayload необходим для того, чтобы подписывать наши запросы. Здесь описана рабочая реализация того как это должно быть.
Init — Первичное создание платежа
Данный метод нужен для того чтобы инициализировать платеж, но сам платеж при этом не создается.
Теперь используем данные нашей карты. Их нужно зашифровать следующим образом
Для того, чтобы платеж создать нужно использовать метод FinishAuthorize.
Создаем из полученных данных acsUrl на который направим клиента
Добавлю вам пример на EJS того, что должно быть на этой странице, потому что Тиньков этого сделать не придумал
В колбек мы указали свой сервер, где перехватим ответ от 3DS, следующим образом
В документации вы об этом ничего не найдете. Там просто отсутствует информация о том, что делать после FinishAuthorize.
Делаем это с картой Visa / MS, вроде бы работает да? Теперь пробуем добавить карту Мир. Не работает вообще ничего.
Это, и множество других, неинформативных, бессмысленных сообщений мы получим дальше.
Работа с картами МИР и иными картами поддерживающими 3DS V2
Казалось бы что на сегодняшний день, когда образовалось огромное количество сложностей для работ зарубежных платежных систем Тиньков в первую очередь должен обеспечить работу карт Мир. Однако никто даже не парился о том, чтобы в документации доступно объяснить процесс интеграции. Об это там написано 1.5 слова, что нужно вызвать метод Check3DSVersion. На этом все заканчивается.
Мы потратили непростительное количество времени, чтобы это преодолеть. Но я очень сомневаюсь, что кто-то помимо нас готов бы был на это. Поддержка совершенно не помогает, они не обладают информацией о том, как работает сервис.
Зачастую они либо просто пропадают и игнорируют вопросы, либо предлагают решения не относящиеся к предмету проблемы.
Для того чтобы заставить это творение работать с картами 3DS V2 действительно необходимо вызвать метод проверки версии.
Но помимо этого, нужно поменять сам запрос FinishAuthozire и привести его к следующему виду.
О том что эти данные должны быть в DATA в документации ничего не написано. Без них метод работать не будет.
Интересно, что в Flutter клиенте перед его вызовом есть метод CollectData, который 1 — не нужен, 2 — неправильно написан в самом клиенте, настолько он не нужен (ссылка)
Если он не нужен, то уберите его, а если нужен, то сделайте, чтобы он работал
submit3DS для 3DS V2
Ну и сам ASCUrl V2
В зависимости от версии выбираем тот или иной метод генерации
Очень важный момент. URLSearchParams превращает симовл «%3D» в «%253D».
Это ломает процесс интеграции. Чтобы этого избежать я делаю так .toString().replace(«%253D», «%3D»)
Страница для вызова ACS
Заключение
Я не знаю каков статус продукта Tinkoff Acquiring но Текущее его состояние абсолютно неприемлемо. Выглядит так будто проект заброшен и им никто не пользуется.
На гитхабе есть один жизнеспособный клиент и это https://github.com/MadBrains/Tinkoff-Acquiring-SDK-Flutter/, но нельзя хранить приватные ключи в мобильном клиенте. Любой школьник в состоянии вытащить приватные ключи и откатить все проведенные транзакции. Прошу команду Тиньков обратить внимание на данный пост, сделать выводы и привести сервис в достойное состояние.
Надеюсь данная статья поможет другим командам.
Сказать «Спасибо»: USDT TRC20 TPVQGCoPbyDZfcjAxVi1VmdApkVCifoqcm
Как настроить эквайринг в Django. Пример с банком Тинькофф
Значит открыт расчётный счёт и подключена облачная касса, с помощью которых мы будем принимать и обрабатывать платежи на сайте.
Какие данные нам для этого понадобятся?
1) Заходим во вкладку Магазины и создаём Интернет-Магазин
2) заходим в карточку созданного магазина
3)во вкладке способы оплаты подключаем нужные способы
4)заходим во вкладку терминалы, и видим два терминала тестовый и рабочий. Начнём работать с тестовым терминалом тот, что слева. т.е. в своём коде будем указывать его данные. Кнопку настроить можно не трогать, мы вручную(через код) в методе Init с помощью json, будем указывать нужные нам страницы успеха и страницы ошибок. А пока нажимаем на кнопку Тестировать
5) Здесь указаны карточки с помощью которых мы сможем получить нужные тесты при оплате.
6) Во вкладке Формирование чека дополнительные тесты для чеков.
Прежде чем приступить к реализации интеграции по API стоит понять общий принцип работы.
Вы создаёте функционал приёма заказов на Вашем сайте с соответствующей формой, по событию Submit, которой вы получаете id пользователя(допустим на вашем сайте есть авторизация), контактные данные, id выбранного товара и количество, цена с учётом скидок и промокодов т.е. в совокупности вы получаете ID этого заказа, который сохраняется в вашей базе данных. И это совершенно обычная процедура.
И в шаблоне, в атрибуте action этой формы, ведущего в представление во Views, вы создаете запрос метода Init, на инициализацию с необходимыми параметрами(которые получаются в request обычно через POST, обрабатываются необходимым нам образом, и отправляются в json формате через POST на url банка, который принимает метод Init в обработку), в массиве POST передаются ID заказа, сумма, описание и прочая информация в том числе для формирования кассового чека.
Другими словами, вы отправляете этот запрос на сервер Тинькофф Банка через конечную точку API. нужные Url и формат json для запросов нужно узнать в их документации по API
Сервер Тинькофф Банка обрабатывает запрос и формирует ответ, содержащий платежный URL и другую необходимую информацию, которую мы тоже получаем в json формате, и самое главное для нас сейчас это этот URL.
response = requests.post(url, json=payment_data)
Получив этот url и сделав редирект на него, мы отправляем пользователя на сайт банка в котором он заполнит платёжную форму либо сделает оплату по QR коду.
Поэтому Вам не нужно городить огород с принятием платёжных данных от пользователя, номера карты или qr кодов, эта операция по формированию платёжной формы привязанной по переданному ID заказа в нашей системе, и ответственность за её конфиденциальность и безопасность, ложиться на плечи банка.
Другими словами, Сервер Тинькофф Банка в качестве результата отправленного метода init, сгенерирует для вас платежный URL, по которому вы сможете перенаправить пользователя на платежную форму. Этот URL-адрес обычно содержит уникальный идентификатор платежа или другой идентификатор, который можно использовать для обратной связи платежа с вашим заказом. Получив после инициации платежа данные с нужным URL, Вы только перенаправляете пользователя на этот URL-адрес платежа, где он вводит свои платежные реквизиты и завершает транзакцию.
После завершения транзакции сервер Тинькофф Банка обратно редиректит пользователя на ваш сайт(и также в POST передаёт на ваш сервер детали транзакции), на соответствующие страницы вашего сайта, которые были указаны в json запросе во время Init или в настройках терминала в WEB интерфейсе на сайте банка.
Страница успеха SuccessURL, Страница ошибок FailURL, Страница уведомлений NotificationURL
подробнее о всех параметрах запроса по каждому методу, например init смотрим на их сайте
уведомление, отправленное сервером Тинькофф Банка, обычно содержит тот же идентификатор или идентификатор платежа, а также другие сведения о транзакции, такие как статус транзакции, сумма и валюта. Вы можете использовать эту информацию для обновления записей и уведомления пользователя о статусе транзакции.