Процесс сохранения клиентом 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 | Запросы блокированы. Попробуйте позже |
Теперь вы можете делать выплаты на карты по токену