Интеграция платежной системы Cloudpayments с вашим проектом

Author Автор: Роман Чернышов    Опубликовано: 4 июня 2021

cloudpayments интеграцияСегодня немыслим ни один бизнес без возможности приема платежей онлайн, будь то интернет-магазин или сервис по предоставлению персональных услуг, ввиду чего как нельзя актуальным становится услуга интернет-эквайринга(возможность приема платежей картами Visa, MasterCard, Maestro, Visa Electron или Мир), которую предоставляет такой сервис как Cloudpayments. Данный сервис примечателен в первую очередь гибкостью настроек, позволяющих произвести интеграцию с вашим проектом с максимальной эффективностью — реализовав более обширный функционал, нежели в случае работы с другим сервисом интернет-эквайринга, а также стабильностью работы и исчерпывающей документацией. Далее я проведу краткий обзор его возможностей.

Варианты интеграции

Сервис Cloudpayments

Сервис предоставляет несколько вариантов интеграции(так называемых продуктов) с вашим проектом, с помощью прямого взаимодействия с API, путем размещения виджета или использования мобильных пакетов SDK(для взаимодействия с Apple Pay, Google Pay), также есть плагины для быстрой интеграции с несколькими десятками популярных CMS.

API и доступные методы

Данные передаются в формате Json, методом POST на сервер Cloudpayments.

Пример запроса на оплату по криптограмме:

{
    "Amount":10,
    "Currency":"RUB",
    "InvoiceId":"1234567",
    "IpAddress": "123.123.123.123",
    "Description":"Оплата товаров в example.com",
    "AccountId":"user_x",
    "Name":"CARDHOLDER NAME", // CardCryptogramPacket Обязательный параметр
    "CardCryptogramPacket":"01492500008719030128SMfLeYdKp5dSQVIiO5l6ZCJiPdel4uDjdFTTz1UnXY+3QaZcNOW8lmXg0H670MclS4lI+qLkujKF4pR5Ri+T/E04Ufq3t5ntMUVLuZ998DLm+OVHV7FxIGR7snckpg47A73v7/y88Q5dxxvVZtDVi0qCcJAiZrgKLyLCqypnMfhjsgCEPF6d4OMzkgNQiynZvKysI2q+xc9cL0+CMmQTUPytnxX52k9qLNZ55cnE8kuLvqSK+TOG7Fz03moGcVvbb9XTg1oTDL4pl9rgkG3XvvTJOwol3JDxL1i6x+VpaRxpLJg0Zd9/9xRJOBMGmwAxo8/xyvGuAj85sxLJL6fA=="
    "Payer":
      { 
        "FirstName":"Тест",
        "LastName":"Тестов",
        "MiddleName":"Тестович",
        "Birth":"1955-02-24",
        "Address":"тестовый проезд дом тест",
        "Street":"Lenina",
        "City":"MO",
        "Country":"RU",
        "Phone":"123",
        "Postcode":"345"
    }
}

Пример ответа (некорректный запрос):

{ "Success": false, "Message": "Invalid Amount value" }
  • Аутентификация запросов;
  • Идемпотентность API;
  • Тестовый метод;
  • Оплата по криптограмме;
  • Обработка 3-D Secure;
  • Оплата по токену (рекарринг);
  • Подтверждение оплаты;
  • Отмена оплаты;
  • Возврат денег;
  • Выплата по криптограмме;
  • Выплата по токену;
  • Просмотр транзакции;
  • Проверка статуса платежа;
  • Выгрузка списка транзакций;
  • Выгрузка токенов;
  • Создание подписки на рекуррентные платежи;
  • Запрос информации о подписке;
  • Поиск подписок;
  • Изменение подписки на рекуррентные платежи;
  • Отмена подписки на рекуррентные платежи;
  • Создание счета для отправки по почте;
  • Отмена созданного счета;
  • Просмотр настроек уведомлений;
  • Изменение настроек уведомлений;
  • Запуск сессии для оплаты через Apple Pay.

Платежный виджет

Виджет — представляет собой форму, для ввода данных пластиковой карты с целью проведения дальнейшей оплаты. Для размещения формы на сайте достаточно вставить в страницу, HTML и JavaScript код, в несколько строк. Настройка виджета производится путем изменения параметров доступных в его коде.

Виджет

Пример кода вставки виджета:

Строка кода ниже, вставляется в страницу сайта в секцию HEAD.

<script src="https://widget.cloudpayments.ru/bundles/cloudpayments"></script>

Для вывод платежной формы на странице в сплывающем окне, необходимо вызвать функцию метода pay, передав в него параметр auth(двустадийная оплата) или charge(одностадийная оплата):

this.pay = function () {
 var widget = new cp.CloudPayments();
    widget.pay('auth', // или 'charge'
        { //options
            publicId: 'test_api_00000000000000000000001', //id из личного кабинета
            description: 'Оплата товаров в example.com', //назначение
            amount: 100, //сумма
            currency: 'RUB', //валюта
            accountId: 'user@example.com', //идентификатор плательщика (необязательно)
            invoiceId: '1234567', //номер заказа  (необязательно)
            skin: "mini", //дизайн виджета (необязательно)
            data: {
                myProp: 'myProp value'
            }
        },
        {
            onSuccess: function (options) { // success
                //действие при успешной оплате
            },
            onFail: function (reason, options) { // fail
                //действие при неуспешной оплате
            },
            onComplete: function (paymentResult, options) { //Вызывается как только виджет получает от api.cloudpayments ответ с результатом транзакции.
                //например вызов вашей аналитики Facebook Pixel
            }
        }
    )
};
 
$('#checkout').click(pay); // И прописать вызов функции на событие, например, нажатие кнопки «Оплатить»:

Схемы проведения платежа

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

Схема проведения платежа

Одностадийная оплата

Для оплаты достаточно сформировать и отправить одну команду на сервер Cloudpayments, по результатам работы которой будет произведена
авторизация платежа и последующее списание средств со счета плательщика.

Двухстадийная оплата

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

Типы платежей

Очень удобно реализованы типы платежей с возможность разового или регулярного списания, в случае покупки клиентом подписки на сервис, например.

Разовый платеж

Все просто, пользователь вводит данные своей карты и производить разовый платеж, к особенностям можно отнести поддержку оплаты по криптограмме и токену сгенерированному на основе неё, при чем все эти методы доступны по API. Что позволяет интегрировать Cloudpayments с любым проектом, будь то сайт или мобильное приложение с поддержкой Google Pay и Apple Pay.

Рекуррентные платежи

Списание средств по подписке, очень удобная функция при продаже например услуг вашего сервиса по подписке. Пользователю не нужно постоянно производить оплату вручную, достаточно единожды ввести данные своей карты. По заверениям Cloudpayments, у них этот тип платежа реализован особенно удачно, в отличии от других сервисов интернет-эквайринга(где бывает произвольное удаление подписки, или напротив сложности с отменой и т.д.), но давать оценку можно будет только после тестирования на длительной дистанции(я к сожалению такой тест пока не проводил).

Уведомления

Самым заметным отличием сервиса Cloudpayments является возможность широкой настройки Callback(или Webhook) уведомлений на адрес вашего проекта о различных событиях происходящих в момент оплаты. Это позволяет реализовать очень гибкий функционал взаимодействия вашего проекта с сервисом приема платежей, а также с вашим клиентом(пользователем производящим оплату). Стоит отметить, что более обширных возможностей я не встречал ни у одного интернет-эквайринга(но уверен аналоги все же есть). Есть возможность настройки способа передачи данных GET или POST, а также задать кодировку.

Поддерживаются уведомления следующих типов:

Check уведомление — Запрос на проверку платежа
Pay уведомление — Уведомление о принятом платеже
Fail уведомление — Уведомление о об отклоненном платеже
Confirm уведомление — Уведомление о проверке платежа
Refund уведомление — Уведомление о возврате платежа
Receipt уведомление — Уведомление об онлайн чеке
Kkt уведомление — Уведомление об статусе кассы
Recurrent уведомление — Уведомление об изменении статуса подписки
Cancel уведомление — Уведомление об отмене платежа

На стороне вашего проекта, при получении уведомлений, рекомендуется проверять статус, сумму, дату и ID клиента.

Скрипт обработки Pay уведомления(пример):

$AccountId = (string) $_POST['AccountId'];
$Amount = (float) $_POST['Amount'];
$Status = (string) $_POST['Status'];
$DateTime = (string) $_POST['DateTime'];
 
if($AccountId && $Amount && $Status == 'Completed') { // Проверка AccountId, суммы и статуса
     // Выполняем необходимые действия на стороне проекта
}
 
//В ответ на запрос система ожидает получить ответ в JSON-формате с обязательным параметром code:
$response = ['code' => 0];
 
echo json_encode($response);

Уведомления настраиваются в личном кабинете сервиса, в дополнении ко всему там также есть раздел «Системный журнал», позволяющий просматривать логи всех HTTP запросов уведомлений, что также крайне удобно при отладке проекта.

Тарифы

Сервис хорош во всем, но не стоит забывать о тарифах и комиссиях взымаемых им при проведении платежей. Судя из описания условий сотрудничества можно предположить, что сервис предоставляет гибкие тарифы в зависимости от масштаба вашего проекта. Отталкиваться же стоит примерно от таких данных: Верификация и доступ к сервису 1500руб., абонентская плата в месяц 900руб., комиссия за перевод 3.9%(но не менее 3.9руб.), комиссия при отмене платеже 0.5руб.(кстати ранее я не встречал комиссию за отмену платежа у какого либо другого сервиса). На самом сайте Cloudpayments данных о тарифах я не нашел, есть только форма запроса для их получения.

Заключение

Если вы рассматриваете варианты сервисов предоставляющих услугу интернет-экварийнга, то я рекомендую рассмотреть возможность сотрудничества с Cloudpayments, а то что касается технической части данного вопроса, то я всегда буду рад помочь вам с интеграцией сервиса с вашим проектом!

Пишите, буду рад помочь!

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Оформить предзаказ
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка