Протоколы Internet


SET и другие системы осуществления платежей - часть 101


/p>

Обработка информационных запросов

Пара сообщений InqReq/InqRes позволяет владельцу карты получать информацию о состоянии транзакции. Информационный запрос может быть послан в любое время после запроса PReq, адресованного продавцу. Запросы InqReq могут посылаться многократно. Отклик InqRes имеет тот же формат, что и PRes. Продавец должен проверять, что сертификат, сопровождающий InqRes, соответствует сертификату, использованному с PRes. Это препятствует запросам одного владельца карты о состоянии транзакций других покупок. Владелец карты без сертификатов не подписывает информационные запросы, что означает возможность нарушения целостности сообщения. Владелец карты формирует запрос InqReq следующим образом.

Шаг

Действие

1

  1. Копируется InqReqData из предыдущего запроса
  2. Формируется новый RRPID
  3. Генерируется новый Chall-С
  4. Опционно добавляются любые InqReqExtensions

2

Если владелец карты послал подписанный PReq, вставить Compose SignedData c InqReqData

3

Вставить сообщение в цифровой конверт и послать продавцу

Структура данных запроса InqReq представлена в таблице 4.6.2.63.

Таблица 4.6.2.63.

Структура InqReq

InqReq

<InqReqSigned, InqReqData>

InqReqSigned

S(C, InqReqData)

InqReqData

{TransIDs, RRPID, Chall-C2, [InqRqExtensions]}

TransIDs

Копируется из самого последнего: PReq, PRes, InqReq

RRPID

Идентификатор пары запрос/отклик

Chall-C2

Новый вызов владельца карты по поводу подписи продавца.

InqRqExtensions

Информационный запрос не шифруется, по этой причине расширения не должны содержать конфиденциальной информации.

Когда продавец получает InqReq, он обрабатывает это сообщение следующим образом:

Шаг

Действие

1

Извлекается запрос из входного сообщения

2

Если получены данные InqReqData (в противоположность InqReqSigned), проверить, позволяет ли сертификат расчетного центра неподписанные транзакции. Если он этого не допускает, тогда:

  1. Прислать сообщение InqRes c CompletionCode = signatureRequired.
  2. Прервать обработку InqReq

В противном случае перейти к пункту 4.

3

Если получен InqReqSigned, проверить подпись. Если проверка подписи не прошла:

  1. Прислать сообщение Error с ErrorCode = signatureFailure
  2. Прервать обработку InqReq

4

Сравнить TransIDs со значениями из цифрового конверта сообщения. Если равенства нет:

  1. Прислать сообщение Error c ErrorCode = wrapperMsgMismatch
  2. Прервать обработку InqReq

5

Искать транзакцию в базе данных, основанную на TransIDs.XID. Если поиск неудачен:

  1. Прислать InqRes c CompletionCode = orderNotReceived.
  2. Прервать обработку InqReq

6

Если PReq был подписан, проверить, что PReq и InqReq подписаны одним и тем же владельцем карты. Если соответствия нет, то:

  1. Прислать сообщение Error c ErrorCode = unknownXID.
  2. Прервать обработку InqReq

7

Сформировать PResPayloadSeq

<


Начало  Назад  Вперед



Книжный магазин