Процесс сохранения клиентом PAN карты
Этот сценарий описывает отправку выплаты на банковскую карту в случае, если вы не можете собирать данные банковских карт и хранить на своей стороне (у вас нет сертификата PCI DSS).
Вы можете получить токенизированные данные карты с помощью виджета и безопас но провести выплату.
Процесс описывает шаги взаимодействия агента и клиента с web-приложением. Шаги взаимодействия могут быть с открытием формы ввода в отдельном окне и с открытием формы в iframe. Процесс позволяет клиенту вводить и сохранять данные карты через web-app.
Как выглядит виджет
Авторизационные данные
- Тестовые авторизационные данные:
- url = https://a2c-test.qiwi.kz
- agentId = agent-01
- agentSecretKey = 22f3b3cc2ae84451
- host = http://localhost:3019
- Боевые авторизационные данные:
- url = https://a2c.qiwi.kz
- agentId и agentSecretKey = предоставляются по запросу через менеджера сопровождения
Для воспроизведения приложения в iframe необходимо предоставить список тестовых и боевых хостов с которых будет осуществляться встраивание.
Процесс открытия страницы в отдельном окне
Шаги процесса
-
Генерация ссылки клиенту агентом
- Агент генерирует ссылку URL формата:
{host}/form?agentId={id агента}&requestId={id запроса}&language=ru&agentCallbackUrl={страница с возвратом результата ответа}&agentSign={подпись hmac}. - Параметр
languageможет принимать значения:ru,en,kz. По умолчаниюru - URL содержит параметры, необходимые для идентификации агента, запроса, страницы возврата и подписи.
- Алгоритм HMAC SHA256. Для вычисления hmac необходимо склеить строку
requestId;agentId;agentCallbackUrlи применить agentSecretKey. Например воспользоваться https://www.freeformatter.com/hmac-generator.html Пример полученного URL:https://a2c-test.qiwi.kz/form?agentId=agent-01&requestId=12345678&language=ru&agentCallbackUrl=https://agent.site.kz&agentSign=bc305308aa5fa30a56d69ab166a7d5613cf2ca17783d034fdc08eeba23bad901 - Переадресация Клиента на URL
- Агент генерирует ссылку URL формата:
-
Ввод номера карты и сохранение
- Клиент переходит по полученному URL.
- Клиенту открывается web-app.
- Клиент вводит номер своей карты в предоставленную форму.
- После ввода данных, клиент нажимает кнопку "Сохранить" для о тправки данных.
-
Переход с ответом на
agentCallbackUrl- В случае успешного ответа:
- Происходит переадресация клиента на
agentCallbackUrlс добавлением параметров к URL:?requestId={id запроса}&panToken={Токен карты}.
- Происходит переадресация клиента на
- В случае неуспешного ответа:
- Происходит переадресация клиента на
agentCallbackUrlс добавлением параметров об ошибке к URL:?requestId={id запроса}&errorCode={Код ошибки}&errorMessage={Сообщение об ошибке}.
- Происходит переадресация клиента на
- В случае успешного ответа:
Параметры запроса
Параметры для строки редиректа и iframe
| Параметры | Тип | Обязательный | Описание |
|---|---|---|---|
agentId | string | Да | Строковый идентификатор агента. |
requestId | Long | Да | Уникальный иде нтификатор операции. |
language | string | Нет | Выбор языка: ru, en, kz. По умолчанию ru. |
agentCallbackUrl | string | Да | Ссылка агента для перенаправления после окончания ввода данных карты. |
string | Нет | Для открытия формы в iFrame. Будут сгенерированы события. | |
agent_sign | string | Да | Подпись HMAC SHA256: requestId;agentId;agentCallbackUrl с использованием agentSecretKey. |
Параметры ответа после сохранения
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
requestId | Long | Да | Уникальный идентификатор операции. |
panToken | string | Нет | Токен карты, передаваемый в случае успешного ответа. |
errorCode | string | Нет | Код ошибки, передаваемый в случае неуспешного ответа. Список ошибок |
errorMessage | string | Нет | Сообщение об ошибке, передаваемое в случае неуспешного ответа. |
Процесс встраивания приложения в iframe
Этот процесс описывает взаимодействие между клиентом, агентом и приложением, встроенным в iframe, на сайте агента.
Шаги процесса
-
Инициация действия клиентом
- Клиент на сайте агента инициирует действие, которое требует взаимодействия с веб-приложением.
-
Встраивание приложения агентом
- В ответ на действие клиента, агент встраивает веб-приложение в
iframeна своем сайте, используя специально сформированный URL:{host}/form?agentId={id агента}&requestId={id запроса}&language=ru&agentSign={подпись hmac} - Параметр
languageможет принимать значения:ru,en,kz. По умолчаниюru - Алгоритм HMAC SHA256. Для вычисления hmac необходимо склеить строку
requestId;agentId;и применить agentSecretKey. Например воспользоваться https://www.freeformatter.com/hmac-generator.html Пример:https://a2c-test.qiwi.kz/form?agentId=agent-01&requestId=123456789&language=ru&agentSign=3e77416dbc65b9225c1ff455d357cdc4200fa83ee273bce727aa34c8dc44c725
Пример встраивания
iframe:<iframe src="{адрес приложения}?agentId={id агента}&requestId={id запроса}&language=ru&agentSign={подпись hmac}" width="100%" height="100%" title="Embedded Iframe" frameBorder="0"></iframe>iframeвстраивается со значением ширины и высоты в100%, что позволяет ему автоматически подстроиться под размер блока, в который он встраивается. Примечание: минимальная ширина блока должна быть320px, а высота500px.
- В ответ на действие клиента, агент встраивает веб-приложение в
-
Ожидание готовности приложения
- Агент ожидает сообщение о готовности приложения, которое приходит в виде
postMessageсо статусом"Ready".
- Агент ожидает сообщение о готовности приложения, которое приходит в виде
-
Проверка origin перед взаимодействием
- После получения сообщения о готовности, агент передает любое событие в
iframeчерез postMessage для проверкиorigin, подтверждая безопасность взаимодействия.
- После получения сообщения о готовности, агент передает любое событие в
-
Ввод данных клиентом
- Клиент вводит данные карты и подтверждает действие через интерфейс приложения, встроенного в
iframe.
- Клиент вводит данные карты и подтверждает действие через интерфейс приложения, встроенного в
-
Обработка данных и отправка ответа
- Приложение обрабатывает введенные данные и отправляет результат обработки агенту через
postMessage.- В случае неуспешного ответа: приложение отправляет агенту JSON с информацией об ошибке:
{"requestId": "id запроса", "errorCode": "код ошибки", "errorMessage": "сообщение об ошибке"} - В случае успешного ответа: приложение отправляет агенту JSON с результатом обработки:
{"requestId": "id запроса", "panToken": "токен карты"}
- В случае неуспешного ответа: приложение отправляет агенту JSON с информацией об ошибке:
- Приложение обрабатывает введенные данные и отправляет результат обработки агенту через
Обработка ответа агентом
- Агент обрабатывает полученный ответ от приложения и соответствующим образом реагирует на результат операции, информируя клиента о статусе обработки.
Возможные типы ошибок
| Код ошибки | Описание |
|---|---|
AGENT_NOT_FOUND | Данные агента переданы не верно |
AGENT_SIGN_INVALID | Подпись невалидна |
PARSE_REQUEST_ERROR | Переданные данные невалидны |
INVALID_SESSION | Нарушение процесса на стороне клиента |
INVALID_PAN | Номер карты невалидный |
PAN_IS_EXISTS_FOR_REQUEST | Для данного запроса уже существует сохранённый номер карты |
FORBIDDEN | Запросы блокированы. Попробуйте позже |
Теперь вы можете делать выплаты на карты по токену
