5.1. FAQ

Собирайте полезную информацию

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

  • Пожалуйста, укажите, использовались ли песочница или производственная среда.

  • Пожалуйста, укажите, работала ли данная функциональность в какой-то момент времени или нет. Если да, пожалуйста, укажите, с какого момента она перестала работать.

  • Пожалуйста, добавьте соответствующую информацию лога ( orderid, serial-number, client_orderid, ENDPOINTID, ENDPOINTGROUPID), если таковая имеется.

Часто задаваемые вопросы во время интеграции

Что означает ошибка INVALID_CONTROL_CODE?

Расчет подписи может быть разным для разных типов вызовов API. Наиболее распространенные причины:
  • Неверные учетные данные. Проверьте учетные данные, полученные от менеджера платежного шлюза.

  • Вызовы API к URL-адресу песочницы сожержит URL производственной среды или наоборот.

  • Производственные учетные данные (ENDPOINTID, ENDPOINTGROUPID, control key и т. д.) использовались в песочнице или наоборот.

  • Параметры для расчета подписи указаны в неправильном порядке.

  • Сумма транзакции не конвертируется в минимальные десятичные единицы.

Лучший способ проверить расчет подписи — воспользоваться разделами конструктора запросов в документации API:
  • Выберите правильный URL-адрес из раскрывающегося списка с выбором вызовов API, если таковые имеются.

  • После нажатия кнопки Sign, пожалуйста, проверьте значение подписи для String to sign, подписывается ли та же самая строка или нет.

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

  • Войдите в пользовательский интерфейс и найдите конкретные запросы и ответы API на экране интеграционной панели в разделе Инструменты.

В чём разница между ENDPOINTID и ENDPOINTGROUPID?

Шлюз ConnPay может поддерживать любую валюту.
  • ENDPOINTID поддерживает одну валюту.

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

Из-за разной природы этих двух сущностей невозможно использовать ENDPOINTID вместо ENDPOINTGROUPID и наоборот.

Можно ли использовать синхронный API?

Все API асинхронны, см. Асинхронные ответы. Если требуется использование синхронного API, его следует реализовать на Присоединяющейся Стороне. Попросите менеджера платёжного шлюза уточнить, возможно ли делать синхронные вызовы в вашей интеграции.

Как реализовать 3-D Secure (Verified by Visa / MasterCard SecureCode) в собственном мобильном приложении?

Даже в собственном приложении необходимо использовать встроенный компонент WebView для открытия URL-адреса банковского сервера ACS.
Для обработки транзакций без перенаправления на страницу 3-D Secure приложение Присоединяющейся Стороны должно соответствовать следующим требованиям:
  • Плательщики идентифицированы, и вероятность мошенничества в этом случае низкая Присоединяющаяся Сторона может попросить менеджера платежного шлюза открыть счёт non3D.

  • У Присоединяющейся Стороны есть сертификат PCI DSS, и она может собирать данные о держателях карт на своей стороне. В этом случае Присоединяющаяся Сторона может попросить менеджера платежного шлюза открыть счет с поддержкой Direct API, чтобы избежать ненужных перенаправлений.

Что такое client_orderid?

Данный идентификатор транзакции генерируется на Присоединяющейся Стороне. Также в некоторых API данный параметр называется как merchant-order-id.

Как получить одобренную транзакцию в среде песочницы?

Для разных типов API ConnPay имеет разные механизмы для получения одобренных транзакций и транзакций в других статусах. Для транзакций электронной коммерции ConnPay использует разные CVV, см. test_cards. Для транзакций mPOS см. mpos.

Почему ответ отформатирован как (0xA)?

Для улучшения читаемости ответа в большинстве API ConnPay добавляет символ (0xA) в конце каждого значения параметра. Для обработки ответа от платежного шлюза, пожалуйста, реализуйте механизм обработки этого символа.

Можно ли использовать redirect_url для получения статуса транзакции для бэк-офиса?

Это не рекомендуется.
Все параметры для конечного редиректа передаются через браузер клиента. Параметры могут быть утеряны во время передачи через интернет. Чтобы получить гарантированный результат от шлюза ConnPay, см. Обратный вызов Присоединяющейся Стороны.

Можно ли использовать GET вместо POST для отправки данных на шлюз ConnPay?

К сожалению это не возможно.
Передача параметров с использованием HTTP GET строго запрещена во избежание возможных утечек данных.

Что означает INVALID_CALLBACK_URL?

Пожалуйста, используйте полный публичный URL-адрес с http:// или https://
Например, пожалуйста, передавайте http://www.example.com или https://www.example.com вместо www.example.com. Разрешены только следующие порты:
  • 80, 8080 для HTTP

  • 443, 8443 для HTTPS

Как часто можно опрашивать статус транзакции?

Статус следует запрашивать несколько раз с интервалом в 3–5 секунд, пока в ответ не будет получен окончательный статус.
Обычно обработка не3D-транзакции занимает до 5 секунд, а 3D-транзакции — до 60 минут. Транзакции, выполненные с помощью некоторых платежных методов или платежных каналов, особенно обработанные в автономном режиме, могут оставаться в нефинальном статусе в течение нескольких часов или даже дней, поэтому нет смысла часто опрашивать статус транзакции в таких случаях. Присоединяющаяся Сторона должна полагаться на обратный вызов для получения финального статуса транзакции, см. Обратный вызов Присоединяющейся Стороны.

Почему транзакция была отклонена из-за ошибки base 64?

Пожалуйста, используйте urldecode для обработки параметра html в ответе шлюза ConnPay.
ConnPay пытается помочь Присоединяющейся Стороне правильно обрабатывать ответы API. Тест Base64 дает Присоединяющейся Стороне возможность проверить, будет ли страница 3DS, предоставленная банком, правильно обработана в производственной среде. Если Connecting Party получает эту ошибку, это означает, что urldecode, вероятно, не использовался для разбора ответа шлюза ConnPay или, возможно, он работает неправильно (например, в некоторых версиях PHP вместо этого необходимо использовать rawurldecode).