Подключение интернет-магазина к Activepay
Существует две возможности подключения к Activepay через API.
Подключение Интернет-магазина по API с редиректом: пользователь после подтверждения покупки на сайте продавца перенаправляется на страницу Activepay. Далее покупатель выбирает способ оплаты и оплачивает покупку. После оплаты покупки производится перенаправление пользователя на страницу магазина, которая указывается владельцем в «Личном кабинете» во время подключения к системе. Мы рекомендуем этот способ владельцам малых и средних магазинов как простой и быстрый.
Подключение к Activepay через API: владелец Интернет-магазина будет принимать оплату товара или услуги на своей странице и передавать информацию о платеже в процессинговый центр Activepay скрытыми HTTP-запросами. Не все подключенные платежные системы поддерживают этот метод подключения. Мы рекомендуем этот способ владельцам крупных магазинов и сервисов.
При обоих случаях подключения общий алгоритм выглядит как:
- Управление передано процессингу ActivePay
- Проводится транзакция
- Магазин по специальным адресам (URL_OK и URL_FAILED) уведомляется о статусе транзакции
Для облегчения интеграции, вы можете воспользоваться готовыми библиотеками для подключения к Activepay. Их список и ссылки для скачивания содержатся в последнем разделе.
Безопасность и формирование подписи
Для проведения взаимодействия с activepay все запросы необходимо подписывать по определенному алгоритму, описанному чуть ниже. Точно так же все запросы, приходящие от activepay будут подписаны ровно по этому же алгоритму.
Подпись запросов осуществляется добавлением в HTTP-запрос дополнительного параметра signature, который представлет собой hash-строку из всех параметров запроса в алфавитном порядке и секретного ключа подключения.
В формировании подписи используются следующие элементы:
- метод запроса (GET или POST),
- домен магазина,
- путь на сайте процессинговой системы Activepay,
- параметры (query string),
Параметры должны быть отсортированы по ключу в алфавитном порядке и разделены знаком «&». Ключ и значение должны быть закодированы функцией URL-encode.
Строка для формирования подписи собирается в одну строку из перечисленных выше элементов, разделенных символом переноса строки (\n). Далее шифруется алгоритмом hmac с применением SHA1 и секретного ключа магазина, который задается пользователем при регистрации магазина в «Личном кабинете». Полученные данные, в свою очередь, кодируются с помощью base64.
Пример:
При запросе
GET https://activepay.ru/api/create/?merchant_data=example_data &merchant_description=example_description&amount=54
хэшированию и перекодировке в base64 подлежит следующая строка:
GET shop.ru /api/create/ urlencode(merchant_data)=urlencode(example_data) &urlencode(merchant_description)=urlencode(example_description)&...
Конкретные примеры формирования подписи вы сможете посмотреть в готовых библиотеках подключения к Activepay.
Обратные вызовы
Вне зависимости от типа подключения, уведомление о статусе оплаты в случае ее завершения производится всегда одним способом: HTTP-запросом на один из адресов, указанных в настройках магазина в панели управления (URL_OK/URL_FAILED).
Запрос на URL_OK содержит следующие параметры:
- result -- success
- payment_id -- внутренний ID транзакции
- merchant_data -- произвольная строка данных, которая была передана сервису при старте запроса
Запрос на URL_FAILED содержит следующие параметры:
- result -- failed
- payment_id -- внутренний ID транзакции
- merchant_data -- произвольная строка данных, которая была передана сервису при старте запроса
- errors -- JSON-структура из кода-описания ошибки (см. список ошибок)
Оба запроса всегда будут подписаны параметром signature. ВАЖНО: во избежание обманных запросов ВСЕГДА проверяйте signature этих запросов.
Подключение по API с редиректом
Для начала оплаты, необходимо переадресовать пользователя на страницу ActivePay по адресу:
https://activepay.ru/merchant_pages/create/
сообщив системе следующие GET-параметры:
| merchant_data | char(66) | произвольная строка данных, которая вернется сервису при обратном запросе как в случае успеха, так и в случае неудачи |
| merchant_description | char(100) | текстовое описание покупки, которое увидит пользователь |
| amount | decimal(15,2) | сумма, которую необходимо получить с покупателя |
| redirect_url_ok | char(200) | адрес, на который попадет пользователь по окончанию продажи в случае успеха. Данный параметр служит только для визуального завершения процесса. О факте успешной оплаты вы будете дополнительно уведомлены HTTP-запросом по адресу, указанному в панели управления |
| redirect_url_failed | char(200) | адрес, на который попадет пользователь по окончанию продажи в случае неудачи. Данный параметр служит только для визуального завершения процесса. О факте успешной оплаты вы будете дополнительно уведомлены HTTP-запросом по адресу, указанному в панели управления |
| merchant_contract | char(20) | ID вашего подключения к системе |
| signature | char(100) | подпись запроса. Алгоритм формирования подписи описан выше |
В результате оплаты пользователь будет переадресован по одному из параметров: redirect_url_ok или redirect_url_failed, в зависимости от статуса оплаты. Факт успешной или неуспешной оплаты будет сообщен магазину дополнительно HTTP-запросом.
Пример: Оплата покупки в интернет-магазине.
| Параметры транзакции: | |
| ID подключения магазина к activepay | 5 |
| Номер транзакции магазина | 54 |
| В панели управления проставлены: | |
| URL_OK | http://shop.ru/paid |
| URL_FAILED | http://shop.ru/failed |
При нажатии кнопки "Оплатить" в магазине, пользователь адресуется на следующий адрес:
https://activepay.ru/merchant_pages/create/? merchant_data=54 & merchant_description=Покупка+овощей & redirect_url_ok=http://shop.ru/cart & redirect_url_failed=http://shop.ru/cart & merchant_contract=5 & signature = ...
Как только оплата будет завершена, человек в браузере увидит страницу http://shop.ru/cart вне зависимости от результата.
При этом магазину уйдет дополнительный запрос на адрес http://shop.ru/paid если оплата была успешно завершена и http://shop.ru/failed если оплата не удалась.
Оба эти запроса будут содержать в себе параметр merchant_data = 54. Кроме того, оба запроса будут содержать в себе подпись, которую необходимо проверить. Подпись формируется по алгоритму, описанному выше.
Подключение по API с прямой интеграцией
Данный способ подключения предоставляется по предварительному устному согласованию, документация высылается по требованию.
Готовые библиотеки подключения
Вы можете воспользоваться готовым решением для подключения вашего интернет-магазина к Activepay:
- Пример подключения к ActivePay на PHP
- Пример подключения к ActivePay на Perl
- Пример подключения к ActivePay на Python
- Пример подключения к ActivePay на C#
В ближайшее время будет доступен пример для Ruby.
Список ошибок
Полный список ошибок находится в процессе подготовки и появится в ближайшее время.
400 ValidationError 'Argument "%s" validation error: %s' 400 ArgumentOutOfRangeError '%s value (%s) is out of range%s%s' 400 ArgumentRequiredError 'Argument "%s" is required' 400 MultipleObjectsReturnedError 'Multi objects were returned for %s, parameters: "%s"' 400 NotSupportedError '%s "%s" is not supported%s' 403 InvalidSignatureError 'Signature is missed or invalid' 403 MerchantContractIsBlockedError 'Merchant contract is blocked' 404 NotFoundError '%s "%s" not found' 409 IllegalStateError '%s "%s" has state "%s" which is illegal for requested action'






