BinKing — инструмент для создания королевских форм приёма банковских карт. BinKing позволяет по номеру карты получить логотип банка, цвета, номер телефона, логотип бренда и прочее. Также BinKing помогает в валидации таких форм. Используйте BinKing, чтобы создать умную и отзывчивую форму для приёма банковских карт. Увеличьте конверсию, увеличьте лояльность пользователей, снизьте нагрузку отдела поддержки.
Для использования плагина вам понадобится API ключ (пока не работает, но это временно) или данные из архива. Ключ и архив можно получить в личном кабинете на сайте BinKing. Перечень доступных банков и стран смотрите на этой странице.
Демонстрация использования плагина доступна на JSFiddle. Эта демонстрация является частью подробного гайда по созданию платёжной формы. Рассказываем и показываем, как подключить этот плагин, как сделать автоматический перенос курсора в следующее поле, как сделать валидацию формы и много другое. В тексте статьи содержится полный пример кода, который можно просто скопировать к себе и использовать. При желании вы легко сможете его доработать под свои нужды.
В основе продукта лежит API (программа, которую могут использовать другие программы + возможность выкачать базу данных архивом), которое позволяет определить логотип банка, его фирменные цвета, бренд (Visa, MasterCard, и т.д.) и прочее по 6 первым цифрам номера карты. BinKing нужен тем, кто создаёт форму для приёма банковских карт у себя на сайте, чтобы улучшить UX (удобство, впечатления, чувство безопасности) пользователей.
Такие формы сделали все крупные компании. Живой пример можете увидеть при оплате чего угодно через Яндекс.Кассу или практически в любом мобильном приложении банка: когда вы начинаете вводить номер карты, форма перекрашивается в цвета этого банка, а рядом появляется логотип. Каждая из этих крупных компаний реализовала собственное решение для определения логотипа и цветов. Если это решение реализовали все крупные компании, значит в нём есть ценность. Если крупные уже сделали, а мелкие ещё нет, значит это восходящий тренд.
Однако, крупные компании уже давно сделали свои формы такими, а мелкие всё ещё нет. Почему? Создание такого решения для своей формы займёт около 7 дней работы программиста и ещё 7 работы дизайнера (логотипы выкачивать, обрабатывать, перерисовывать) — примерно 200 000 ?. Крупные компании могут себе позволить потратить 200 000 ? на создание такой формы. Мелкие компании считают ценность такой формы не достаточной, чтобы платить за неё 200 000 ?.
BinKing позволит превратить уже существующую форму для приёма банковских карт в такую же, как у Яндекс.Кассы, за пол дня работы программиста. Я предполагаю, что после выхода BinKing определение логотипа банка и цветов банка для платёжных форм станет стандартом. Потому что такие формы лучше. Потому что теперь такие формы смогут позволить себе все.
Нюансы
Для того, чтобы использовать BinKing сейчас необходимо приобрести доступ к архиву с логотипами банков и базой бин-кодов. Архив можно использовать для подключения как самостоятельно, так и с помощью специального плагина.
BinKing всё ещё в разработке. Сейчас API работает, но только в демо.
Пример подключения архива с помощью специального плагина
Имея архив с базой данных, вы можете воспроизвести работу API на своей стороне. Ниже пример кода с использованием Node.js и фреймворка express. Работа показанного в примере API идентична работе того API, которое будем представлять мы.
const express = require('express')
const fs = require('fs')
const path = require('path')
const app = express()
const banks = fs.fileReadSync(path.resolve(__dirname, 'path/to/data/banks-all.json'))
const bins = fs.fileReadSync(path.resolve(__dirname, 'path/to/data/bins-all.json'))
const withLogos = bank => {
return {
...bank,
bankLogoBigOriginalSvg: bank.bankAlias + '-big-original.svg',
bankLogoBigInvertedSvg: bank.bankAlias + '-big-inverted.svg',
bankLogoSmallOriginalSvg: bank.bankAlias + '-small-original.svg',
bankLogoSmallInvertedSvg: bank.bankAlias + '-small-inverted.svg',
formBankLogoBigSvg: bank.bankAlias + '-big-' + bank.formLogoScheme + '.svg',
formBankLogoSmallSvg: bank.bankAlias + '-small-' + bank.formLogoScheme + '.svg',
}
}
app.get('/form', (req, res) => {
const { cardNumber } = req.query
const cardNumberCuted = cardNumber.replace(/D/g, '').substr(0, 6)
const bankAlias = bins[cardNumberCuted]
const bank = banks[bankAlias]
if (!bank) return res.send('null')
res.send(withLogos(bank))
})
app.get('/bank', (req, res) => {
const { bankAlias } = req.query
const bank = banks[bankAlias]
if (!bank) return res.send('null')
res.send(withLogos(bank))
})
app.get('/banks', (req, res) => {
const { banksAliases } = req.query
const result = banksAliases.split(',').map(bankAlias => {
const bank = banks[bankAlias]
return bank ? withLogos(bank) : null
})
res.send(result)
})
Предыстория
Полтора года назад я был романтически настроенным разработчиком-мечтателем. Я создавал опенсорс проекты за респект и уважуху и анонсировал их на хабре habr.com/users/iserdmi/posts. Мои проекты нравились аудитории. Мне было приятно приносить пользу и получать обратную связь от пользователей крупнейшего IT-сообщества, и мне было этого достаточно. Тогда я думал, что просто пишу полезный код и дарю его другим, а на самом деле я делал продукты, но не понимал этого.
Я тогда создавал форму приёма банковских карт на сайте заказчика. Позже заказчик попросил сделать так, чтобы форма работала также как форма в Яндекс.Кассе: пользователь начинает вводить номер карты, сама форма перекрашивается в фирменные цвета банка, а в углу появляется его логотип. Я был уверен, что сейчас найду нужный плагин (чужой код, который делает то, что тебе нужно, и ты можешь использовать его в своей программе), который принимает на входе номер карты, а на выходе отдаёт нужные мне данные: цвета и логотип, и вставлю их в форму. В итоге оказалось, что такого плагина нет. И тут либо 2 недели выкачивать логотипы, подбирать цвета и соотносить названия банков с начальными цифрами номеров карт, либо забить. В общем, вот она боль: то что я думал сделать за 1 час, оказалось гораздо более ресурсозатратной задачей. Ещё можно было спарсить все нужны данные из самой Яндекс.Кассы, но это другая история.
Я решил создать очередной опенсорс проект. Как раз тот самый плагин, который я искал и не нашёл. Создание продукта начинается не с кода, не с дизайна, не с логотипа и даже не с названия. Создание продукта начинается с боли Я её обнаружил и испытал. Это был правильный шаг с точки зрения создания продукта, в отличие от всех последующих совершённых мной шагов.
Я просто почему-то решил, что этот плагин всем будет нужен, написал код плагина github.com/iserdmi/card-info/blob/master/README.ru.md, написал документацию, создал демо страницу, подготовил статью на хабр habr.com/post/324738 и в свой блог, и выложил всё единовременно.
Что я сделал неправильно с точки зрения продуктологии? В общем-то всё. Я не проверил гипотезу, я не делал прототипа, я не проводил исследований, я не выставлял KPI, я не определил целевую аудиторию, я сделал функционал избыточным, я не выпускал продукт до того момента, пока мне не показалось, что он достиг идеальной формы. Я был ужасным продуктологом.
Но я был везучим продуктологом. Пользователи хабра встретили статью положительно, кучу лайков в карму наставили. Плагин попал в тренды гитхаба. Я получил обратную связь, что если бы продукт был реализован в качестве API, а не плагина, то его разработчики использовали бы его более охотно. Я зарёкся, что добавлю банки других стран, расширю функциональность и превращу плагин в платное API. Короче, я получил подтверждение того, что продукт пользователям интересен, и понимание, что конкретно нужно делать дальше.
Почему после этого я полтора года ничего не делал? Не знаю. Был летящим программистом, что сказать. Но теперь я летящий предприниматель с бэкграундом менеджера продукта, и у меня есть команда, с которой мы вместе доведём этот продукт до ума.
Что с CardInfo?
CardInfo — всё. Вывожу из эксплуатации. Пожалуйста, приготовьтесь.
Где взять архив?
У меня. Сейчас отдам дёшево, как доделаю будет дороже.
Kalobok
Я бы не очень доверял сервису, который начинает с такой «рекламы».
SERGE10D1N Автор
Я действую по принципу стартап-компаний: «Start small». Мне стоит доверять, потому что у меня есть положительный опыт разработки и выведения на рынок многопользовательских приложений и веб-сервисов. А также моя деловая репутация говорит о том, что все мои клиенты, партнёры и заказчики всегда были мной довольны. Честное слово. (В десятых годах был один интернет-магазин, которому не понравился дизайн, который я им предоставил, это единственной случай недовольства за всю мою многолетнюю практику работы).
Пара слов обо мне, как специалисте, чтобы отбросить вопросы по поводу моей компетенции:
DmitriyTitov
Как-то куцо. Если есть что написать — не надо стесняться! Как, к примеру, в школе дела шли? Куда идёт ведомая вами команда?
Раскройте себя немного, чтобы к продукту полное доверие было.
SERGE10D1N Автор
В школе я был ударником. Оценки всякие были и тройки, и двойки, больше четвёрок, конечно, ну и пятёрки тоже были. Команда идёт к успеху.
barbanel
Котлетки вас не бесят? =)
SERGE10D1N Автор
Какие котлетки? Вообще котлетки люблю, конечно :–)
maaGames
Мне стоит доверять, честное слово :)
Вы же понимаете, что ни один серьёзный проект не будет использовать малоизвестный непроверенный плагин для работы с банковскими данными?
В идеале, это должен быть opensource проект с кодом на каком-нибудь гитхаб, который любой может проверить на наличие закладок, уязвимостей и прочих способов воровства передаваемых данных. При этом увеличивается вероятность недобросовестного использования, но, серьёзные организации так не делают и они купят у вас лицензию. При условии, что библиотека будет надёжно и стабильно работать и её уже проверит куча безопасников… Замкнутый круг… пока плагином не пользуются. никто его и проверять не станет, а пока он не проверен, его никто не будет использовать… Как вариант, нанимать независимых экспертов по безопасности для анализа библиотеки и публикацией результатов. Включая отчёт по обнаруженным уязвимостям и их исправлениям. Это вызовет гораздо больше доверия, чем «слово пацана даю, что всё ОК работает».
SERGE10D1N Автор
Код веб-сервиса на гитхабе: github.com/JSBND/binking-main
Код плагина на гитхабе: github.com/JSBND/binking
В архиве просто данные: логотипы банков (большие и маленькие, цветные и белые), база данных бинов и банков.
Вы можете написать свой код для использования данных из архива. К продаже я сейчас предлагаю только сам архив с данными. В то же время у этого продукта уже есть позитивная история, раньше он назывался CardInfo. В ближайшее время CardInfo будет выведен из эксплуатации.
Yuriy_krd
Почему при заходе на ваш сайт и появлении внизу плашки о cookies есть только кнопка «принять»? Где кнопка «отказаться»? О каком доверии можно тогда говорить?
SERGE10D1N Автор
Там вообще нету плашки о приёме кукис.
Yuriy_krd
ваша ссылка в названии компании LLC SureTask ведет на сайт suretask.com. Вы утверждаете, что там нет плашки?
SERGE10D1N Автор
На SureTask.com действительно есть. Я говорил про binking.io
А на suretask.com вы или принимаете cookies или не пользуетесь сайтом. Если хотите отказаться, просто закройте сайт.
SERGE10D1N Автор
Вообще, спасибо за рекомендацию. Текст поправил
shtirlitz1945
Да и заголовок "BinKing готов" изрядно напоминает "BinKing всё".
Может это со мной что-то не так, не знаю.
SERGE10D1N Автор
Готов — значит готов к эксплуатации.
aszhitarev
А если в слове «готов» поменять ударение, то или получится BinKing готской субкультуры или BinKing старогерманских племён.
SERGE10D1N Автор
Забавная версия :–) Но не соответствующая действительности.