Как быстро интегрировать CloudPayments в сервис на PHP

Привет! На связи Иван Могилат, Backend-разработчик Flowwow. Делюсь библиотекой для работы с CloudPayments и рассказываю, кому она пригодится.

 

О сервисе

CloudPayments – это платежный сервис, работающий с банковскими картами Visa, MasterCard, Maestro, Visa Electron, Мир, а также системами оплаты Google Pay и Apple Pay. Позволят проводить платежные операции в любых браузерах и мобильных приложениях.

Flowwow работает с сервисом уже более пяти лет, используя его и для мобайла, и для десктопа. Какое-то время все держалось “на костылях”: решение легко встроить, если вы используете стандартную CMS (WordPress, Joomla и т.п.), но если речь идет о самописном сайте со своими особенностями и функциями, процесс интеграции требует творческого подхода.

Проблема

Выстроенная логика работала до тех пор, пока Flowwow оставался только маркетплейсом цветов: продавцы предлагали товары и сами же их доставляли, а затем получали деньги с учетом удержанной комиссии. В 2019 году мы запустили собственную курьерскую доставку: продавцы пользуются доставкой как услугой, все заботы по ее организации Flowwow берет на себя. Появилась задача встроить платежный сервис в новое приложение, связывающее продавцов и курьеров.

Решение

Мы не могли просто взять кусок кода из одного сервиса и добавить его в новый – поняли, что нужно подготовить библиотеку, которую можно будет использовать для каждого нового проекта. Учитывая, что Flowwow постоянно запускает новые направления – расширение категорий товаров, работа с оптовиками, офлайн-магазины – нам просто необходимо иметь инструмент для быстрого подключения платежей.

В итоге мы привели наработки в удобный вид и создали собственную библиотеку для обработки всех необходимых методов API на бекенде – приема платежей, отмены, возврата средств, выписки чеков и так далее. Сейчас логика работы с платежной системой отделена от основного проекта, ее легче тестировать и труднее сломать.

Результат

Результатом нашей работы с радостью делимся с вами: Cloudpayments api Library. Будет полезно всем, кто пишет сервис на PHP.

0
18 комментариев
Написать комментарий...
Александр Орлов

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

Как архитектор платформы bil24.pro напишу, что все больше покупателей выбирает, например,  СберID при оплате в форме Сбербанка. С другой стороны,  совсем малая часть наших клиентов использует для оплаты билетов CloudPayments, предпочитая работать напрямую с банками, через API. Не знаю, что там у вас сейчас с ценами на сервис, но, на мой взгляд, ваша схема проигрывает конкурентную борьбу банкам. Без обид... ) 

Ответить
Развернуть ветку
Александр Орлов

По протоколу (API)  интернет-эквайринга банков, например, Сбер или Альфа, когда передаешь в банк  bundle с данными заказа, в ответ приходит URL страницы с формой для ввода данных банковской карты. Эта страница загружается с сервера банка и передает данные карты ему же. А как в случае с CloudPayments? Какой URL у страницы с формой ввода данных карты? Она грузится с сервера CLoudPayments? 

Ответить
Развернуть ветку
Flowwow
Автор

Александр, у CloudPayments нет отдельной формы по ссылке, для оплаты данные карты передаются с криптограмой. Это одна из причин, по которой мы выбрали клауд: при оплате клиент не переходит на другой сайт.

Ответить
Развернуть ветку
Александр Орлов

То есть клиент не получает форму ввода карты из домена Сбера или Альфы,  а вводит данные на странице в вашем домене, как вы пишете  "клиент не переходит на другой сайт".  В таких случаях, когда не видно, что форма из домена банка - я не ввожу в нее данные своей карты, включая CVV код. И другим советую поступать так же.  Если банкам хоть как-то еще можно доверять, и то не всегда,  то "дарить" данные карты магазину или  СloudPayments - ну ... это как-то глупо что-ли, в нынешних условиях. 

Ответить
Развернуть ветку
CloudPayments

Александр, понимаем ваше беспокойство и объясняем: мы регулярно проходим сертификацию по стандарту безопасности PCI DSS, имеем сертификат первого высшего уровня, который есть не у каждого банка. Мы и магазин не видим ваши карточные данные (как до этого написали наши партнёры Flowwow, мы получаем зашифрованные данные криптограммой, и всё это происходит через банковский платежный шлюз) и, соответственно, не можем их сохранять. 

Ответить
Развернуть ветку
Панда Ву

Кстати, а почему сами к своим сервисам библиотеки не разрабатываете? Зачем людям тащить к себе код непонятной конторы которая в любой момент может забить на его поддержку?

Ответить
Развернуть ветку
Александр Орлов

Очень хороший вопрос,  присоединяюсь. В своих проектах мы стараемся такое third party не использовать. Кроме прекращения поддержки, код может быть с дырами, багами.  В итоге надежность центрального сервера системы зависит не от нашего собственного кода, а от глюков сторонней библиотеки. 

Ответить
Развернуть ветку
CloudPayments

Мы разрабатываем решения для различной интеграции партнеров. В том числе библиотеки на разных языках для более кастомной интеграции.

Некоторые партнеры дорабатывают код под свои нужды и делятся им с коллегами, среди этих библиотек есть очень достойные решения. Также должны подчеркнуть, что не можем гарантировать правильную работу решений CloudPayments при использовании сторонних библиотек. Коллеги из Flowwow провели большую и важную работу, и мы обязательно изучим их опыт.

Разработка библиотек с нашей стороны осуществляется в порядке очереди и библиотека для PHP в работе.

Ответить
Развернуть ветку
Александр Орлов

можете дать ссылку на ваш  сертификат PCI DSS? 

Ответить
Развернуть ветку
CloudPayments
Ответить
Развернуть ветку
Александр Орлов

А подскажите, как проверить ваш сертификат? Что он реально имеет отношение к PCI DSS? 

Тут CloudPayments не находит: 
https://www.pcisecuritystandards.org/assessors_and_solutions/payment_applications?agree=true

А так какое-то российское ООО "Дейтерий" выдало вам сертификат, как он реально связан с PCI? Я просто не знаю. Вот как потребителю как мне проверить, что сертификат подлинный. Знающие люди, подскажите пожалуйста....

Ответить
Развернуть ветку
Панда Ву

Эта контора якобы тестирует на соответствие но к PCI отношения не имеют. Одни «как бы» соответствуют, а другие «как бы» подтвердили. Междусобойчик

Ответить
Развернуть ветку
Александр Орлов

Спасибо за ответ. Заглянул на телеграм канал BadBank, сделал поиск по CloudPayments. В принципе понятно - онлайн казино, инфоцыгане, etc

Ответить
Развернуть ветку
DaemonHK

То есть нужно подключать 100500 банков вместо агрегатора? Вы нормальные? А если у банка нет API для платежей? Хотя у вас в России наверняка у каждого банка есть, но так не везде.

По поводу ТС - ссылки в статье нет, и вот тут уже косяк - все равно, что каждый магазин/студия будет предлагать свой код для подключения. А что там написано в коде, хз.

Ответить
Развернуть ветку
Александр Орлов

А вы понимаете о чем идет речь?  Зачем "подключать 100500 банков"? В этом нет никакой необходимости. продавец подключает один интернет-эквайринг одного банка, и получает деньги от продаж товаров или услуг на свой расчетный счет в этом банке.  Покупатели платят картами ЛЮБЫХ банков, в любой точке планеты. API банков давно реализованы в виде библиотек, виджетов, плагинов. . В платформах эти API реализованы на системном уровне, подключение сводится к указанию имени и пароля. Причем многие банки используют одно и то же решение, один и тот же API.    Если можно работать с банками напрямую, зачем такой посредник как CloudPayments?

Ответить
Развернуть ветку
DaemonHK

Я писал не про клауд, а про прослойку в виде представленного ТС кода

Ответить
Развернуть ветку
Александр Орлов

А-а, ясно, извините не так понял )

Ответить
Развернуть ветку
Andrey Makeev

есть ссылка в статье, если вы про эту статью) https://github.com/flowwow/cloudpayments-php-client

Ответить
Развернуть ветку
15 комментариев
Раскрывать всегда