Схема обработки запроса AuthReq платежным центром представлена в таблице ниже.
Шаг |
Действие |
1 |
Извлечь запрос из транспортного сообщения |
2 |
Дешифровать PI |
3 |
Сравнить TransIDs из AuthTags и PIHead или AuthToken:
- Проверить что коды XID идентичны
- Проверить что коды LID-C идентичны
- Если LID-M присутствуют в AuthTags и PIHead, сравнить их значения
Если хотя бы одна из проверок не прошла, сообщение отбрасывается и возвращается AuthCode = piAuthMismatch |
4 |
Если PI является AuthToken:
- Обработать AuthToken
В противном случае, если PI подписаны:
- Проверить, что платежная система в подписи владельца карты согласуется с платежной системой сертификата шифрования расчетного центра. Если согласия нет, то авторизация отвергается путем отправки AuthCode = CardMerchBrandMismatch.
- Проверить PANData
- Запомнить данные из PANData
В противном случае, если PI не подписаны:
- Проверить, что расчетный центр не требует подписи (путем проверки сертификата платежного центра). Если подпись требуется, отвергнуть авторизацию, послав AuthCode = signatureRequired
- Верифицировать хэш в EXH
- Запомнить данные из PANToken
|
5 |
Проверить состояние авторизации PI. Если PI была обработана и не отвергнута или отозвана, отвергнуть авторизацию, послав AuthCode = piPreviouslyUsed |
6 |
Обработать PIHead:
Проверить, что PiHeadMerchantID соответствует содержимому поля merID в расширении merchantData сертификата подписи, используемом при верификации подписи продавца для сообщения AuthReq. Если соответствия нет, авторизация отвергается и посылается отклик с AuthCode = piAuthMismatch. Это предотвращает атаки подстановки, когда PI разных продавцов меняются местами.
Передать TransStain эмитенту через финансовую сеть для верификации или запоминания с последующей верификацией.
Проверить хэши OIData, полученные от владельца карты и продавца. Если они не совпадают, прислать AuthCode = piAuthMismatch.
Проверить, что HOD от HIHead соответствует HOD2 от AuthReqPayload, при несовпадении прислать сообщение Error c ErrorCode = HODMismatch
Обработать PIExtensions. Если обнаружены неподдерживаемые расширения, сообщение отвергается путем посылки сообщения Error c кодом unrecognizedExtension
Запомнить данные от PIHead
|
7 |
Если в AuthReq имеется InstallRecurData, проверить, что InstallRecurData в AuthReqPayload и в PIHead совпадают. Если это не так, отклонить авторизацию с AuthCode = InstallRecurMismatch. |
8 |
Запомнить AcqBackInfo в безопасной локальной памяти, если таковая имеется. |
9 |
Если captureNow=TRUE и платежная система не поддерживает этот режим, послать AuthCode = captureNotSupported |
10 |
Выполнить авторизацию через финансовую сеть платежной карты |
11 |
Если captureNow=TRUE, выполнить платеж через существующую финансовую сеть платежной карты |
12 |
Продолжить формирование сообщения AuthRes |