UP:
4.6 Электронная торговля в Интернет Next: 4.6.2 SET и другие системы осуществления платежей |
Перевод Семенова Ю.А. (ГНЦ ИТЭФ)
Мерзавцам этим только б воровать, Про то торговцы титулами знают, Но, кроме денег, им на все плевать. Джузеппе Джусти, "Шутки" |
Открытый торговый протокол Интернет IOTP (Internet Open Trading Protocol; D. Burdett, RFC-2801, смотри также RFC-2935) создает базу коммерции через Интернет. Протокол не зависит от используемой платежной системы и т.д.. IOTP способен обрабатывать ситуации, когда продавец выступает в качестве покупателя, обеспечивает оформление и отслеживание доставки товаров и прохождения платежей, или совмещает некоторые или все перечисленные функции. IOTP поддерживает:
Рост Интернет и прогресс в электронной коммерции привносят огромные изменения в сферу бизнеса, политики, управления и в само общество. Методы, которые используются партнерами в торговле, обогатились и необратимо изменились. Наиболее заметные изменения характера торговли включают в себя:
Разработки программ для электронной коммерции будут более привлекательны, если они окажутся совместимыми для разных разработчиков. Однако IOTP призван, прежде всего, решить проблему коммуникаций между различными решениями.
IOTP предлагает стандартные рамки для инкапсуляции платежных протоколов. Это означает, что средства платежей смогут лучше взаимодействовать, если они встроены в программы, следующие протоколу IOTP. В результате базовые виды электронных платежей смогут найти более широкое распространение на большем разнообразии рабочих платформ.
Существует несколько преимуществ для торговцев:
Существует несколько преимуществ для банков и финансовых организаций:
Для покупателей также имеется несколько преимуществ:
Протокол описывает содержимое, формат и последовательность сообщений, которые пересылаются между партнерами электронной торговли - покупателями, торговцами и банками или финансовыми организациями.
Протокол спроектирован так, чтобы обеспечить его применимость при любых схемах электронных платежей, так как он реализует весь процесс продажи, где передача денег всего лишь один шаг из многих.
Схемы платежей которые поддерживает IOTP включают MasterCard Credit, Visa Credit, Mondex Cash, Visa Cash, GeldKarte, eCash, CyberCoin, Millicent, Proton и т.д..
Каждая схема содержит некоторый обмен сообщениями, который является характерным именно для нее. Эти схемно-зависимые части протокола помещены в приложения к данному документу.
Документ не предписывает участникам, какое следует использовать программное обеспечение или процесс. Он определяет только необходимые рамки в пределах которых реализуется торговая операция.
Открытый торговый протокол Интернет определяет некоторое число различных операций IOTP:
Эти операции считаются базовыми, позднее могут быть определены другие операции IOTP. Каждая из перечисленных выше операций IOTP включает в себя:
Торговые роли идентифицируют различные обязанности, которые может выполнять организации в процессе торговли. В IOTP используется пять торговых ролей, которые проиллюстрированы на рис. 1.
Рис. 1. Торговые роли в IOTP
Определены следующие роли:
Роли могут выполняться одной организацией или различными организациями. Например:
Заметим, что в этой спецификации, если не указано обратного, когда используются слова Покупатель (Consumer), Продавец (Merchant), Кассир (Payment Handler), Агент доставки (Delivery Handler) или обслуживание потребителя (Customer Care Provider), подрузамевается торговая роль (Trading Role), а не конкретная организация.
Любая конкретная организация может выполнять множество ролей. Например компания, которая продает товары или услуги через Интернет, может выполнять роь продавца при продаже товара или услуги и роль потребителя, когда компания покупает товары или услуги сама.
Протокол Интернет для торговли (The Internet Open Trading Protocols) идентифицируют четыре торговых обмена, которые включают обмен данными между торговыми ролями. Среди них:
Операции IOTP состоят из различных комбинаций этих торговых обменов. Например, операция покупки IOTP включает в себя обмены Предложения, Оплаты и Доставки. А операция обмена ценностями IOTP состоит из предложения и двух обменов оплаты.
Торговые обмены (Trading Exchanges) состоят из торговых компонентов, которые передаются между различными торговыми ролями. Где возможно, число круговых задержек в операциях IOTP минимизируется путем объединения компонентов нескольких торговых обменов в комбинированные сообщения IOTP. Например, операция покупки IOTP объединяет компонент организации доставки и компонент предложения, для того чтобы избежать лишних запросов и откликов Потребителя.
Ниже каждый торговый обмен IOTP описан более детально. Для простоты описания они рассматриваются как независимые процедуры.
Целью обмена Предложения является обеспечение Покупателя информацией о сделке с тем чтобы он мог решить, продолжать ли ему эту сделку. Это продемонстрировано ниже на рис. 2.
1. | Покупатель (С) решает сделать покупку и шлет информацию о заказе продавцу (М), например в формате HTML. |
C à M | Данные: информация о том, что покупается (запрос Предложения) - формат запроса не определен в рамках IOTP |
2. | Продавец проверяет информацию, выданную Покупателем, формирует предложение, опционно его подписывает и посылает Покупателю. |
C ß M | Отклик на Предложение. Компоненты: Статус; Организации (покупатель, DelivTo, продавец, кассир, Агент обслуживания покупателя); Заказ; Платеж; Доставка; TradingRoleData подпись отклика-предложения (опционно) |
3. | Покупатель проверяет информацию от продавца и решает, стоит ли осуществлять покупку. |
Рис. 2. Предложение
Предложение использует следующие торговые компоненты, которые пересылается между покупателем и продавцом.
Покупатель предоставляет информацию о том, кто он и, если товар или услуги доставлены, место, куда они доставлены. | |
Продавец дополняет эту информацию данными о себе, о Кассире, Агенте обслуживания Покупателе и, если товар или услуга должна быть доставлена, то и об агенте доставки. |
o | Компонент Заказа (Order Component) содержит описания товаров или услуг, предмет сделки, если покупателя устроит соглашение. Эта информация посылается Продавцом покупателю. |
o | Компонент оплаты (Payment Component), генерируемый продавцом, содержит детали того сколько надо платить, в какой валюте и кто должен платить кому, например покупатель может попросить вернуть деньги. Заметим, что число платежей в сделке может быть больше одного. |
o | Компонент Доставки (Delivery Component), также генерируемый продавцом, используется, если товары или услуги требуют доставки. Он содержит информацию о том, как будет осуществляться доставка, например с помощью обычной или электронной почты. |
o | Компонент данных о торговых ролях содержит информацию, которую продавец хочет довести до сведения другой торговой роли, такой как Кассир или Агент доставки. |
o | Компонент подпись "отклика на предложение", если присутствует, подписывает все выше перечисленные компоненты с целью гарантии их целостности. |
Точное содержание информации, выданной Продавцом Покупателю, варьируется в зависимости от типа операции IOTP. Например:
Информация, предоставляемая покупателем продавцу, предоставляется различными способами, например, она может быть получена.
Целью платежного обмена (Payment Exchange) является оплата, производимая покупателем кассиру или наоборот, используя вид и протокол платежа, выбранные покупателем. Второй целью является опционное обеспечение покупателя платежной распиской (Payment Receipt), которая может использоваться для связи платежа с его причиной, как это описано в обмене предложения (Offer Exchange).
Обмены платежа могут реализовываться различными способами. Наиболее общий случай, где сделка зависит от типа и платежного протокола, показан на диаграмме рис. 3. Возможны и более простые платежные обмены.
1. | Покупатель решает что-то купить и посылает информацию об этой операции (запрос предложения) Продавцу, напр., используя HTML. |
C à M | Информация о том, что покупается (вне рамок стандарта IOTP) |
2. | Продавец решает, какой тип и протокол платежа следует предложить, записывает эти данные в компонент Brand List и посылает покупателю. |
C ß M | Компоненты: список типов платежей (Brand List) |
3. | Покупатель выбирает тип платежа, протокол и вид валюты, формирует компонент выбор типа и посылает его продавцу. |
C à M | Компонент: Выбор из списка типов платежа (Brand List Selection) |
4. | Продавец проверяет выбор типа, определяет сумму платежа, опционно подписывает документ и посылает его Покупателю. |
C ß M | Компонент: Платеж; Организации (продавец и кассир); опционная подпись отклика-предложения, которая подтверждает другие компоненты. |
5. | Покупатель проверяет объявленную сумму платежа и, если согласен, посылает запрос кассиру. |
C à P | ЗАПРОС ПЛАТЕЖА. Компоненты: Статус, Платеж; Организации (продавец и Кассир); Информация о торговых ролях (опционно); опционная подпись отклика-предложения, которая подтверждает все прочие компоненты. Данные о схеме платежа. |
6. | Кассир проверяет информацию, включая опционную подпись и, если все в порядке, начинает обмен компонентами данных по схеме платежа с целью выбора типа и протокола платежа. |
C « P | ПЛАТЕЖНЫЙ ОБМЕН. Компонент: Данные о схеме платежа |
7. | Как только обмен протокольными платежными сообщениями завершится, Кассир посылает Покупателю платежную расписку, которая опционно подписывается, с целью подтверждения платежа. |
C « P | ОТКЛИК на ПЛАТЕЖ. Компоненты: Статус, платежная расписка; платежное заявление; данные о торговых ролях (опционно); опционная подпись отклика-предложения; опционная подпись платежной расписки, которая связывает платеж и предложение |
8. | Покупатель проверяет платежную расписку |
Рис. 3. Платежный обмен
Платежный обмен использует следующие торговые компоненты, которыми обмениваются покупатель, продавец и кассир:
Пример платежного обмена представленного выше, является наиболее общим случаем. Возможны и более простые варианты. Например, если сумма платежа не зависит от выбранного типа платежа и платежного протокола, тогда информация, генерируемая на этапе 3, может быть послана покупателю одновременно с формированием компонента список типов платежей (Brand List) на этапе 1. Эти и другие вариации описаны в разделе базовые торговые операции IOTP (смотри раздел 9.1.8).
Целью обмена доставки является обеспечить физическую или сетевую доставку купленного товара или услуги покупателю. Второй целью служит передача покупателю “декларации о доставке”, предоставляя дополнительную информацию о доставке, такую как номера накладной или номер трайлера, с помощью которого будет доставлен груз. Результат доставки может быть также подтвержден с помощью электронной подписи. Обмен сообщениями показан на диаграмме ниже.
1. | Покупатель решает осуществить сделку и посылает информацию продавцу о том, что нужно доставить и как это лучше сделать. |
C à M | Информация о том, что следует доставить (вне зоны ответственности IOTP) |
2. | Продавец проверяет информацию, полученную от покупателя, добавляет информацию о том, как будет осуществляться доставка, информацию об организациях, вовлеченных в доставку и, опционно, электронную подпись, после чего отправляет все это покупателю. |
C ß M | Компоненты: lоставка; jрганизации (fгент доставки, доставит туда-то); заказ, опционная подпись отклика-предложения |
3. | Покупатель проверяет, корректна ли доставочная информация, получает разрешение на доставку, например путем оплаты, и посылает эти данные агенту доставки. |
C à D | Запрос доставки. Компоненты: cтатус; доставка, организации: (продавец, агент доставки, DelivTo); Заказ, данные о торговой роли (опционны); опционная подпись отклика-предложения, опционная подпись платежной расписки (из платежного обмена) |
4. | Агент доставки проверяет информацию и авторизацию. Запускает или диспетчеризует доставку, а также готовит и отправляет накладную покупателю, которая опционно может быть подписана. |
C ß D | Отклик доставки. Компоненты: статус; накладная (Delivery Note), данные о торговой роли (опционны); опционная подпись отклика доставки |
5. | Покупатель проверяет накладную и принимает товар или ждет доставки, как это указано в накладной (Delivery Note). |
Рис. 4. Обмен доставки
Обмен доставки использует следующие торговые компоненты, которыми обмениваются покупатель, продавец и агент доставки:
Целью аутентификационного обмена является допущение одной организации, например, финансовому учреждению, иметь возможность проверить, что другая организация, например Покупатель, является тем, за кого себя выдает.
В аутентификационный обмен вовлечены:
Это проиллюстрировано на диаграмме ниже.
1. | Первая организация, например покупатель, осуществляет действие (например, нажимает на клавишу на HTML-странице), которое требует, чтобы организация была аутентифицирована. |
1 à 2 | Запрос аутентификации (за пределами действия IOTP) |
2. | Вторая организация генерирует данные вызова и список алгоритмов, которые могут быть использованы для аутентификации и/или запрос данных об организации, после чего посылает все это первой организации. |
1 ß 2 | Запрос аутентификации. Компоненты: запрос аутентификации, запрос информации о торговых ролях. |
3. | Первая организация опционно проверяет любую подпись, связанную с запросом аутентификации, после чего использует специфицированный алгоритм аутентификации, чтобы сформировать отклик аутентификации, который посылается второй организации вместе с запрошенной информацией об организации. |
1 à 2 | Отклик аутентификации. Компонент: отклик аутентификации, организации |
4. | Отклик аутентификации проверяется согласно данным вызова для того чтобы выяснить является ли первая организация той, за которую себя выдает, результат записанный в компонент статус посылается первой организации. |
1 ß 2 | Статус аутентификации. Компонент: Статус |
5. | Первая организация опционно проверяет результаты, записанные в cтатус, и все соответствующие подписи, после чего предпринимает некоторые действия или останавливает процедуру. |
Рис. 5. Обмен аутентификации
Обмен аутентификации использует следующие торговые компоненты, которыми обмениваются между собой две организации:
Здесь описываются операции, которые образуют основу IOTP. Главными факторами, определяющими реализацию IOTP, являются роли, которые поддерживает реализованное решение. Роли в пределах IOTP более детально описаны в разделе 2.1. Базовыми ролями являются: продавец, покупатель, кассир, агент доставки и агент обслуживания покупателя.
Существует три типа Кассиров:
Ниже приведенная таблица определяет для каждой роли операции IOTP и торговые блоки, которые должны поддерживаться для каждой роли.
Продавцы | ||||||||
Склад | Платильщик | Получатель платежа | Покупатель | Кассир | Агент доставки | |||
Транзакции | ||||||||
Покупка | Нужно | Нужно | ||||||
Продавцы | ||||||||
Store | Платильщик | Получа-тель платежа | Покупатель | Кассир | Агент доставки | |||
Возврат средств | Нужно | b) Зависит |
||||||
Аутентификация | Можно | Нужна | Можно | b) Зависит |
||||
Обмен ценностями | Можно | Нужно | ||||||
Отзыв | Нужно | b) Зависит |
||||||
Депозит | Нужно | b) Зависит |
||||||
Запрос данных | Нужно | Нужно | Нужно | Можно | Нужно | Нужно | ||
Ping | Нужно | Нужно | Нужно | Можно | Нужно | Нужно | ||
Торговые блоки |
||||||||
TPO | Нужно | Нужно | Нужно | Нужно | ||||
Выбор TPO | Нужно | Нужно | Нужно | Нужно | ||||
Запрос Auth | a) Зависит |
a) Зависит |
a) Зависит |
|||||
Отклик Auth | a) Зависит |
a) Зависит |
a) Зависит |
|||||
Отклик предложения | Нужно | Нужно | Нужно | Нужно | ||||
Запрос платежа | Нужно | Нужно | ||||||
Платежный обмен | Нужно | Нужно | ||||||
Платежный отклик | Нужно | Нужно | ||||||
Запрос доставки | Нужно | Нужно | ||||||
Отклик доставки | Нужно | Нужно | ||||||
Продавцы | ||||||||
Склад | Платильщик | Получа-тель | Покупатель | Кассир | Агент доставки | |||
Запрос данных | Нужно | Нужно | Нужно | Нужно | Нужно | Нужно | ||
Отклик данных | Нужно | Нужно | Нужно | Нужно | Нужно | Нужно | ||
Запрос Ping | Нужно | Нужно | Нужно | Нужно | Нужно | Нужно | ||
Отклик Ping | Нужно | Нужно | Нужно | Нужно | Нужно | Нужно | ||
Подпись | Нужно | Нужно | Нужно | Ограничено | Нужно | Нужно | ||
Ошибка | Нужно | Нужно | Нужно | Нужно | Нужно | Нужно |
В выше приведенной таблице:
Решения IOTP должны поддерживать все операции IOTP и торговые блоки, необходимые, по крайней мере, для одной из ролей (колонка), как это описано в приведенной выше таблице для решений, которые считаются поддерживающими IOTP.
В предыдущем разделе дано введение, которое объясняет:
Ниже описано:
Структура сообщения IOTP и его отношения с торговыми блоками и компонентами проиллюстрировано на диаграмме ниже.
Рис. 6. Структура сообщения IOTP
На диаграмме определена концепция блока ссылок операции (Transaction Reference Block). Такой блок содержит среди прочего уникальный идентификатор операции IOTP. Кроме того, каждому блоку и компоненту присваивается ID-атрибут (смотри раздел 3.4), который является уникальным в пределах IOTP. Следовательно, комбинации ID-атрибута и глобального уникального идентификатора в блоке ссылок операции достаточно, для однозначной идентификации любого торгового блока или компонента.
Предопределенный набор сообщений IOTP, которыми обмениваются торговые роли, составляют операцию IOTP. Это проиллюстрировано ниже на диаграмме.
Рис. 7. Функциональная схема операция IOTP
На приведенной выше диаграмме Интернет рассматривается в качестве транспортного механизма. Но это не всегда так. Сообщения IOTP могут транспортироваться с использованием различных механизмов.
В этой версии IOTP специфицированы следующие операции IOTP (смотри раздел 9):
Как было описано выше, сообщения IOTP представляют собой [XML] документы, которыми обмениваются торговые роли, участвующие в сделке.
XML-определение сообщения IOTP выглядит следующим образом.
<!ELEMENT IotpMessage
( TransRefBlk,
SigBlk?, | ||
ErrorBlk?, | ||
( AuthReqBlk | | ||
AuthRespBlk | | ||
AuthStatusBlk | | ||
CancelBlk | | ||
DeliveryReqBlk | | ||
DeliveryRespBlk | | ||
InquiryReqBlk | | ||
InquiryRespBlk | | ||
OfferRespBlk | | ||
PayExchBlk | | ||
PayReqBlk | | ||
PayRespBlk | | ||
PingReqBlk | | ||
PingRespBlk | | ||
TpoBlk | | ||
TpoSelectionBlk | ||
)* |
) >
<!ATTLIST IotpMessage
xmlns CDATA
'iotp:ietf.org/iotp-v1.0'
Содержимое:
TransRefBlk содержит информацию, которая характеризует сообщение IOTP в пределах операции IOTP (смотри раздел 3.3)
AuthReqBlk, AuthRespBlk, | Торговые блоки. |
DeliveryReqBlk | Торговые блоки присутствуют в сообщениях IOTP, а само содержимое |
DeliveryRespBlk | торгового блока зависит от типа выполняемой операции IOTP |
ErrorBlk | смотри определение каждой операции в разделе 9. |
InquiryReqBlk, | |
InquiryRespBlk, | |
OfferRespBlk, PayExchBlk, | |
PayReqBlk | Полные определения каждого торгового блока описаны в разделе 8. |
PayRespBlk, PingReqBlk, PingRespBlk, SigBlk, TpoBlk, TpoSelectionBlk |
Атрибуты:
Xmlns | Определение [XML Namespace] для сообщений IOTP. |
Сообщение IOTP является корневым элементом XML-документа. Оно, следовательно, должно предшествоваться соответствующим прологом документа XML. Например:
<?XML Version='1.0'?> Блок ссылок транзакции содержит информацию, которая идентифицирует IOTP-транзакцию и сообщение IOTP. Блок ссылок операции включает в себя: Определение блока ссылок операции (Transaction Reference Block) выглядит следующим образом: <!ELEMENT TransRefBlk (TransId, MsgId, RelatedTo*) > Атрибуты: Cодержимое: Идентификационная компонента транзакции содержит информацию, которая однозначно задает транзакцию IOTP. Ее определение представлено ниже: <!ELEMENT TransId EMPTY > Атрибуты: Значение IotpTransType управляется процедурой, описанной в разделе 12 IANA Considerations, которая позволяет пользователю определить величины IotpTransType. В последних версиях IOTP, этот список будет расширен с целью поддержки различных типов транзакций IOTP. Вероятно, будет поддержан динамический тип (Dynamic), который указывает, что последовательность шагов в транзакции не является стандартной. Главным назначением этого атрибута является обеспечение альтернативного пути идентификации транзакции путем спецификации времени его запуска. Некоторые системы не могут генерировать временные метки. В этом случае этот атрибут должен содержать значение "NA" (Not Available). Компонент Id-сообщения предоставляет контрольную информацию о сообщении IOTP, а также однозначно идентифицирует сообщение в рамках транзакции IOTP. Его определение выглядит следующим образом. <!ELEMENT MsgId EMPTY > Атрибуты: Компонент Related To связывает транзакции IOTP с другими транзакциями или другими событиями с помощью идентификаторов этих событий. Определение этого компонента представлено ниже. <!ELEMENT RelatedTo (PackagedContent) > RelnKeyWords NMTOKENS #IMPLIED > Атрибуты: Значения RelationshipType управляются процедурами, определенными в разделе 12 IANA Considerations, которые позволяют пользователю определить свои значения атрибута. Целью атрибута является обеспечение торговых ролей, включенных в транзакцию IOTP, объяснением природы отношений между транзакциями. Следует позаботиться о том, чтобы слова, использованные в атрибуте Relation, правильно указывали "направление" отношений. Например: одна транзакция может быть возвратом денег для другой выполненной ранее транзакции. В этом случае транзакция, которая возвращает деньги, должна содержать слова атрибута Relation, такие как "возврат за", а не "возврат кому" или просто "возврат". Cодержимое: IOTP-сообщения, блоки (т.e. блоки ссылок операции и торговые блоки), торговые компоненты (включая ID-компонент транзакции и компонент подписи) и некоторые их дочерние элементы задаются атрибутом "ID" XML, который служит для идентификации этих XML-элементов. Эти элементы используются так, что один элемент может ссылаться на другой. Всем этим атрибутам присваиваются ID. Значения каждого ID-атрибута является уникальным в пределах транзакции IOTP т.e. набор IOTP-сообщений, который имеет тот же самый компонент ID транзакции. Однажды присвоенное значение ID-атрибута элемента никогда не меняется. Это означает, что когда элемент копируется, значение ID-атрибута остается неизменным. Как следствие можно использовать эти идентификаторы для ссылки и нахождения содержимого любого сообщения IOTP, блока или компонента (смотри раздел 3.5). ID-атрибут Id-компонента IOTP-сообщения должен быть уникальным в пределах транзакции IOTP. Его определение представлено ниже: IotpMsgId_value ::= IotpMsgIdPrefix IotpMsgIdSuffix Для сообщений, которые содержат торговый блок информационного запроса или блок запроса Ping, префикс делается равным "I" (Inquiry). Для сообщений, которые содержат торговый блок отклика на информационный запрос или блок отклика Ping, префикс равен "Q". Префикс для других торговых ролей в сделке содержится в компоненте Organisation (организации) и прописывается обычно Продавцом. Ниже представлены рекомендуемые значения: Префиксы должны содержать один символ. NameChar имеет то же значение, что и определение NameChar в [XML]. Короче, Id-компонент первого сообщения IOTP, посланного Покупателем, будет иметь ID-атрибут "C1", второе - "C2", третье - "C3" и т.д. Цифра имеет то же определение что и в [XML]. ID-атрибут блоков и компонентов в пределах транзакции IOTP также должен быть уникальным. Ниже представлено его определение: BlkOrCompId_value ::= IotpMsgId_value "." IdSuffix В IOTP, торговые компоненты и торговые блоки копируются из одного сообщения IOTP в другое. ID-атрибут не изменяется, когда существующий торговый блок или компонент копируется в другое сообщение IOTP. Короче, первый новый блок или компонент добавляется ко второму посылаемому сообщению IOTP, например, первый ID-атрибут - "C2.1", второй - "C2.2", третий - "C2.3" и т.д. Цифра имеет то же определение, что и в [XML]. На диаграмме проиллюстрировано, как используются значения ID-атрибутов. Рис. 8. Пример использования ID-атрибутов Торговый компонент или один из его дочерних XML элементов может содержать XML-атрибут, который указывает на другой блок (т.e. Блок ссылок транзакции или торговый блок) или торговый компонент (включая идентификатор транзакции и компонент подписи). Эти ссылки элементов используются для многих целей, ниже предлагается несколько примеров: Элементы Reference всегда содержат значение ID-атрибута блокаили компонента. Идентификация
сообщения IOTP, торговогоблока или торгового компонента, на который указывает ссылка элемента, включает в себя наождение XML-элемента, который: Термин "соответствует" в данной спецификации имеет то же определение, что и в [XML]. Пример "соответствия" ссылки элемента показан ниже. Рис. 9. Ссылки элемента (Element References) Атрибуты ссылки элемента определены как "NMTOKEN", а не "IDREF" (смотри [XML]). Это сделано потому, что IDREF требует, чтобы элемент XML, на который ссылаются, принадлежал тому же XML-документу. В IOTP это не всегда так. Базовая версия IOTP определяет минимальный протокол, с которым система, поддерживающая IOTP, должна быть способна работать. По мере разработки новых версий IOTP будут определяться дополнительные типы транзакций IOTP. Кроме того, базовая и будущие версии IOTP будут поддерживать два механизма расширения возможностей IOTP пользователем: Имена XML элементов и атрибутов используемых в IOTP составляют пространство имен [XML], как это определено атрибутом xmlns элемента IotpMessage. Это позволяет Th IOTP поддерживать включение дополнительных XML-элементов в IOTP-сообщения посредством использования пространства имен XML. Используя XML Namespaces, дополнительные XML-элементы могут быть включены на любом уровне в сообщение IOTP, включая: При этом следуют определенным правилам: Для того чтобы быть уверенным, что дополнительные элементы XML могут быть обработаны корректно, IOTP резервирует использование специального атрибута, IOTP:Critical, который принимает значение True или False и может появляться в дополнительных элементах, добавляемых к IOTP-сообщению. Целью этого атрибута является допущение IOTP проинформировать приложение, можно ли безопасно продолжить транзакцию. В частности: Для того чтобы гарантировать то, что документы, содержащие "IOTP:Critical" корректны, этот атрибут объявляется частью DTD для дополнительных элементов в форме: Если IOTP должен быть расширен с помощью Opaque Embedded Data, тогда к инкапсулированным данным должен быть применен элемент Packaged Content (смотри раздел 3.7). Элемент PackagedContent поддерживает концепцию потока вложенных данных, преобразованную, чтобы защитититься от неверной интепретации транспортной системой и гарантировать совместимость с XML. Примеры использования этого элемента в IOTP включают: В общем, он используется для инкапсуляции одного или более потоков данных. Этот поток данных имеет три стандартизованных атрибута, которые служат для идентификации, декодирования и интерпретации содержимого. Его определение представлено ниже. <!ELEMENT PackagedContent (#PCDATA) > Атрибуты: <ABCD> Атрибут имени может быть опущен, например, если имеется только один элемент PackagedContent. Cодержимое: PackagedContent может содержать HTML. В этом случае должны выполняться следующие условия: Если выше приведенные соглашения не реализуются, например, включением внешних ссылок, которые должны быть разрешены, тогда получатель HTML должен быть об этом проинформирован. В качестве руководства разработчику следует иметь в виду, что значения атрибутов Name, относящиеся к элементам PackagedContent, должны допускать извлечение каждого PackagedContent в каталог и отображение HTML непосредственно. Рекомендуется поддержка XML. Когда необходимо отобразить XML, например, чтобы представить содержимое описания заказа Покупателю, разработчики должны следовать новейшим рекомендациям консорциума World Wide Web. IOTP использует идентификацию языка [XML] для того, чтобы специфицировать, какие языки применены в тексте и атрибутах IOTP-сообщения. Для того чтобы определить, какие элементы XML содержат атрибуты xml:lang, нужно придерживаться следующих принципов: Атрибуты xml:lang, которые следуют этим принципам, включаются в торговые элементы, а их дочерние XML-элементы определены в разделе 7. Отправитель сообщения, обычно Покупатель, может указать свои предпочтения для языка и символьного набора путем спецификации соответствующего списка в Id-компоненте сообщения (смотри раздел 3.3.2). Заметим, что получатель такого сообщения не обязан строго следовать этим предпочтениям, так как он может не иметь необходимых средств для этого. Это также означает, что возможность работать с этими списками не является требованием данной спецификации. Однако возможность реагировать, используя один из объявленных языков или символьных наборов является желательной. IOTP содержит несколько "сетевых позиций", которые определяют место, куда молгут быть посланы сообщения IOTP-сообщения. Сетевые позиции (Net Locations) бывают двух типов: Заметим, что должны присутствовать безопасна33я или не3безопасная сетевая позиция (Net Location) или обе обязательно. Если присутствует одна из двух сетевых позиций, только она и может использоваться. Там где представлены оба типа сетевых позиций, допускается использование обоих, в зависимости от предпочтения отправителя сообщения. Любая торговая роль, вовлеченная в транзакцию IOTP может аннулировать эту транзакцию в любой момент. Транзакции IOTP аннулируются путем посылки сообщения IOTP, содержащего блок Cancel с соответствующим компонентом Status, другой торговой роли, вовлеченной в торговый обмен. Блок Cancel может быть послан асинхронно по отношению к любому другому сообщению IOTP. В частности он может быть послан до посылки или после получения сообщения от другой торговой роли. Если транзакция IOTP аннулирована во время торгового обмена (т.e. интервал между отправкой блока "запрос" и получением соответствующего ему блока "отклик"), тогда блок Cancel посылается тому же адресату, что и следующее сообщение IOTP в торговом обмене. Если покупатель аннулирует транзакцию после завершения торгового обмена (т.e. блок "отклик" торгового обмена уже получен), но до завершения тразакции IOTP, покупатель посылает блок Cancel с соттветствующим компонентом Status сетевой позиции, идентифицированной SenderNetLocn или SecureSenderNetLocn, содержащимся в компоненте опции протокола (смотри раздел 7.1), который размещен в блоке TPO (смотри раздел 8.1). Это обычно торговая роль Продавца. Покупатель не должен посылать блок Cancel после того как завершилась транзакция IOTP. Аннулирование
всей транзакции будет рассматриваться как техническая ошибка. После аннулирования транзакции IOTP, Покупатель должен обратиться в сетевую позицию, специфицированную атрибутом CancelNetLocn, содержащимся в элементе торговой роли для организации, которой был послан блок Cancel. Торговые роли, отличные от Покупателя, могут аннулировать транзакцию в следующих случаях: Если торговая роль, отличная от Покупателя, аннулирует транзакцию в любое другое время, это должно восприниматься получателем, как ошибка. Если блок Cancel получен Покупателем в момент, когда аннулирование разрешено, тогда покупатель должен прервать транзакцию. Если блок Cancel получен торговой ролью, отличной от Покупателя, тогда торговой роли следует ожидать, что Покупатель обратится к сетевойму узлу, специфицированному атрибутом CancelNetLocn, содержащимся в элементе Trading Role. IOTP создан как протокол запросов/откликов, где каждое сообщение состоит из нескольких торговых блоков, которые содержат некоторое. Существует несколько взаимосвязанных соображений при обработке ошибок, ретрансмиссий, дубликатов и тому подобное. Эти факторы приводят к тому, что IOTP вынужден обрабатывать поток сообщений не просто как последовательность запросов и откликов. Кроме того может встретится большое разнообразие ошибок в сообщениях, на транспортном уровне или в торговых блоках или компонентах. Датее будет рассмотрено, как IOTP обрабатывает ошибки, повторные попытки и дубликаты сообщений. Могут произойти различные ошибки: Глубина ошибки показывает, где произошла ошибка (при транспортировке, при составлении сообщения или на уровне блока/компонента) К техническим ошибкам относятся ошибки, которые не зависят от значения сообщения. Это означает, что они могут влиять на любую попытку передачи. Обычно они обрабатываются стандартным образом с ограниченным числом опций для пользователя. Такие ошибки могут быть: o повторная попытка передачи; Когда связь работает достаточно хорошо, техническая ошибка индицируется компонентом Error
(смотри раздел 7.21) в блоке Error (смотри раздел 8.17), посланным партнером, который детектировал ошибку в сообщении IOTP, партнеру, пославшему ошибочное сообщение. Если связь слишком плохая, сообщение, которое было послано, может не достичь адресата. В этом случае может произойти таймаут. Коды ошибок, соответствующие техническим ошибкам записываются в компоненте Error, где перечисляются различные технические ошибки, которые могут случиться. Рабочие ошибки могут случиться, когда IOTP-сообщения "технически" вполне корректны. Они связаны с
определенным процессом, например, предложение, платеж, доставка или аутентификация, где каждый процесс имеет разный набор возможных рабочих ошибок. Например, "Недостаточно средств" является сообщением об ошибке при платеже, но не имеет никакого значения для доставки, в то время как "Back ordered" возможное сообщение об ошибке доставки, но не имеет смысла для платежа. Рабочие ошибки индицируются компонентом Status (смотри раздел 7.16) "блока отклика" соответствующего типа, например, блока Payment Response или Delivery Response. Это допускает любой дополнительный отклик, связанный с информацией, которая необходима для пояснения возникшей ошибки. Рабочие ошибки должны обычно представляться пользователю так, чтобы он мог решить, что делать
дальше. Например, если ошибка связана с недостаточностью платежных средств в предложении, независящим от типа платежа (смотри раздел 9.1.2.2), пользователь может пожелать выбрать другой счет того же типа или другой тип платежа или даже другую платежную систему. Иными словами, если реализация, базирующаяся на IOTP, допускает это и пользователь может перевести дополнительные средства на счет и совершить еще одну попытку. Три уровня, на которых могут произойти ошибки в IOTP, включают транспортный уровень, уровень сообщения и уровень блока. Этот уровень ошибки указывает фундаментальную проблему в транспортном механизме, через который осуществляется передача в IOTP. Все ошибки транспортного уровня являются техническими и индицируются явно на транспортном уровне, как "No route to destination" из TCP/IP или через таймаут, когда не получено отклика на посланный запрос. Единственно разумным автоматическим действием, когда сталкиваешся с ошибками транспортного уровня, является попытка повторной передачи, а после нескольких попыток информирование пользователя об этом. Неявная индикация ошибки, которая может быть получена, является зависимой от транспортной среды и для принятия решения относительно конкретных действий следует обращаться к документации транспортного приложения IOTP. Таймауты здесь являются функцией как транспорта так и платежной системы, если в запрос инкапсулирована платежная информация. Для выяснения параметров таймаутов и повторных передач рекомендуется обращаться к документации по транспортной и платежной системам. Часто нет способа непосредственно проинформировать партнера об ошибках транспортного уровня, при таких обстоятельствах такие события должны регистрироваться и, если автоматическое восстановление системы не сработало, а в процесс вовлечен человек-пользователь, его следует проинформировать об инциденте. Этот уровень ошибки указывает на фундаментальную техническую проблему с IOTP-сообщением в целом. Например, XML документ некорректно оформлен, сообщение имеет слишком большую длину для получателя, или обнаружена ошибка в блоке ссылок транзакции (смотри раздел 3.3). Все ошибки уровня сообщений являются техническтими ошибками и индицируются компонентами Error (смотри раздел 7.21), послаными партером. Компонент Error включает в себя атрибут Severity (степень угрозы), который указывает, является ли ошибка предупреждениеим и может быть проигнорирована, TransientError и что повторная попытка может разрешить проблему или HardError, что говорит о срыве транзакции. Технические ошибки (смотри раздел 7.21.2; Коды ошибок), которые являются ошибками уровня сообщения, включают: Заметим, что проверки блока подписи включают проверку, где это возможно, того, что каждый из компонентов подпися вычислен правильно. Если подпись вычислена неправильно, тогда данные, которые покрываются подписью не будут признаны истинными. Процедура проверки подписи описана в разделе 6.2. Ошибки блочного уровня указывают на проблему с блоком или одним из его компонентов в сообщении
IOTP (помимо блоков ссылок транзакции или подписи). Сообщение передано корректно, структура всего сообщения, включая блоки ссылок транзакции и подписи, вполне разумна, но имеется ошибка, связанная с каким-то другим блоком. Ошибки блочного уровня могут быть: Технические ошибки далее делятся на: Если случислась техническая ошибка, связанная с блоком или компонентом, формируется компонент Error для посылки отправителю некорректного сообщения. Проверки элемента и атрибута блочного уровня производятся только в пределах одного и того же блока. Проверки, которые включают в себя перекрестные сверки с другими блоками, относятся к проверкам согласованности блоков и компонент. Проверки элемента и атрибута блочного уровня включают в себя: Проверки согласованности компонентов и блоков состоит из: Если блок проходит проверку атрибутов и элементов блочного уровня и контроль согласованности блоков и компонентов, тогда он обрабатывается IOTP-приложением или какой-то оконечной системой, такой как платежный сервер. Во время обработки блока могут произойти временные отказы, которые в принципе могут быть преодолены позднее повторной передачей исходного сообщения. В этом случае партнер информируется о переходной ошибке путем посылки компонента Error (смотри раздел 7.21) с атрибутом Severity равным TransientError и атрибутом MinRetrySecs равным некоторому значению, удобному для используемого транспортного механизма и/или платежного протокола (смотри соответствующие приложения транспортного и платежного протокола). Заметим, что переходные технические ошибки могут генерироваться любыми торговыми агентами, вовлеченными в транзакцию. Если в процессе платежа или доставки происходит рабочая ошибка, тогда присылается соответствующий тип блока отклика, содержащий компонент Status (смотри раздел 7.16) с атрибутом ProcessState равным Failed и CompletionCode, указывающим на природу проблемы. Некоторые рабочие ошибки могут быть переходными, при таких обстоятельствах Покупатель может справиться с ситуацией самостоятельно и успешно завершить транзакцию каким-то способом. Например, если на кредитной карточке покупателя недостаточно денег, он может воспользоваться для покупки другой кредитной карточкой. Преодоление переходных рабочих ошибок зависит от CompletionCode. Для понимания имеющихся возможностей смотри определение компонента Status. Заметим, что для рабочих ошибок не формируется компонент или блок Error. IOTP-сообщения представляют в действительности комбинацию блоков и компонентов, как это описано в 3.1.1 (Структура сообщений IOTP). В будущем при расширении IOTP разнообразие таких комбинаций еще более расширится. Важно, что многократные приемы/передачи одного и того же запроса изменения состояния имеют тот же результат, как и однократная передача/прием этого запроса. Это называется идемпотентностью. Например, покупатель, оплачивая заказ, желает оплатить его только раз. Большинство сетевых транспортных механизмов имеют определенную вероятность доставки одного сообщения несколько раз или не доставить ни разу, что потребует позднее повторной передачи. С другой стороны, запрос состояния можно повторять и при этом каждый раз должно обрабатываться вновь полученное значение. Правильная реализация IOTP может моделироваться по разному различными процессами. "Роли сервера" - это любые торговые роли, несовпадающие с ролью Покупателя. Они являются "ролями сервера", так как они обычно получают запросы, которые они должны обработать и посылать на них отклики. Однако Роли сервера могут также инициировать транзакции. Более конкретно роли сервера должны быть способны: Роли сервера могут инициировать большое число различных транзакций. В чатности: Обработка входных сообщений включает в себя: Крайне важно проверить, что сообщение имее корректную XML-форму и идентификатор транзакции (IotpTransID-атрибут компонента TransId) в сообщении IOTP может быть распознан, так как IotpTransId будет нужен при формировании отклика. Если входное сообщение сформировано некорректно, тогда генерируется компонент Error с атрибутом Severity равным HardError и код ошибки XmlNotWellFrmd. Если входное сообщение сформировано правильно, но IotpTransId не может быть идентифицировано, генерируется компонент Error с : Далее получатель вводит компонент Error в блок ошибки с новым компонентом TransactionId с новым IotpTransId и отправляет его отправителю исходного сообщения. Если входное сообщение может быть идентифицировано, как корректное, то проверяется, не получалось ли раньше точно такое же сообщение. Под идентичностью здесь подразумевается, что все блоки, компонентя, элементы, значения атрибутов и элементы содержимого тождественны. Рекомендуемым способом проверки идентичности сообщений является проверка равентства их [DOM-HASH]. Если получено сообщение, прежде чем его исследовать, нужно проверить, завершилась ли обработка предыдущего. Если обработка не завершилась, генерируется компонент Error с атрибутом Severity = TransientError и кодом ошибки = MsgBeingProc, чтобы указать, что сообщение обрабатывается и послать его обратно отправителю, с предложением повторной присылки поздее. Если установлено, что сообщение не является дубликатом ранее полученного, тогда оно обрабатывается. Процедура обработки включает в себя: Этот подход к обработке дублированных входных сообщений означает, что если получены два
совершенно идентичных сообщения, будут посланы два идентичнх отклика. Это применимо также к информационным запросам и транзакциям Ping, когда в действительности состояние транзакции или возможность обработки сервером может измениться. Если требуется текущее состояние транзакции или сервера, тогда используется транзакция с новым значением ID-атрибута компонента MsgId. Процесс обработки входного сообщения должен проверить, свободна ли остальная система. Если сервер слишком занят, он должен выдать компонент Error с атрибутом Severity равным Transient Error и кодом ошибки равным SystemBusy, после чего вернуть отправителю входное сообщение, запрашивая тем самым повторную присылку этого сообщения спустя некоторое время. Некоторые серверы могут оказаться перегруженными из-за неожиданного всплеска загрузки. Данный
подход позволяет преодолевать ситуации с кратковременными пиковыми нагрузками, запрашивая отправителя переслать сообщение несколько позже. Проверка того, что транзакция не зафиксировала ошибку и не оказалась аннулированной. Предполагается следующий контроль: Если это имеет место, сообщение игнорируется. Транзакция с серьезной ошибкой или аннулированная транзакция не может быть перезапущена. Если с транзакцией все в порядке, производится поиск ошибок на уровне сообщения. Это включает в себя: Проверка ошибок уровня блоков включает: Если сообщение содержит какие-то инкапсулированные данные, то, если возможно, они проверяются на наличие ошибок. Далее при объяснении поиска ошибок в последовательностях блоков выражение типа "относится к транзакции IOTP" следует интерпретировать как "содержится в сообщении IOTP, где TransRef Block включает в себя IotpTransId, который указывает на данную танзакцию". Так, например, "Если ошибка или аннулированный блок относится к транзакции IOTP, которая не распознана, тогда..." следует интерпретировать как "Если ошибка или аннулированный блок содержатся в сообщении IOTP, TransRefBlock включает в себя IotpTransId, который относится к транзакции IOTP, которая не распознана, тогда...”. Ошибки в последовательности прихода блоков зависят от блока. Блоки, где требуется проверка последовательности: Если сгенерированы какие-либо компоненты Error, то они должны быть собраны в блок Error для посылки
отправителю входного сообщения. Заметим, что блоки Error следует отсылать назад отправителю сообщения и ErrorLogNetLocn для торговой роли отправителя, если это специфицировано. Описанная выше проверка последовательности аутентификационных откликов и платежных запросов поддерживает повторение запросов Покупателя, если предыдущая операция не прошла, например: Обработка входного сообщения, лишенного ошибок Если входное сообщение прошло предыдущие проверки, то оно должно быть обработано и послан, если требуется, отклик. Заметим, что: Если выходное сообщение сгенерировано, оно должно быть запомнено, так чтобы иметь возможность, если потребуется, послать его повторно. Заметим, что выходные сообщения, которые содержат переходные ошибки, не запоминаются, так что они формируются заново, при их повторной посылке. Этот процесс используется, чтобы аннулировать транзакцию, Этот процесс служит для аннултрования транзакции работающей на сервере IOTP. Он инициируется некоторым другим процессом, как результат внешнего запроса отдругой системы или сервера, который играет ту же торговую роль. Обработка такого запроса требует: Аннулирование транзакции на сервере IOTP обычно возникает по деловым причинам. Например продавец может попытаться безуспешно аутентифицироваться несколько раз, после чего решает аннулировать транзакцию. Следовательно процесс, который решаетпроизвести такое действие, должен послать сообщение из процесса/сервера с инструкцией о том, какую транзакцию следует аннулировать. Сервер должен периодически проводить проверки, нет ли транзакций, ожидающих сообщения-отклики и неполчивших их своевременно. Такая задержка может быть связана со следующими факторами: Если не получено никакого сообщения, оригинальное сообщение должно быть послано повторно. Это должно производиться некоторое число раз в зависимости от надежности используемого транспортного механизма. Если не получено отклика в течении оговоренного времени, транзакция прерывается по таймауту. В этом случае, состояние транзакции устанавливается равным Failed, и выдается код завершения: "Роль клиента" в IOTP является торговой ролью Покупателя. Компания или организация, которая является Продавцом может, например, взять на себя роль покупателя, делая покупки или или выполняя отзыв электронного платежа. В частности Покупатель должен быть способен: Роль Покупателя может инициировать большое число различных транзакций. В частности: Обработка входных сообщений для роли покупателя происхотит также как и для IOTP-сервера (смотри
раздел 4.5.2) за исключением проверки ошибок в последовательности блоков (для IOTP-сервера смотри раздел 4.5.2.4). Описание обработки входных сообщений для сервера IOTP включает соображения многопроцессности и
многозадачности. Для роли покупателя - в частности при работе на изолированной рабочей системе использование много процессности оставляется на усмотрение разработчика. Последовательность обработки блоков для роли покупателя та же, что и для IOTP-сервера (смотри раздел 4.5.2.4) за исключением того, что роль покупателя подставляется вместо роли сервера IOTP: Для других блоков роль покупателя может получать уведомление об ошибках в порядке прихода блоков иможет зависеть от типа блоков. Блоки, где важна последовательность проверки перечислены ниже: Этот процесс аннулирует текущую транзакцию системы покупателя в результате внешнего запроса пользователя или другой системы или сервера, исполняющего роль покупателя. Обработка запроса делается также как для сервера IOTP (смотри раздел 4.5.3). Ретрансмиссия сообщений осуществляется так же, как и в случае сервера IOTP (смотри раздел 4.5.4). Здесь рассматриваются следующие проблемы: Использование электронной подписи в IOTP является исключительно опционным. IOTP может успешно работать вообще без цифровых подписей. В конце концов, использовать ли цифровую подпись, решает продавец или другая торговая роль,
покупатель же решает обеспечивает ли приемлемый уровень риска вариан без электронной подписи. Если продавцы выяснят, что транзакции без подписей не приемлемы, то они имеют следующий выбор:
<!DOCTYPE IotpMessage >
<IotpMessage>
...
3.3. Блок ссылок операции (Transaction Reference Block)
<!ATTLIST TransRefBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок ссылок операции в пределах IOTP-процедуры (смотри раздел 3.4).
TransId
Смотри 3.3.1 Id-компонент операции.
MsgId
Смотри 3.3.2 Id-компонент сообщения.
RelatedTo
Смотри 3.3.3 Компонент Related To.
3.3.1. Идентификационная компонента транзакции
<!ATTLIST TransId ID
ID #REQUIRED
Version
NMTOKEN #FIXED '1.0'
IotpTransId
CDATA #REQUIRED
IotpTransType
CDATA #REQUIRED
TransTimeStamp
CDATA #REQUIRED >
ID
Идентификатор, который однозначно определяет Id-компонент транзакции в рамках операции IOTP.
Version
Определяет версию IOTP и, следовательно структуру сообщений IOTP, которые используются транзакцией IOTP.
IotpTransId
Содержит данные, которые однозначно определяют транзакцию IOTP. Это атрибут должен отвечать правилам для идентификаторов сообщений [RFC 822].
IotpTransTyp
Это тип исполняемой транзакции IOTP. Для базовой версии IOTP он идентифицирует "стандартную"
транзакцию IOTP и предполагает определенную последовательность и содержимое сообщений IOTP, которыми обмениваются торговые роли. Корректными значениями атрибута являются:
о
BaselineAuthentication (Базовая аутентификация)
o
BaselineDeposit
o
BaselinePurchase
o
BaselineRefund
o
BaselineWithdrawal
o
BaselineValueExchange
o
BaselineInquiry
o
BaselinePing
TransTimeStamp
Там где система, запускающая транзакцию IOTP, имеет внутренние часы, атрибут устанавливается равным времени старта транзакции IOTP в формате [UTC].
3.3.2. Идентификатор сообщения
<!ATTLIST MsgId ID ID #REQUIRED
RespIotpMsg NMTOKEN #IMPLIED
xml:lang NMTOKEN #REQUIRED
LangPrefList NMTOKENS #IMPLIED
CharSetPrefList NMTOKENS #IMPLIED
SenderTradingRoleRef NMTOKEN #IMPLIED
SoftwareId CDATA #REQUIRED
TimeStamp CDATA #IMPLIED >
ID
Идентификатор, который однозначно идентифицирует
сообщение IOTP в рамках транзакции IOTP (смотри раздел 3.4 ID атрибуты). Заметим, что если сообщение IOTP пересылается повторно, тогда значение этого атрибута остается неизменным.
RespIotpMsg
Это ID-атрибут содержит Id-компонент сообщения IOTP, откликом на которое оно является. Таким образом, все сообщения IOTP в пределах транзакции оказываются связаны. Это поле необходимо каждому сообщению IOTP за исключением первого сообщения IOTP в транзакции.
SenderTradingRoleRef
Элемент ссылки (смотри раздел 3.5) торговой роли, которая сформировала сообщение IOTP. Он используется, чтобы идентифицировать сетевую позицию (Net Locations) (смотри раздел 3.9) торговой роли, которой требуется сообщить о технических ошибках (смотри раздел 4.1), связанных с торговыми блоками.
Xml:lang
Определяет язык, используемый атрибутом, или дочерние элементы в пределах этого компонента, если не переписан атрибутом xml:lang в дочернем элементе. Смотри раздел 3.8.
LangPrefList
Опционный список языковых кодов, который согласуется с идентификацией языков [XML]. Он используется отправителем, чтобы указать порядок предпочтения языков, которые получатель сообщения должен использовать при подготовке отклика. Получатель не обязан использовать один из указанных языков.
CharSetPrefList
Опционный список идентификаторов символьных наборов, которые соответствуют символам в [XML]. Он используется отправителем для указания порядока предпочтения символьных наборов, которые получатель может применить при формировании отклика. Получатель не обязан использовать один из указанных символьных наборов.
SoftwareId
Содержит информацию, которая идентифицирует программу, сформировавшую сообщение IOTP. Его целью является помочь разрешить проблему совместной работы
различных программ, обменивающихся сообщениями. Это простая текстовая строка на языке, определенном xml:lang. Она должна содержать, по крайней мере:
название программного продукта
версию программы
форму программного обеспечения (build)TimeStamp
Когда прибор, отправляющий сообщение имеет внутренние часы, атрибут делается равным времени генерации сообщения IOTP в формате [UTC].
3.3.3. Компонент Related To
<!ATTLIST RelatedTo ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
RelationshipType NMTOKEN #REQUIRED
Relation CDATA #REQUIRED
ID
Идентификатор, который однозначно jghtltkztn компонент Related To в рамках транзакции IOTP.
xml:lang
Определяет язык, использованный атрибутом или дочерним элементом в данном компоненте, если не переписан атрибутом xml:lang дочернего элемента. Смотри раздел 3.8.
RelationshipType
Определяет тип отношения. Корректными значениями являются:
Relation
Атрибут Relation содержит фразу на языке, определенном
xml:lang, он определяет природу отношений между транзакцией, которая содержит этот компонент и другой транзакцией или другим событием. Окончательное текстовое выражение оставлено на усмотрение составителей программ IOTP.
RelnKeyWords
Этот атрибут содержит ключевые слова, которые могут быть использованы, чтобы помочь идентифицировать подобные отношения, например все виды возвратов. Ожидается, что рекомендуемые ключевые слова будут выбраны в процессе практического использования. В этой версии спецификации не содержится никаких специальных рекомендаций по ключевым словам
PackagedContent
Packaged Content (смотри раздел 3.7) содержит данные, которые идентифицируют связанные транзакции. Его формат варьируется в зависимости от значения атрибута RelationshipType.
3.4. ID-атрибуты
3.4.1. Определение ID-атрибутов сообщений IOTP
IotpMsgIdPrefix ::= NameChar (NameChar)*
IotpMsgIdPrefix
Кроме того сообщения, которые содержат: торговый блок информационного запроса, информационного отклика, запроса или отклика Ping, используют один и тот же префикс для всех сообщений, посланных Продавцом или Покупателем:
о
"M" - Продавец (Merchant)
о
"C" - Покупатель (Consumer)
о
"P" - Первый Кассир
o
"R" - Второй Кассир
o
"D" - Агент доставки
o
"C" - Доставка (Deliver To)
IotpMsgIdSuffix
Суффикс состоит из одной или более цифр. Суффикс должен быть уникальным для данной торговой роли транзакции IOTP. Рекомендации сводятся к следующему:
o
Первому сообщению IOTP, посланному торговой ролью, присваивается суффикс "1".
o
Для второго и последующих IOTP-сообщений, посланных той же торговой ролью, суффикс увеличивается на 1 для каждого последующего сообщения.
o
Суффикс не может содержать начальных нулей.
3.4.2. Определения ID-атрибута для блока и компонента
IdSuffix ::= Digit (Digit)*
IotpMsgId_value
ID-атрибут. ID-компонента сообщения IOTP, где блок или компонент использован впервые.
IdSuffix
Суффикс состоит из одной или более цифр. Суффикс должен быть уникальным для ID-атрибута ID-компонента сообщения, используемого для генерации ID-атрибута. Рекомендуется здесь следующее:
o
Первому блоку или компоненту, посылаемому торговой ролью присваивается суффикс "1"
o
Для второго и далее блоков или компонентов ID-атрибуты увеличивается на 1 для каждого последующего сообщения.
o
Суффикс не может содержать начальных нулей.
3.4.3. Пример использования ID-атрибутов
3.5. Элемент References
3.6. Расширение IOTP
3.6.1. Дополнительные XML-элементы
о
Любой новый XML-элемент должен быть декларирован согласно правилам [XML Namespaces]
o
Новые XML-элементы, которые являются торговыми блоками или компонентами должны содержать ID-атрибуты с именем атрибута ID.
IOTP:Critical
(True | False ) 'True'
3.6.2. Opaque Embedded Data
3.7. Элемент PackagedContent
<!ATTLIST PackagedContent Name CDATA #IMPLIED Content NMTOKEN "PCDATA" Transform
(NONE|BASE64) "NONE" >
Name
Опционно. Позволяет разделить случаи множественного применения элементов PackagedContent в одной и той же точке IOTP. Например:
<PackagedContent Name='FirstPiece'>
snroasdfnas934k
<PackagedContent Name='SecondPiece'>
dvdsjnl5poidsdsflkjnw45
</PackagedContent>
</ABCD>
Content
Идентифицирует, какой тип данных находится в содержимом элемента PackagedContent. Корректными значениями атрибута Content являются:
о
PCDATA. Содержимое элемента
PackagedContent может рассматриваться как PCDATA и более не обрабатываться.
о
MIME. Содержимое элемента PackagedContent
является MIME-объектом. Обработка должна включать поиск MIME-заголовков внутри элемента PackagedContent.
о
MIME:mimetype. Содержимое элемента PackagedContent является MIME-объектом с заголовком "Content-Type: mimetype". Хотя допускается иметь MIME:mimetype с атрибутом Transform равным NONE, более желательно иметь атрибут Transform равным BASE64. Заметим, что,
если используется Transform = NONE, тогда все содержимое должно соответствовать PCDATA. Некоторые символы будет нужно закодировать как объекты XML, или как символьные объекты.
о
XML. Содержимое элемента PackagedContent
может рассматриваться как XML-документ. Следует использвать секции CDATA, или Transform = BASE64, чтобы гарантировать, что содержимое элемента PackagedContent соответствует PCDATA.
Transform
Идентифицирует преобразование, которое было произведено с данными, прежде чем они были помещены элемент. Допустимыми значениями являются:
PCDATA
Это действительные данные, которые вложены в элемент. Формат данных и правила их кодирования записаны в атрибутах Content и Transform.
3.7.1. Packaging HTML
3.7.2. Пакетирование XML
3.8. Идентификация языков
3.9. Безопасные и небезопасные позиции в сети
3.10. Аннулированные транзакции
3.10.1. Аннулирование транзакций
о
после получения блока запроса;
o
до посылки блока отклика.
3.10.2. Обработка аннулированных транзакций
4. Обработка ошибок IOTP
4.1. Технические ошибки
o аннулирование транзакции.4.2. Рабочие ошибки
4.3. Глубина ошибки
4.3.1. Транспортный уровень
4.3.2. Уровень сообщения
4.3.3. Уровень блоков
4.3.3.1. Проверки атрибутов блочного уровня и элементов
4.3.3.2. Проверки согласованности компонентов и блоков
4.3.3.3. Переходные технические ошибки
4.3.3.4. Рабочие ошибки блочного уровня
4.4. Idempotency, последовательность обработки и поток сообщений
4.5. Последовательность обработки для роли сервера
4.5.1. Инициализация транзакций
4.5.2. Обработка входных сообщений
4.5.2.1. Проверка структуры и идентификация сообщений
o
атрибутом Severity = HardError и кодом ошибки (ErrorCode) = AttMissing,
o
содержимым PackagedContent, включающим в себя "IotpTransId" потерянного атрибута.
4.5.2.2. Выявление и обработка дублированных сообщений
4.5.2.3. Обработка недублированных сообщений
o
предыдущие посланные или полученные сообщения не содержат серьезных (Hard) ошибок;
o
транзакция не была анулирована покупателем или торговой ролью сервера.
4.5.2.4. Проверка ошибок в последовательности блоков
4.5.3. Аннулирование транзакции
4.5.4. Повторная посылка сообщений
о
из-за используемого танспортного механизма;
o
из-за времени, необходимого для обработки инкапсулированных сообщений (напр., платежных) и
o
зависит оттого, нужен или нет ввод со стороны человека.
o
TimedOutRcvr, если транзакция может быть восстановлена позднее, или
o
TimedOutNoRcvr, если транзакция невосстановима.
4.6. Последовательность обработки для роли клиента
4.6.1. Операции инициализации
o
Процедуру запроса (смотри раздел 9.2.1)
o
Транзакцию Ping (смотри раздел 9.2.2)
o
Процедуру аутентификации (смотри раздел 9.1.6)
4.6.2. Обработка входных сообщений
4.6.2.1. Поиск ошибки в последовательности блоков
о
Блоки Error и Cancel,
o
Блоки отклика и информационного запроса,
o
Блоки запросов аутентификации, отклика и состояния.
4.6.3. Аннулирование операции
4.6.4. Повторная передача сообщений
5. Соображения безопасности
o
определение того, следует ли использовать электронную подпись;
o
конфиденциальность данных;
o
безопасность платежного протокола.
5.1. Принятие решения о применении электронной подписи
Перечень некоторых причин использования цифровых подписей представлен ниже:
Ниже приводится список некоторых причин, почему электронная подпись может не использоваться:
Преимущество использования симметричных ключей заключается в искдючении инфраструктуры, сопряженной с обслуживанием открытых ключей. В этом случае Продавец, Кассир и Агент доставки должны договориться об использовании общего секретного ключа.
Однако неудобства симметричной криптографии заключается в том, что покупатель не может надежно идентифицировать Продавца, Кассира и Агента доставки с которыми он имеет дело. Это существенно понижает доверие системе покупателя.
Однако следует заметить, что даже в случае использования асимметричной криптографии Покупатель не нуждается в цифровых сертификатах, так как целостность транзакции определяется кассиром, проверяющим подпись отклика предложения, скопированную с платежного запроса.
Заметим, что в одной транзакции может использоваться симметричная, асимметричная криптография или обе ее разновидности.
Конфиденциальность информации обеспечивается путем пересылки IOTP-сообщений между торговыми ролями, используя секретный канал, такой как [SSL/TLS]. Использование безопасного канала в IOTP является опционным.
IOTP сконструирован так, чтобы быть нечувствительным к используемому платежному протоколу.
IOTP способствует безопасности, используя цифровые подписи для установления однозначного соответствия запроса и отклика и для аутентификации отправителя сообщений. Например IOTP связывает вместе: предложение, платеж и доставку.
IOTP может успешно работать без использования цифровых подписей в открытой сетевой среде, но это менее безопасно - смотри 5. Ниже рассматривается использование цифровых подписей для решения различных задач.
В IOTP цифровые подписи используются как:
Цифровые сертификаты могут быть связаны с цифровой подписью, если используется асимметричная криптография.Однако если используется симметричная криптография, цифровой сертификат заменяется некоторым идентификатором используемого секретного ключа. Способ, с помощью которого формируются компоненты подписи для одного или нескольких элементов, проиллюстрирован ниже на рис. 10.
Рис. 10. Дайджесты подписи
Классическим примером того, как одна цифровая подпись подтверждает другую в IOTP, является случай когда Продавец сначала подписывет предложение, формируя подпись отклика предложения, которое позднее подтверждается кассиром с помощью подписи платежной расписки. Таким путем платеж в транзакции IOTP связывается с предложением продавца.
Заметим, что один Manifest может соответствовать многим элементам подписи "Value", где каждый элемент значения содержит цифровую подпись того же самого Manifest. Это, в частности, позволяет продавцу согласовать применение различных секретных ключей с кассиром и агентом доставки. Детальные описания компонента подписи содержится в разделе 7.19.
Пример использования подписи проиллюстрирован ниже на рис. 11, где показано как взаимодействуют различные компоненты и элементы друг с другом.
Для целей иллюстрации была использована базовая торговая транзакция. Применение элементов и атрибутов аналогично для всех типов транзакций IOTP.
Элемент Manifest в компоненте подписи содержит дайджесты TransRefBlock (не покаазан); ID-компонента транзакции (не покаазан); компонентов организаций (Продавца, Кассира, Агента доставки); компонент списка видов платежа; компонент заказа, платежный компонент, компонент доставки и компонент выбора вида платежа (если покупка зависит от вида платежа).
Рис. 11. Пример использование подписи при покупке
Атрибут OriginatorRef элемента OriginatorInfo в компоненте подписи содержит ссылку на элемент (смотри раздел 3.5), которая указывает на комполнент организации, сгенерировавшей подпись. В данном примере это продавец.
Заметим, что значение элемента атрибута с атрибутом типа, устанавленным равным типу подписи IOTP, должно соответствовать торговой роли организации, которая его подписала. Если это не так, возникает ошибка. Корректные значения представлены ниже в таблице.
Тип подписи IOTP |
Корректная торговая роль |
OfferResponse |
Продавец |
PaymentResponse |
Кассир |
DeliveryResponse |
Агент доставки |
AuthenticationRequest |
Любая роль |
AuthenticationResponse |
Любая роль |
PingRequest |
Любая роль |
PingResponse |
Любая роль |
Атрибут RecipientRefs элемента RecipientInfo в компоненте подписи содержит ссылки элементов на компоненты организации, которая должна использовать подпись, чтобы проверить:
о | они имеют отношение к организации, генерировавшей подпись, |
о | данные, защищенные подписью, не были изменены, |
о | данные были подписаны корректно |
о | действия, которые нужно предпринять для продавца авторизованы. |
Заметим, что, если используется симметричная криптография, отдельные элементы RecipientInfo и Value для каждого набора общих секретных ключей размещаются в компоненте Signature. В противном случае, если используется асимметричная криптография, атрибут RecpientRefs одного элемента RecipientInfo может относиться к нескольким компонентам Organisation, если они все используют один и тот же сертификат.
Проверка успешного завершения операции осуществляется с помощью подписи данных сообщений-откликов. В частности:
Проверка корректности вычисления электронной подписи является частью проверки ошибок уровня сообщения (смотри раздел 4.3.2).
Прежде чем торговая роль сможет проверить подпись, она должна идентифицировать, какой из элементов подписи следует проверить. При этом производятся следующие действия:
Далее описываются процессы, необходимые для кассира или агента доставки, чтобы проверить возможность выполнения платежа или доставки. Это может включать проверку подписей, если она специфицирована продавцом.
При этом осуществляются следующие шаги:
В данном разделе используются следующие термины:
Проверка того, послан ли блок запроса правильной организации, варьируется в зависимости от того платеж это или доставка.
Кассир проверяет, может ли он принять или выполнить платеж путем идентификации компоненты платежа в полученном им блоке платежного запроса. Затем, используя ID плетежного компонента для идентификации организации, выбранной Покупателем, проверяет, что это та самая организация. Метод доступа к данным для решения поставленных задач проиллюстрирован на рис. 12.
Рис. 12. Проверка того, что Кассир может осуществить платеж
Далее выполняются следующие процедуры:
Способ доступа к данным Агента доставки при проверке того, может ли он выполнить доставку показан на рис. 13.
Start
|
v
Delivery
Component
|
|ActionOrgRef
|
v
Organisation
Component
|
-Trading Role
Element
(Delivery Handler)
Рис. 13. Проверка того, что агент доставки может выполнить доставку
Процедура включает в себя следующие шаги:
Далее проверяется то, что в блоке платежного запроса (смотри раздел 8.7) или запроса доставки (смотри раздел 8.10) присутствуют правильные компоненты. Если компоненты отсутствуют, то это ошибка.
Предыдущие шаги идентифицировали операционную организацию и проверяли наличие всех необходимых компонент. На данном этапе проверяется, что операционная организация авторизована для выполнения данной процедуры.
Операционная организация идентифицирует Продавца, проверяет, что с ним имеется соглашение, которое допускает выполнение операции, и что любые ограничения этого соглашения выполнены, тогда, если требуются подписи, проверяется, что они подтверждают корректные данные. Эти шаги включают в себя:
Все компоненты Signature, содержащиеся в IOTP-сообщении должны включать элементы Digest, которые относятся к:
Необходима проверка того, что каждый компонент подписи содержит элементы дайджеста, которые относятся к корректным данным.
Элементы Digest, которые должны присутствовать, зависят от торговой роли организации, генерирующей цифровую подпись:
Далее рассматриваются торговые компоненты, используемые в IOTP. Торговые компоненты являются дочерними XML-элементами, что показано на диаграмме рис. 14.
Рис. 14. Торговые компоненты
Перечень торговых компонентов представлен ниже в порядке их вероятности использования:
Заметим, что следующие компоненты в других секциях этой спецификации:
Опции протокола представляют собой опции, которые работают с транзакциями IOTP в целом. Определение компонента протокольных опций представлено ниже.
<!ELEMENT ProtocolOptions EMPTY >
<!ATTLIST ProtocolOptions ID ID #REQUIRED
xml:lang NMTOKEN #REQUIREDShortDesc CDATA #REQUIRED
SenderNetLocn CDATA #IMPLIEDSecureSenderNetLocn CDATA #IMPLIED
SuccessNetLocn CDATA #REQUIRED >
Атрибуты:
ID | Идентификатор, которыйоднозначно идентифицирует компонент протокольных опций в транзакции IOTP. |
Xml:lang | Определяет язык, используемый атрибутами или дочерними элементами в пределах компонента, если значение не переписано атрибутом xml:lang дочернего элемента. |
ShortDesc | Этот атрибут содержит краткое описание транзакции IOTP на языке, заданном xml:lang. Его целью является объяснение того, какая транзакция осуществляется партнерами. |
Этот компонент используется для облегчения выбора транзакции из списка подобных, например из базы данных транзакций IOTP, которые были запомнены Покупателем, Продавцом и т.д..
SenderNetLocn | Содержит небезопасные сетевые позиции отправителя блока TPO, в котором содержится компонент протокольных опций. |
Это сетевая позиция, куда получатель блока TPO должен послать блок выбора TPO, если это требуется. Содержимое атрибута зависит от транспортного механизма.
SecureSenderNetLocn | Содержит безопасный сетевой узел отправителя блока TPO, в котором содержится компонент протокольных опций. |
Содержимое этого атрибута зависит от транспортного механизма.
SuccessNetLocn | Содержит сетевую позицию, которая должна быть отображена после успешного завершения транзакции. |
Содержимое этого аптрибута зависит от транспортного механизма. Должен присутствовать либо SenderNetLocn, либо SecureSenderNetLocn или оба эти атрибута.
Этот торговый компонент содержит параметр данных, которые используются при аутентификации одной торговой роли у другой. Его определение представлено ниже.
<!ELEMENT AuthReq (Algorithm, PackagedContent*)>
<!ATTLIST AuthReq ID ID #REQUIRED
AuthenticationId CDATA #REQUIREDContentSoftwareId CDATA #IMPLIED>
Если требуется, алгоритм может использовать данные вызова, содержащиеся в элементах Packaged Content из компонента запроса аутентификации. Формат Packaged Content является зависимым от алгоритма.
Атрибуты:
ID | Идентификатор, который однозначно идентифицирует компонент запроса аутентификации для данной транзакции IOTP. |
AuthenticationId | Идентификатор, специфицированный аутентификатором, который, если прислан организацией, которая получает запрос, позволит аутентификатору определить, какая аутентификационная процедура требуется. |
ContentSoftwareId | Смотри раздел 14. Словарь |
Cодержимое:
PackagedContent | Содержит данные вызова в виде одного или более элементах Packaged Content (смотри раздел 3.7), на которые следует рееагировать, используя алгоритм, опреденный элементом Algorithm. |
Algorithm | Содержит информацию, которая описывает алгоритм (смотри 7.19. Компоненты подписи), который должен быть использован для генерации отклика аутентификации. |
Алгоритмы, которые могут использоваться, идентифицированы атрибутом Name элемента Algorithm.
Компонент отклика аутентификации содержит результаты аутентификационного запроса. Используется алгоритм, содержащийся в компоненте запроса аутентификации (смотри раздел 7.2) и выборанный из блока запроса аутентификации (смотри раздел 8.4).
В зависимости от выбранного алгоритма, результаты его применения будут содержаться в компоненте подписи, которая подтверждает отклик аутентификации, или в элементах Packaged Content компонента отклика аутентификации. Его определение представлено ниже.
<!ELEMENT AuthResp (PackagedContent*) >
<!ATTLIST AuthResp ID ID #REQUIRED
AuthenticationId CDATA #REQUIREDSelectedAlgorithmRef NMTOKEN #REQUIRED
ContentSoftwareId CDATA #IMPLIED >
Атрибуты:
ID | Идентификатор, который для данной транзакции однозначно определяет компонент отклика аутентификации. |
AuthenticationId | Идентификатор аутентификации, специфицированный аутентификатором, который был включен компонент запроса (смотри раздел 7.2). Это позволяет аутентификатору идентифицировать метод аутентификации. |
SelectedAlgorithmRef | Ссылка элемента, которая определяет элемент алгоритма, сипользуемого для формирования отклика аутентификации. |
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
PackagedContent | Может содержать отклик, сформированный в качестве результата применения алгоритма, выбранного из компонента запроса аутентификации, смотри раздел 7.2. |
Например, для заданной схемы платежа он может содержать данные, зависящие от этой схемы.
Этот торговый компонент содержит список торговых ролей (смотри раздел 2.1), информация для которых запрошена. Результатом запроса торговой роли является набор компонентов Organisation (смотри раздел 7.6), которые описывают каждую из запрошенных торговых ролей. Его определение приведено ниже.
<!ELEMENT TradingRoleInfoReq EMPTY>
<!ATTLIST TradingRoleInfoReq ID ID #REQUIRED
TradingRoleList NMTOKENS #REQUIRED >
Атрибуты:
ID | Идентификатор, который однозначно определяет компонент информационного запроса для торговой роли в рамках транзакции IOTP. |
TradingRoleList | Содержит список из одной или более торговых ролей (смотри атрибут TradingRole элемента Trading Role - раздел 7.6.2), для которых была запрошена информация. |
Компонент Order содержит информацию о заказе. Его определение представлено ниже.
<!ELEMENT Order (PackagedContent*) >
<!ATTLIST Order ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED | OrderIdentifier CDATA #REQUIRED |
ShortDesc CDATA #REQUIRED | OkFrom CDATA #REQUIRED |
OkTo CDATA #REQUIRED | ApplicableLaw CDATA #REQUIRED |
ContentSoftwareId CDATA #IMPLIED >
Атрибуты:
ID | Идентификатор, который однозначно определяет компонент Order в пределах текущей транзакции IOTP. |
xml:lang | Определяет язык, использованный атрибутами или дочерними элементами в пределах компонента, если только его значение не было изменено с помощью атрибута xml:lang дочернего элемента. Смотри раздел 3.8. |
OrderIdentifier | Это код, число или другой идентификатор, который автор заказа может использовать для идентификации заказа. В пределах транзакции он должен быть уникальным. Если он используется так, то нет нужды специфицировать содержимое элемента заказа, так как имеется ссылка на нужную информацию в базе данных. |
ShortDesc | Краткое описание заказа на языке, определенном атрибутом xml:lang. Оно используется для упрощения выбора индивидуального заказа из списка, например, из базы данных заказов, записанных туда продавцом, покупателем и т.д.. |
OkFrom | Дата и время в формате [UTC], после которого предложение, сделанное Продавцом теряет силу. |
OkTo | Дата и время в формате [UTC], до которого получатель может воспринимать предложение продавца не имеющим силу. |
ApplicableLaw | Фраза на языке, определенном атрибутом xml:lang, которая описывает штат или страну, юристдикция которой будет использована при разрешении конфликтов и споров. |
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
PackagedContent | Опционное описание заказа в виде одного или более элементов Packaged Content (смотри раздел 3.7). |
Элемент Packaged Content будет в норме необходим, однако он может быть опущен там, где достаточная информация о покупке может быть получена из атрибута ShortDesc. Если необходимо полное описание заказа, могут использоваться несколько элементов Packaged Content.
Хотя сумма и валюта вероятно присутствуют в элементах Packaged Content описания заказа, они содержатся в торговых компонентах, связанных с платежом (список видов платежа, выбор вида платежа и платеж). Это означает, что важно, чтобы сумма, которая действительно дожна быть уплачена, была четко отображена для Покупателя.
Для совместимости разные реализации должны поддерживать как минимум Plain Text, HTML и XML, что облегчит отображение.
Заметим, что:
Продавец в контексте Интернет-коммерции в исходный момент с анонимными покупателями выявляет условия предложения на WEB-странице. Для того чтобы получить товар или услуги покупатель должен согласиться с этими условиями.
Если предложение ограничено временными рамками, рекомендуется, чтобы продавцы взаимодействовали с покупателями и сообщали им условия заказа в понятной для них форме:
Заметим также, что даты OkFrom и OkTo могут также присутствовать в элементах Packaged Content описания заказа, эти даты содержатся в компоненте Order. Важно, чтобы даты OkFrom и OkTo использовались в формате, приемлемом для покупателя.
Компонент Organisation предоставляет информацию об индивидууме или организации. Он может быть использован для различных целей, например:
Заметим, что компоненты Organisation, которые должны присутствовать в сообщении IOTP, зависят от выполняемой транзакции. Смотри раздел 9.
Ниже представлено определение компонента.
<!ELEMENT Org (TradingRole+, ContactInfo?, PersonName?, PostalAddress?)>
<!ATTLIST Org ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED | OrgId CDATA #REQUIRED |
LegalName CDATA #IMPLIED | ShortDesc CDATA #IMPLIED |
LogoNetLocn CDATA #IMPLIED >
Атрибуты:
ID | Идентификатор, который однозначно определяет компонент Organisation в пределах текущей транзакции IOTP. |
xml:lang | Определяет язык, использованный атрибутами или дочерними элементами в пределах данного компонента, если только его значение не было изменено с помощью атрибута xml:lang дочернего элемента. Смотри раздел 3.8. |
OrgId | Код, который идентифицирует организацию, описанную компонентом Organisation. Смотри 7.6.1. |
LegalName | Для организаций, которые являются коммерческими компаниями, это их легальное название на языке, определенном атрибутом xml:lang. Это необходимо для организаций, чьими торговыми ролями не являются Покупатель или DelivTo. |
ShortDesc | Краткое описание организации на языке, определенном атрибутом xml:lang. Это обычно имя, под которым известна организация. Например, если легальное название было "Blue Meadows Financial Services Inc.", тогда его короткое имя может быть "Blue Meadows". |
Атрибут используется для упрощения выбора отдельной организации из списка, например из базы данных организаций, вовлеченных в транзакции, которая записана Покупателем.
LogoNetLocn | Сетевая позиция, которая может быть использована для загрузки логотипа организации. |
Смотри раздел 10. Содержимое этого атрибута должно соответствовать [RFC1738].
Cодержимое:
TradingRole | Смотри 7.6.2. Элемент торговой роли. |
ContactInfo | Смотри 7.6.3. Элемент контактной информации. |
PersonName | Смотри 7.6.4. Персональное имя. |
PostalAddress | Смотри 7.6.5. Почтовый адрес. |
ID организаций используются одной из торговых ролей для идентификации торговой роли. Для того чтобы избежать путаницы, это означает, что эти ID должны быть глобально уникальными. На практике это достигается следующим образом:
В частности, содержимое ID организации определяется следующим образом:
OrgId ::= NonConsumerOrgId | ConsumerOrgId
NonConsumerOrgId ::= DomainName
ConsumerOrgId ::= ConsumerOrgIdPrefix (namechar)+ "/" NonConsumerOrgId
ConsumerOrgIdPrefix ::= "Consumer:"
ConsumerOrgIdID организации покупателя состоит из:
NonConsumerOrgId | Если роль не соответствует покупателю, тогда здесь содержится каноническое имя этой организации. Смотри [DNS], за которым опционно следуют дополнительные символы, если требуется сделать NonConsumerOrgId уникальным. |
Заметим, что NonConsumerOrgId не может начинаться с ConsumerOrgIdPrefix. Допускается использование строчных и прописных символов. Ниже приведены примеры Id организации:
Этот элемент идентифицирует торговую роль человека или организации в данной транзакции IOTP. Заметим, что организация может иметь более чем одну торговую роль и несколько ролей может присутствовать в одном элементе Organisation. Определение элемента представлено ниже:
<!ELEMENT TradingRole EMPTY >
<!ATTLIST TradingRole ID ID #REQUIRED
TradingRole NMTOKEN #REQUIRED | IotpMsgIdPrefix NMTOKEN #REQUIRED |
CancelNetLocn CDATA #IMPLIED | ErrorNetLocn CDATA #IMPLIED |
ErrorLogNetLocn CDATA #IMPLIED>
Атрибуты:
ID | Идентификатор, который однозначно определяет элемент торговая роль в пределах текущей транзакции IOTP. |
TradingRole | Торговая роль организации. Возможные значения: o Покупатель. Лицо или организация, которая действует в роли покупателя в данной транзакции. o Продавец. Лицо или организация, которая действует в роли продавца в данной транзакции. o Агент доставки. Лицо или организация, которая доставляет товар или предоставляет услуги в рамках данной транзакции; o DelivTo. Лицо или организация, которая получает товары или услуги в рамках данной транзакции. o CustCare. Лицо или организация, которая обеспечивает обслуживание покупателя в данной транзакции. |
IotpMsgIdPrefix | Содержит префикс, который должен быть использован для всех IOTP сообщений, посланных торговой ролью в данной транзакции. Значения, которые следует использовать определены в 3.4.1. |
CancelNetLocn | Содержит сетевую позицию, куда покупатель должен обратиться, если он аннулирует транзакцию по какой-либо причине. Атрибут может быть использован торговой ролью для отправки отклика, который более соответствует обстоятельствам конкретной транзакции. |
Этот атрибут:
Содержимое этого атрибута зависит от транспортного механизма.
ErrorNetLocn | Содержит сетевую позицию, которая должна отображаться Покупателем, после того как он получил или сгенерировал блок Error, содержащий компонент Error с атрибутом Severity равным: |
Этот атрибут:
Содержимое атрибута зависит от транспортного механизма.
ErrorLogNetLocn | Опционно. Содержит сетевую позицию, куда Покупателю следует посылать IOTP сообщения, которые содержат блоки Error с компонентами Error сатрибутом Severity равным: |
Этот атрибут:
Содержимое этого атрибута зависит от транспортного механизма.
Атрибут ErrorLogNetLocn может использоваться для посылки сообщений об ошибках программной компании или другой оргаанизации, ответственной за решение проблем с программами, которые посылают входные сообщения. Смотри раздел 7.21.1.
Этот элемент содержит информацию, которая может быть использована для контакта с организацией или частным лицом. Все атрибуты являются опционными, однако по крайней мере один из элементов контактной информации должен присутствовать. Его определения представлено ниже.
<!ELEMENT ContactInfo EMPTY >
<!ATTLIST ContactInfo xml:lang | NMTOKEN #IMPLIED |
Tel CDATA #IMPLIED | Fax CDATA #IMPLIED |
Email CDATA #IMPLIED | NetLocn CDATA #IMPLIED > |
Атрибуты:
xml:lang | Определяет язык данного элемента. Смотри раздел 3.8. |
Tel | Телефонный номер, по которому можно контактировать с организацией. Заметим, что это текстовое поле и проверок корректности содержимого не производится. |
Fax | Номер факса, по которому можно контактировать с организацией. Заметим, что это текстовое поле и проверок корректности содержимого не производится. |
Адрес электронной почты, по которому можно контактировать с организацией. Заметим, что поле должно следовать регламентациям для адресных спецификаций, содержащимся в [RFC822]. | |
NetLocn | Адрес Интернет, по которому можно найти информацию об организации, используя WEB-броузер. |
Содержимое этого атрибута должно согласовываться с документом [RFC1738].
Этот элемент содержит имя частного лица. Все поля являются опционными, однако GivenName (имя) или FamilyName (фамилия) должны присутствоать. Его опредление представлено ниже.
<!ELEMENT PersonName EMPTY >
<!ATTLIST PersonName xml:lang | NMTOKEN #IMPLIED |
Title CDATA #IMPLIED | GivenName CDATA #IMPLIED |
Initials CDATA #IMPLIED | FamilyName CDATA #IMPLIED > |
Атрибуты:
xml:lang | Определяет язык с помощью атрибута внутри элемента. Смотри раздел 3.8. |
Title | Отличительное имя; личное прозвище, наследственное или нет, должность (напр., судья, мэр), дворянское звание (напр., герцог, герцогиня, граф), или используемое при обращение к человеку (напр., Mr, Mrs, Miss, товарищ, господин) |
GivenName | Имя, под которым человек известен в семье, друзьям или знакомым (имя или фамилия). |
Initials | Первая буква второго имени (отчества), под которым человек известен в своей семье, друзьям или знакомым. |
FamilyName | Фамилия. Это обычно часть персонального имени, которая передается по наследству от родителей к детям. |
Этот элемент содержит адрес, который может быть использован, например, для физической доставки товаров, услуг или писем. Его определение предлагается ниже.
<!ELEMENT PostalAddress EMPTY >
<!ATTLIST PostalAddress xml:lang | NMTOKEN #IMPLIED |
AddressLine1 CDATA #IMPLIED | AddressLine2 CDATA #IMPLIED |
CityOrTown CDATA #IMPLIED | StateOrRegion CDATA #IMPLIED |
PostalCode CDATA #IMPLIED | Country CDATA #IMPLIED |
LegalLocation (True | False) 'False' >
Атрибуты:
xml:lang | Определяет язык, используемый атрибутами в этом элементе. Смотри раздел 3.8. |
AddressLine1 | Первая строка почтового адреса, напр.,"The Meadows" |
AddressLine2 | Вторая строка почтового адреса. напр.,"Sandy Lane" |
CityOrTown | Город в адресе, напр.,"Москва" |
StateOrRegion | Штат или область в пределах страны, где находится город, напр., "Зюзино" |
PostalCode | Код, известный как, например почтовый код или zip-код, который обычно используется почтовыми организациями для организации эффективной доставки, напр.,"113303" |
Country | Страна адреса, напр.,"RU" |
LegalLocation | Идентифицирует, является ли адрес зарегистрированным адресом организации. По крайней мере один адрес организации должен соответствовать значению “истина” в противном случае торговой ролью является Покупатель или DeliverTo. |
Компоненты списка видов платежа содержатся в блоке опций торгового протокола (смотри раздел 8.1) транзакции IOTP. Они содержат список:
Определение компонента списка видов платежа представлено ниже.
<!ELEMENT BrandList (Brand+, ProtocolAmount+, CurrencyAmount+, PayProtocol+)>
<!ATTLIST BrandList ID ID #REQUIRED
xml:lang NMTOKEN #REQUIREDShortDesc CDATA #REQUIRED
PayDirection (Debit | Credit) #REQUIRED>
Атрибуты:
ID | Идентификатор, который однозначно определяет компонент списка видов платежа транзакции IOTP. |
xml:lang | Определяет язык, использованный атрибутами или дочерними элементами в пределах данного компонента, если только его значение не переписано атрибутом xml:lang дочернего элемента. Смотри раздел 3.8. |
ShortDesc | Текстовое описание на языке, заданном атрибутом xml:Lang, характеризующее цели списка видов платежа. Эта информация должна быть отображена у получателя списка видов платежа для того чтобы помочь сделать правильный выбор. Это привлекательно, так как позволяет Покупателю выяснить цели предлагаемого списка видов платежа, если транзакция предполагает несколько платежей. |
PayDirection | Индицирует направление платежа для выбранного вида. Возможные значения: |
Cодержимое:
Brand | Описывает вид платежа (Brand). Последовательность элементов Brand (смотри раздел 7.7.1) в списке видов плптежа не определяет каких-либо преоритетов. Рекомендуется, чтобы программа, которая обрабатывает этот список видов платежа представляла их в порядке предпочтения получателя. |
ProtocolAmount | Это связывает конкретный вид платежа с: |
CurrencyAmount | Содержит код валюты и сумму платежа; |
PayProtocol | Содержит информацию о платежном протоколе и Кассире, которые могут использовать данный вид платежа. |
Отношения между элементами, которые образуют содержание списка видов платежа проиллюстрированы на рис. 15.
Рис. 15. Отношения элементов списка видов платежа
Примеры списков видов платежа содержатся в главе 11.2.
Элемент Brand описывает вид платежа, который может быть использован при оплате покупки. Один или более таких элементов образуют компонент списка видов платежа, который имеет атрибут PayDirection, установленный равным Debit. Только один элемент вида платежа может содержаться в компоненте списка видов платежа (Brand List), который имеет атрибут PayDirection = Credit.
<!ELEMENT Brand (ProtocolBrand*, PackagedContent*) >
xml:lang NMTOKEN #IMPLIED | BrandId CDATA #REQUIRED |
BrandName CDATA #REQUIRED | BrandLogoNetLocn CDATA #REQUIRED |
BrandNarrative CDATA #IMPLIED | ProtocolAmountRefs IDREFS #REQUIRED |
СontentSoftwareId CDATA #IMPLIED>
Атрибуты:
ID | Идентификатор элемента, относящийся потенциально к компоненту выбора вида платежа (Brand Selection), содержащегося в последнем сообщении платежного запроса, и однозначно идентифицирующий элемент Brand данной транзакции. |
xml:lang | Определяет язык, используемый атрибутами и содержимым данного элемента. Смотри раздел 3.8. |
BrandId | Содержит уникальный идентификатор для вида платежа. Он используется для установления соответствия со списком платежных инструментов, которыми располагает Покупатель, чтобы определить, может ли он обеспечить платеж данного вида. |
Так как значения BrandId управляются процедурами IANA, допускается определение значений самим пользователем.
BrandName | Содержит название вида платежа, например MasterCard. Это описание вида платежа, которое отображается для Покупателя на понятном для него языке, заданном атрибутом xml:lang. Например, это может быть "American Airlines Advantage Visa". Заметим, что этот атрибут не используется для установления соответствия с инструментами платежа, которыми располагает Покупатель. |
BrandLogoNetLocn | Сетевая позиция, которая может быть использована для загрузки логотипа организации. Смотри раздел “Получение логотипа” (раздел 10). |
Содержимое этого атрибута должно соответствовать документу [RFC1738].
BrandNarrative | Этот опционный атрибут предназначен для использования Продавцом для индикации специальных условий или выгод, которрые будут действовать, если Покупатель выберет определенный вид платежа. Например "5% скидка", "бесплатная доставка", "бесплатная гарантия на один год", и т.д.. |
ProtocolAmountRefs | Идентифицирует протоколы и связанные с ними виды валюты и суммы, которые могут использоваться при данном виде платежа. Специфицируется как список ID протокольных колличественных элементов (смотри раздел 7.7.3), содержащихся в списке видов платежа. |
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
ProtocolBrand | Протокольные элементы вида платежа, которые содержат информацию о виде платежа, используемого с определенным платежным протоколом (смотри раздел 7.7.2) |
PackagedContent | Опционные элементы Packaged Content (смотри раздел 3.7), содержащие информацию о виде платежа, который может использоваться платежным протоколом. Содержимое этой информации определяется в приложении для платежных протоколов, где описывается, как работает платежный протокол с IOTP. |
Пример элементов вида платежа имеется в разделе 11.2.
Элемент протокола вида платежа содержит информацию, которая является специфической для применения определенного протокола к некоторому виду платежей. Его определение предложено ниже.
<!ELEMENT ProtocolBrand (PackagedContent*) >
<!ATTLIST ProtocolBrand ProtocolId CDATA #REQUIRED
ProtocolBrandId CDATA #REQUIRED >
Атрибуты:
ProtocolId | Должен согласовываться со значением атрибута ProtocolId в элементе платежного протокола (смотри раздел 7.7.5). |
Значения ProtocolId должно быть уникальным в пределах элемента Brand, в противном случае происходит ошибка.
ProtocolBrandId | Это идентификатор вида платежа, который должен использоваться с конкретным платежным протоколом. Например, SET и EMV имеют свои определенные, различные значения для Brand Id, для каждого из протоколов. |
Корректные значения этого атрибута описаны в приложении для платежных протоколов, идентифицированных ProtocolId, которые определяют, как платежный протокол работает с IOTP.
Cодержимое:
PackagedContent | Опционные элементы Packaged Content (смотри раздел 3.7), содержащие информацию о протоколе и/или виде платежа, которые может использовать платежный протокол. Содержимое этой информации определяется в приложении для платежных протоколов. |
Элемент Protocol Amount связывает вид платежа с:
Его определение представлено ниже:
<!ELEMENT ProtocolAmount (PackagedContent*) >
<!ATTLIST ProtocolAmount ID ID #REQUIRED
PayProtocolRef IDREF #REQUIREDCurrencyAmountRefs IDREFS #REQUIRED
ContentSoftwareId CDATA #IMPLIED >
Атрибуты:
ID | идентификатор элемента, на который может ссылаться элемент Brand; или компонент выбора видов платежа, содержащийся в последующих сообщениях платежного запроса. Он однозначно идентифицирует элемент Protocol Amount для данной транзакции IOTP. |
PayProtocolRef | Содержит ссылку элемента (смотри раздел 3.5), которая указывает на элемент платежного протокола (смотри раздел 7.7.5), содержащийплатежный протокол и Кассира, которые могут использоваться для данного вида платежа. |
CurrencyAmountRefs | Содержит список ссылок элемента (смотри раздел 3.5), который указывает на элемент Currency Amount (смотри раздел 7.7.4), описывающий вид валюты и сумму, которые могут использоваться для данного вида платежа. |
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
PackagedContent | Опционные элементы Packaged Content (смотри раздел 3.7), содержащие информацию о протокольной сумме, которая может использоваться платежным протоколом. Содержимое этой информации определено в приложении для платежных протоколов. |
Примеры элементов Protocol Amount приведены в секции 11.2.
Элемент валютной суммы содержит в себе:
Один или более таких элементов заключены в каждом компоненте списка видов платежа. Его определение приведено ниже:
<!ELEMENT CurrencyAmount EMPTY >
<!ATTLIST CurrencyAmount ID ID #REQUIRED
Атрибуты:
ID | Идентификатор элемента, (Brand Selection), содержащиеся в последующих сообщениях платежного запроса. Он однозначно идентифицирует элемент Currency Amount данной транзакции IOTP. |
Amount | Указывает сумму, которая должна быть заплачена. Например $245.35 будет выражено как "245.35". Заметим, что значения меньше наименьшей целой величины вполне допустима. Например одна десятая цента будет записана как "0.001". |
CurrCodeType | Указывает CurrCode области. Этот атрибут включен с тем, чтобы была возможность поддержания нестандартных "валют" например “торговых марок” и т.д.. Атрибут может принимать значения: |
CurrCode | Код, идентифицирующий валюту, которая должна использоваться при платеже. Область корректных кодов валюты определена атрибутом CurrCodeType. |
Так как значения CurrCodeType управляются процедурой, описанной в секции 12, допускается определение пользователем собственных значений CurrCodeType. Примеры элементов Currency Amount представлены в разделе 11.2.
Элемент платежного протокола специфицирует детали для платежного протокола и для Кассира, которые могут использоваться для жанного видв платежа. Один или более таких элементов содержится в каждом списке видов платежа.
<!ELEMENT PayProtocol (PackagedContent*) >
<!ATTLIST PayProtocol ID ID #REQUIRED
xml:lang NMTOKEN #IMPLIED | ProtocolId NMTOKEN #REQUIRED |
ProtocolName CDATA #REQUIRED | ActionOrgRef NMTOKEN #REQUIRED |
PayReqNetLocn CDATA #IMPLIED | SecPayReqNetLocn CDATA #IMPLIED |
ContentSoftwareId CDATA #IMPLIED>
Атрибуты:
ID | Идентификатор элемента, на который может ссылаться элемент Brand; или компонент выбора вида платежа (Brand Selection), содержащиеся в последующих сообщениях платежного запроса. Он однозначно идентифицирует элемент PayProtocol данной транзакции IOTP. |
xml:lang | Определяет язык, используемый атрибутами и содержимым данного элемента. Смотри раздел 3.8. |
ProtocolId | Состоит из имени протокола и версии, например "SETv1.0". |
Значения ProtocolId определены схемой/методом платежа владельцев в документе, который описывает, как инкапсулировать платежный протокол в IOTP.
ProtocolName | Описание платежного протокола и его версии на языке, идентифицированном атрибутом xml:lang. Например "Secure Electronic Transaction Version 1.0". Его целью является помочь, если требуется, в предоставлении информации об используемом платежном протоколе. |
ActionOrgRef | Ссылка элемента (смотри раздел 3.5) на компонент Organisation для Кассира при данном платежном протоколе. |
PayReqNetLocn | Сетевая позиция, указывающая куда следует послать платежный запрос в отсутствии гарантии безопасности при заданном протоколе. |
Содержимое этого атрибута зависит от транспортного механизма (и должно быть согласованос документом [RFC1738].
SecPayReqNetLocn | Сетевая позиция, указывающая куда следует послать платежный запрос в условиях гарантии безопасности при заданном протоколе. Безопасный платеж предполагает для коммуникации с кассиром использование безопасного канала, такого как [SSL/TLS]. |
Содержимое этого атрибута должно согласовываться с регламентациями документа [RFC1738]. Смотри раздел 3.9.
ContentSoftwareIdСмотри раздел 14. Словарь.
Cодержимое:
PackagedContent | Опционные элементы Packaged Content (смотри раздел 3.7), содержащие информацию о протоколе, который используется платежным протоколом. Содержание этой информации определяется в приложении для платежных ппротоколов. |
Примеры элементов платежного протокола содержатся в разделе 11.2.
Компонент выбора вида платежа идентифицирует выбор вида платежа, платежный протокол и кассира. Этот элемент используется:
В базовой версии IOTP, целостность компонентов выбора вида платежа не гарантируется. Однако модификация компонентов выбора вида платежа может привести лишь к отказу обслуживания, если сам платежный протокол безопасен и контролирует модификацию или дублирование сообщений и может противостоять любым другим атакам.
Определение компонента выбора вида платежа представлено ниже.
<!ELEMENT BrandSelection (BrandSelBrandInfo?, BrandSelProtocolAmountInfo?,
BrandSelCurrencyAmountInfo?) >
<!ATTLIST BrandSelection ID ID #REQUIRED
BrandListRef NMTOKEN #REQUIRED | BrandRef NMTOKEN #REQUIRED |
ProtocolAmountRef NMTOKEN #REQUIRED
CurrencyAmountRef NMTOKEN #REQUIRED >
Атрибуты:
ID | Идентификатор, который однозначно определяет компонент выбора вида платежа транзакции. |
BrandListRef | Ссылка элемента (смотри раздел 3.5) компонента списка видов платежа, из которого был выбран Brand. |
BrandRef | Ссылка элемента Brand компонента списка видов платежа, который был выбран из списка и использован для платежа. |
ProtocolAmountRef | Ссылка элемента для Protocol Amount в пределах компонента списка видов платежа, который использован при платеже. |
CurrencyAmountRef | Ссылка элемента для Currency Amount в пределах компонента списка видов платежа, который использован при платеже. |
Cодержимое:
BrandSelBrandInfo, BrandSelProtocolAmountInfo, BrandSelCurrencyAmountInfo |
Содержит любые дополнительные данные, которые могут быть необходимы при конкретном платеже или протоколе. Смотри разделы 7.8.1, 7.8.2, и 7.8.3. |
Используются следующие правила:
Пример компонента выбора вида платежа включен в раздел 11.2.
Информационный элемент выбора вида платежа cсодержит любую дополнительную информацию, которая может быть необходима для какого-то конкретного вида платежа. Смотри приложение IOTP для платежных методов, где описано применние этого элемента.
<!ELEMENT BrandSelBrandInfo (PackagedContent+) >
<!ATTLIST BrandSelBrandInfo ID ID #REQUIRED ContentSoftwareId CDATA #IMPLIED >
Атрибуты:
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
PackagedContent | Элементы Packaged Content (смотри раздел 3.7), содержащие дополнительные данные, которые могут быть необходимы для конкретного вида платежа. Смотри приложение IOTP по платежным методам, где описаны методы использования данного элемента. |
Элемент Amount Info протокола выбора вида платежа содержит любую дополнительную информацию, зависящую от платежного протокола, которая может быть необходима для конкретного вида платежа или плптежного протокола. Смотри приложение IOTP по платежным методам, где описаны методы использования данного элемента.
<!ELEMENT BrandSelProtocolAmountInfo (PackagedContent+)>
<!ATTLIST BrandSelProtocolAmountInfo ID ID #REQUIRED
ContentSoftwareId CDATA #IMPLIED>
Атрибуты:
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
PackagedContent | Элементы Packaged Content (смотри раздел 3.7), которые могут содержать дополнительную информацию, необходимую для конкретного вида платежа. Смотри приложение IOTP по платежным методам, где описаны методы использования данного элемента. |
Информационный элемент валютной суммы выбора вида платежа содержит любую дополнительную информацию, зависящую от вида платежа и валюты, которая может быть необходима при конкретном виде платежа. Смотри приложение IOTP по платежным методам, где описаны методы использования данного элемента.
<!ELEMENT BrandSelCurrencyAmountInfo (PackagedContent+)>
<!ATTLIST BrandSelCurrencyAmountInfo ID ID #REQUIRED
ContentSoftwareId CDATA #IMPLIED>
Атрибуты:
ContentSoftwareId | Смотри раздел 14. Словарь. |
Cодержимое:
PackagedContent | Элементы Packaged Content (смотри раздел 3.7), которые содержат дополнительную информацию, относящуюся к виду платежа и валюты. Смотри приложение IOTP по платежным методам, где описано использование этого элемента. |
Компонент платежа содержит информацию, используемую для управления процедурой выполнения платежа. Он предоставляет информацию о:
Его определение выглядит следующим образом.
<!ELEMENT Payment EMPTY > StartAfterRefs NMTOKENS #IMPLIED> Атрибуты: Компонент платежной схемы содержит информацию платежного протокола для специфической платежной схемы, реализуемой между партнерами, вовлеченными в платеж, например [SET]-сообщение. Определение компонента представлено ниже. <!ELEMENT PaySchemeData (PackagedContent+) > Атрибуты: Cодержимое: Заметим, что: Платежная расписка представляет собой запись о платеже, которая показывает, какая сумма заплачена или получена. Она отдичается от расписки о покупке, тем что здесь нет записи о том, что куплено. Обычно в компоенте платежной расписки содержатся данные, которые описывают: Если использованный платежный метод сконфигироирован соответствующим образом, то компонент
платежной расписки должен содержать сообщения платежного протокола или ссылки на сообщения, которые подтверждают выполнение платежа. Точное определение содержимого платежной расписки зависит от метода платежа. Информация,
содержащаяся в компоненте платежной расписки, должна отображаться или каким-либо другим способом доводиться до сведения Покупателя. Если компонент платежной расписки содержит сообщения платежного протокола, тогда они должны быть обработаны программой метода платежа,чтобы преобразовать их в формат понятный Покупателю. Определение компонента платежной расписки. <!ELEMENT PayReceipt (PackagedContent*)> ContentSoftwareId CDATA #IMPLIED> Атрибуты: Программа клиента должна спасать все компоненты, на которые имеются ссылки, с тем чтобы платежная расписка могла быть воспроизведена, если это потребуется. Cодержимое: Заметим, что: Заметим, что должны присутствоать либо атрибут PayReceiptNameRefs, либо элемент PackagedContent или оба. Компонент Payment Note (платежное заывление) содержит дополнительную, несвязанную с платежом информацию, которую Кассир хочет предоставит покупателю. Например, если был произведен отзыв сделки или осуществлен депозит, тогда он может содержать информацию о балансе по завершении перевода. Данные должны дублировать информацию, содержащуюся в компоненте платежной расписки. Информация, содержащаяся в компоненте Payment Note должна быть отображена или
представлена каким-то иным способом покупателю. Для совместимости компонент Payment Note должен поддерживать как минимум содержимое типа "Plain Text", HTML и XML. Его определение представлено ниже. <!ELEMENT PaymentNote (PackagedContent+) > Атрибуты: Cодержимое: Компонент доставки содержит информацию, необходимую для доставки товаров или услуг. Его определение приведено ниже. <!ELEMENT Delivery (DeliveryData?, PackagedContent*) > Атрибуты: Если DelivExch = true, должен присутствовать элемент DeliveryData. Если DelivExch = false, он может отстутствовать. Атрибут DelivAndPayResp не должен иметь значение “истинно”, если DelivExch = “ложно”. На практике комбинирование блока отклика доставкии блока отклика платежа имеет смысл только в случае, когда Продавец, Кассир и Агент доставки принадлежат одной организации, так как: о Кассир должен иметь доступ к информации компонента Order, с тем чтобы знать что надо доставлять и Cодержимое: Элемент DeliveryData содержит информацию о том, куда и как должны доставляться товары или услуги. Его определение представлено ниже. <!ELEMENT DeliveryData (PackagedContent*) > ContentSoftwareId CDATA #IMPLIED> Атрибуты: Значения DelivMethod управляются процедурой, описанной в разделе 12, что допускает определение новых кодов пользователем. Безопасный запрос доставки предполагает использование безопасного канала, такого как [SSL/TLS] для того чтобы взаимодействовать с кассиром. Содержимое этого атрибута зависит от транспортного механизма и должно соответствовать регламентациям документа [RFC1738]. Смотри также раздел 3.9. Cодержимое: Информационный компонент доставки покупателя используется покупателем для спецификации идентификатора, который может быть использован им для идентификации доставки. Его определение приведено ниже: <!ELEMENT ConsumerDeliveryData EMPTY> Атрибуты: Компонент Delivery Note (накладная)содержит инструкции о доставке товаров или услу, или саму информацию о доставке. Это информация, которую частное лицо или организация, получающие накладную, могут использовать, когда осуществляется доставка. Для совместимости компонент Delivery Note должен поддерживать Plain Text, HTML и XML. Его определение представлено ниже. <!ELEMENT DeliveryNote (PackagedContent+) > Атрибуты: Cодержимое: Если содержимым сообщения доставки является сообщение Mime, тогда Delivery Note может запустить приложение, которое вызываеть реальный процесс доставки. Компонент Status содержит информацию состояния бизнес-процесса (успех или неудача) (смотри раздел 4.2). Его определение приведено ниже. <!ELEMENT Status EMPTY > ProcessState (NotYetStarted | InProgress | CompletedOk | Failed | ProcessError) #REQUIRED Атрибуты: “Непределено” означает, что тип документального обмена не может быть идентифицирован. Это может быть вызвано ошибкой исходного входного обмена сообщениями. Значения StatusType управляется процедурой, описанной в секции 12 (IANA), и допускающей определение новых значений пользователем. Заметим, что этот код сообщает об обработке блока запроса. Далее, после посылки блока отклика,
сопряженного с процессом, может осуществляться асинхронная обработка. CompletionCode может иметь до 14 символов. Этот атрибут должен отсутствовать в сообщении информационного запроса, когда Покупателю сервис-провайдером IOTP не был дан код ссылки. Этот атрибут может быть использован внутри блока информационного отклика (смотри раздел 8.13), для того чтобы предоставить код ссылки для транзакции, которя ранее была недоступна. Например, код упаковки может быть не присвоен в момент получения отклика доставки. Однако, если покупатель поздее выдаст запрос состояния транзакции, Агент доставки может проставить код упаковки в атрибут сообщения информационного отклика и послать его Покупателю. Код завершения является единственно необходимым, если атрибут ProcessState = Failed (неудача). Ниже следующая таблица содержит допустимые значения CompletionCode, которые могут использоваться и индицировать, возможно ли восстановление процесса. Рекомендуется, чтобы там, где это необходимо для дальнейшего разъяснения, использовался атрибут StatusDesc. Восстановление может осуществить Покупатель, повторно предложив блок отклика аутентификации с правильными данными. Восстановление возможно, если последнее сообщение от другой торговой роли получено снова. CompletionCode необходим, если атрибут ProcessState = Failed. Ниже следующая таблица содержит допустимые значения CompletionCode, которые могут использоваться и индицировать, когда возможно восстановление. Рекомендуется, чтобы атрибут StatusDesc использовался индивидуальными платежными схемами для предоставления дальнейших пояснений, там где это уместно. Ниже приведены опции восстановления. Если оплата не зависит от вида платежа, тогда покупатель решить проблему путем выбора другой валюты, если она имеется, или заменой вида платежа. Заметим, что это может потребовать замены кассира. Если оплата не зависит от вида платежа, тогда восстановление для некоторых видов кода завершения возможно для покупателя, который может выбрать другой вид платежа или новый платежный инструмент для того же вида платежа. Заметим, что это может потребовать замены кассира. Здесь применимы следующие коды: BrandNotSupp, PaymtCancelled, InsuffFunds, InstBrandInvalid, InstNotValid, BadInstrument и Unspecified. Восстановление прооцедуры платежа при покупках, зависящих от вида платежа возможно только в случае, если компонент выбора вида платежа, посланный продавцом покупателю, не изменился. На практике это означает, что должны использоваться тот же элемент вида платежа, платежный протокол и сумма. Единтвенно что можно изменить - это платежный инструмент. Любые другие изменения будут неприемлемы. Таблица, представленная ниже, содержит допустимые значения атрибута CompletionCode для доставки. Рекомендуется, чтобы для разъяснения ситуации использовался атрибут StatusDesc. Восстановление при неудаче или в случае частично завершенной доствки невозможно. Покупатель для получения текущего состояния транзакции должен использовать информационный запрос (смотри раздел 9.2.1). Код завершения необходим только в случае, если атрибут ProcessState = Failed. Ниже следующая таблица содержит допустимые значения атрибута CompletionCode, которые можно использовать. Рекомендуется, чтобы для разъяснения ситуации использовался атрибут StatusDesc. Код завершения требуется только тогда, когда атрибут ProcessState = Failed. Таблица, представленная ниже, содержит допустимые значения атрибута CompletionCode, которые могут быть использованы. Рекомендуется, чтобы для разъяснения ситуации использовался атрибут StatusDesc. Код завершения требуется только тогда, когда атрибут ProcessState = Failed. Таблица, представленная ниже, содержит допустимые значения атрибута CompletionCode, которые могут быть использованы. Рекомендуется, чтобы для разъяснения ситуации использовался атрибут StatusDesc. Компонент данных торговой роли содержит данные, которые должны быть пересланы между торговыми ролями вовлеченными в транзакцию. Компоненты торговой роли определяют: o организацию, которая сформировала компонент и Они являются первыми сформированными и включенными в блок “отклик” и затем скопированных в
соответствующий блок “запрос”. Например, кассиру может оказаться нужно проинформировать агента доставки о том, что платеж через кредитную карточку авторизован (but not captured). В другом примере продавцу может понадобиться предоставить кассиру некоторую специфическую информацию о Покупателе. Его определение представлено ниже. <!ELEMENT TradingRoleData (PackagedContent+) > Атрибуты: Cодержимое: Ниже описаны правила, которые определяют, что следует делать с компонентами данных торговой роли. Компонент типа информационного запроса содержит информацию, которая указывает тип процесса, о котором получен запрос. Его определение представлено ниже. <!ELEMENT InquiryType EMPTY > Атрибуты: Type ElRef Содержит ссылку элемента (смотри раздел 3.5) на компонент, к которому относится информационный запрос. Это: Определения структур XML для подписей и сертификатов описаны в документе "Digital Signatures for the
Internet Open Trading Protocol" Kent Davidson и Yoshiaki Kawatsura, опубликованном одновременно с этим документом - смотри [IOTPDSIG]. В будущем ожидается, что новые версии IOTP зафиксируют какой-то метод цифровой подписи XML в к ачестве стандарта. Каждый компонент подписи цифровым образом подтвержжает один или более блоков или компонентов,
включая компоненты подписи. Компонент подпись: Заметим, что может быть много элементов Value, которые содержат подписи элемента Manifest. Компонент Signature может иметь один из четырех типов: Для общего объяснения подписей смотри раздел 6. Определения элементов и атрибутов содержится в [IOTPDSIG]. Ниже представлена дополнительная информация, которая описывает, как эти элементы и атрибуты используются в IOTP. Элемент SIGNATURE Элемент MANIFEST Опционный атрибут LocatorHrefBase содержит текст, который должен быть включен до текста, содержащегося в атрибуте LocatorHREF всех элементов Digest в пределах элемента Manifest. Целью элемента Manifest является сокращение значения атрибута LocatorHREF, так как первая часть атрибутов LocatorHREF в подписи идентична. Обычно в IOTP он будет содержать все символы атрибута LocatorHref вплоть до ("#") (смотри текст ниже). Элементы ALGORITHM и PARAMETER Рекомендуется, чтобы использовался также следующий алгоритм подписи: Кроме того могут использоваться другие специфические алгоритмы схем платежа. В этом случае
значение атрибута name, которое надлежит использовать, специфицировано в приложении по платежным схемам. Один алгоритм может использовать другие алгоритмы через посредство элемента Parameter,
например: <Algorithm ID=A1 type="digest" name="urn:ibm:dom-hash"> Элемент DIGEST Атрибут LocatorHREF идентифицирует элемент IOTP, который подписан цифровым образом. Он состоит из: Прежде чем анализировать структуру атрибута LocatorHREF, он должен быть объединен со значением атрибута LocatorHrefBase элемента Manifest (смотри непосредственно выше). Элемент атрибут Должен существовать один и только один элемент атрибута, который содержит атрибут Type со значением типа подписи и содержимым равным одному из: OfferResponse, PaymentResponse, DeliveryResponse, AuthenticationRequest, AuthenticationResponse, PingRequest или PingResponse; в зависимости от типа подписи. Значения содержимого элемента атрибута управляются процедурой, определенной в разделе 12 (IANA), и допускающей определение значений пользователем. Атрибут Critical должен быть установлен равным true. Элемент ORIGINATORINFO Атрибут OriginatorRef элемента OriginatorInfo должен всегда присутствовать и содержать ссылку элемента (смотри раздел 3.5) на компонент Organisation организации, которая сформировала компонент Signature. Элемент RECIPIENTINFO Атрибут RecipientRefs содержит список ссылок (смотри раздел 3.5), указывающих на организации, которые должны будут проверить подлинность подписи. Элемент Manifest подписи, который имеет тип OfferResponse должен содержать элементы дайджеста для следующих компонентов: Подпись отклика предложения должна также содержать элементы дайджеста для компонентов, которые описывают каждую из организаций, которая может или будет нуждаться в верификации подписи. Это включает в себя: Элемент Manifest компонента подписи платежной расписки должен содержать элеиенты Digest для следующих компонентов: Элемент Manifest компонента отклика доставки должен содержать элементы Digest для следующих компоентов: Элемент Manifest компонента подписи запроса аутентификации должен содержать элементы Digest для следующих компонентов: Элемент Manifest компонента подписи отклика аутентификации должен содержать элементы Digest для следующих компонентов: Если информационный запрос подписан (смотри раздел 9.2.1) элемент Manifest компонента подписи
информационного запроса должен содержать элементы Digest компонента типа информационного запроса и, если присутствует, компонент схемы платежа. Если информационный отклик подписан (смотри раздел 9.2.1) элемент Manifest компонента подписи
информационного запроса должен содержать элементы Digest блока торгового отклика и компонент Status. Если запрос Ping подписан (смотри раздел 9.2.2), элемент Manifest компонента подписи запроса Ping должен содержать элементы Digest для всех компонентов Organisation. Если отклик Ping подписан (смотри раздел 9.2.2), элемент Manifest компонента подписи запроса Ping должен содержать элементы Digest для всех компонентов Organisation. Определения структур XML для подписей и сертификатов описаны в работе "Digital Signatures for the Internet Open Trading Protocol", смотри [IOTPDSIG]. Смотри также начало раздела 7.19. Компонент Certificate содержит цифровой сертификат. Они используются только, когда, например, использована асиметричная криптография и верифицирующий получатель подписи не получил еще общедоступного ключа (Public Key). Структура сертификата определена в [IOTPDSIG]. Подробные определения упомянутых выше элементов и атрибутов содержатся в [IOTPDSIG]. Далее представлена дополнительная информация, которая описывает, как эти элементы и атрибуты используются в IOTP. Компонент CERTIFICATE Элемент VALUE Компонент Error содержит информацию о технических ошибках (смотри раздел 4.1) в сообщении IOTP, которое было получено одной из торговых ролей, вовлеченных в сделку. Для ясности ниже приведены две фразы, которые определяют использование компонента Error: Определение компонента Error представлено ниже. <!ELEMENT ErrorComp (ErrorLocation+, PackagedContent*) > Атрибуты: Если атрибут Severity не равен TransientError, тогда значение этого атрибута игнорируется. Cодержимое: Если Severity ошибки не равно TransientError, может быть, если требуется, специфицировано более одного ErrorLocation, в зависимости от природы ошибки (смотри раздел 7.21.2) и от конкретной реализации программы. Если об ошибке уведомляют более чем один компонент Error в сообщении, следует выполнять обработку компонента Error с наивысшим значением атрибута severity. В этом контексте, HardError имеет выше уровень “серьезности” (severity), чем TransientError, который имеет серьезность выше, чем Warning. Если приложение генерирует сообщение об ошибке с компонентом Error, где атрибут
Severity = Warning, тогда, если сообщение об ошибке не содержит другого компонента ошибки с атрибутом Severity выше, чем Warning, сообщение должно включать торговые блоки и компоненты, которые следовало бы включить, если бы сообщения об ошибке отсутствовало. Если сообщение получено с компонентом Error, где Severity = Warning, тогда: Если предполагается продолжить транзакцию, тогда, если нет других компонентов Error с более
высоким уровнем серьезности, следует проверить, что наличиствуют торговые блоки и компоненты, необходимые для продолжения транзакции. Если они не сформированы, то вырабатывается сообщение с компонентом Error и Severity = HardError. Если приложение генерирует сообщение с компонентом Error, где атрибут Severity = TransientError, тогда в сообщение должен быть только один компонент Error. Кроме того, должен присутствовать атрибут MinRetrySecs. Если сообщение, уведомляющее об ошибке получено с компонентом Error, где Severity = TransientError тогда: Если приложение генерирует сообщение об ошибке с компонентом Error, где атрибут Severity = HardError, тогда в сообщении должен быть только один компонент Error. Если получено сообщение с компонентом Error, где атрибут Severity = HardError, транзакция прерывается. Ниже следующая таблица содержит допустимые значения атрибута ErrorCode компонента Error. Первое предложение описания содержит текст, который должен использоваться для описания ошибки при отображении. Индивидуальные реализации могут транслировать его на альтернативные языки по своему усмотрению. ErrorCode не должен быть длиннее 14 символов. Для плохо сформатированного XML, следует попытаться извлечь блок ссылок транзакции, с тем чтобы корректно сформировать отклик Error. В этом случае следует установить PackagedContent компонента Error соответствующим типу пропущенного элемента. В этом случае следует установить PackagedContent компонента Error соответствующим типу пропущенного атрибута. о содержимое элемента не согласуется с содержимым других элементовили их атрибутов или В этом случае следует создать элементы ErrorLocation, которые определяют все несогласованные атрибуты или элементы. Если транспортный механизм сервера/системы (например, HTTP) занят, следует использовать транспортные ошибки. Этот код нужно использовать в связи с серверами/системами IOTP или другими аналогичными системами, с которыми связан IOTP. Элемент Error Location указывает элемент и опционно атрибут в сообщении, с которым ассоциируется ошибка. Он содержит ссылку на сообщение IOTP, торговый блок, торговый компонент, элемент и атрибут, где обнаружена ошибка. <!ELEMENT ErrorLocation EMPTY > AttName NMTOKEN #IMPLIED> Атрибуты: Заметим, что следует включать как можно больше атрибутов. Например, если атрибут в дочернем элементе торгового компонента содержит неверное значение, тогда должны присутствовать все атрибуты ErrorLocation. Торговые блоки являются дочерними элементами IOTP-сообщения верхнего уровня, которое послано в форме [XML]-документа от одного партнера торговой операции к другому. Каждый трговый блок состоит из одного или более торговых компонентов (смотри раздел 7). Это проиллюстрировано на диаграмме. Торговые блоки определены как часть определения сообщения IOTP (смотри раздел 3.1.1). Определение элемента сообщения IOTP представлено ниже: <!ELEMENT IotpMessage ) > Далее в данном разделе определены торговые блоки данной версии IOTP. Это: Блок ссылок транзакции определен в разделе 3.3. Торговый блок TPO содержит опции, которые применяются в транзакции IOTP. Определение торгового блока TPO представлено ниже. <!ELEMENT TpoBlk ( ProtocolOptions, BrandList*, Org* )> Атрибуты: Cодержимое: Блок TPO должен содержать: Блок выбора TPO содержит результаты выбора, сделанного из списка, содержащегося в блоке протокольных опций (смотри раздел 8.1). Определение блока выбора TPO предлагается ниже. <!ELEMENT TpoSelectionBlk (BrandSelection+) > Атрибуты: Cодержимое: Блок выбора TPO должен содержать по одному компоненту выбора вида платежа для каждого списка видов платежа блока TPO. Блок отклика Offer содержит подробности о товарах, услугах, сумме, инструкций доставки или финансовых операциях, которые должны быть осуществлоены. Его определение дано ниже. <!ELEMENT OfferRespBlk (Status, Order?, Payment*, Delivery?, TradingRoleData*)> Атрибуты: Cодержимое: Компонент Order должен присутствовать, если только атрибут ProcessState компонента Status не равен Failed. Блок отклика Offer должен содержать: Блок запроса аутентификации содержит данные, которые используются одной из торговых ролей для получения информации и опционно для аутентификации другой торговой роли. Этот блок содержит: Его определение предагается ниже. <!ELEMENT AuthReqBlk (AuthReq*, TradingRoleInfoReq?)> Атрибуты: Cодержимое: Если присутствует один компонент запроса аутентификации, тогда именно он и должен использоваться.
Если присутствует несколько компонентов запроса аутентификации, тогда получатель должен выбрать один компонент, основываясь на своих предпочтениях и возможностях программного обеспечения. Если нет ни одного компонента запроса аутентификации, это означает, что блок аутентификационного запроса запрашивает присылку компонентов Organisation, как это специфицировано в компоненте информационного запроса торговой роли. В аутентификационном блоке должен быть по крайней мере один компонент (аутентификационного запроса или информационного запроса торговой роли), в противном случае имеет место ошибка. Блок отклика аутентификации содержит отклик, который является результатом обработки блока запроса аутентификации. Его определение представлено ниже. <!ELEMENT AuthRespBlk (AuthResp?, Org*) > Атрибуты: Cодержимое: Компоненты, присутствующие в блоке отклика аутентификации должны согласовываться с требованиями соответствующего блока аутентификационного запроса, в противном случае имеет место ошибка. Блок состояния аутентификации индицирует успех или неудачу верификации блока отклика аутентификации аутентификатором. Его определение представлено ниже. <!ELEMENT AuthStatusBlk (Status) > Атрибуты: Cодержимое: Блок платежного запроса содержит информацию, которая запускает процедуру платежа. Его описание представлено ниже. <!ELEMENT PayReqBlk (Status+, BrandList, BrandSelection, Атрибуты: Cодержимое: Блок платежного запроса должен содержать: Блок платежного обмена содержит специфические данные о платежной схеме, которыми обмениваются две торговые роли в рамках сделки. Его определение представлено ниже. <!ELEMENT PayExchBlk (PaySchemeData+)> Атрибуты: Cодержимое: Этот блок платежного отклика содержит информацию о состоянии платежа, опционной платежной расписке и опционные сообщения платежного протокола. Его определение представлено ниже. <!ELEMENT PayRespBlk (Status, PayReceipt?, PaySchemeData?, Атрибуты: Cодержимое: Блок запроса доставки содержит подробности о товарах или услугах, которые должны быть предоставлены вместе с подписью, которая позволяет удостовериться, что доставка была авторизована. Его определение приведено ниже. <!ELEMENT DeliveryReqBlk (Status+, Order, Org*, Delivery, Атрибуты: Cодержимое: Блок запроса доставки содержит: Блок отклика доставки содержит Delivery Note, содержащую подробности о том как будут доставляться товары. Его определение представлено ниже. Заметим, что в блоке отклика Delivery элемент состояния доставки с DeliveryStatusCode равным NotYetStarted или InProgress является нелегальным. <!ELEMENT DeliveryRespBlk (Status, DeliveryNote)> Атрибуты: Cодержимое: Торговый блок информационного запроса содержит компоненттип запроса и опционно платежной схемы. <!ELEMENT InquiryReqBlk ( InquiryType, PaySchemeData? ) > Атрибуты: Cодержимое: Торговый блок информационного отклика содержит компонент Status и опционно компонент Payment Scheme. Его целью является осуществление запроса о текущем состоянии транзакции или сервера. <!ELEMENT InquiryRespBlk (Status, PaySchemeData?)> Атрибуты: Cодержимое: Блок запроса Ping используется, чтобы определить, работает ли сервер и является ли криптография совместимой. Определение блока запроса Ping предложено ниже. <!ELEMENT PingReqBlk (Org*)> Атрибуты: Cодержимое: Опционные компоненты Organisation (смотри раздел 7.6). Если нет ни одного компонента Organisation, тогда запрос Ping является анонимным и служит для проверки, работает ли сейчас сервер. Однако, если присутствуют компоненты Organisation, это указывает, что отправитель запроса Ping хочет проверить, могут ли быть обработаны цифровые подписи. В этом случае отправитель включает: Эти компоненты используются для формирования подписи блока отклика Ping. Блок отклика Ping предоставляет результат выполнения запроса Ping. Он содержит компонент Organisation, который идентифицирует отправителя отклика Ping. Если запрос Ping, для которого этот блок является откликом, содержал компоненты Organisation, тогда он также содержит эти компоненты Organisation. <!ELEMENT PingRespBlk (Org+)> Атрибуты: Cодержимое: Компоненты Organisation отправителя отклика Ping всегда содержат кроме того компоненты Organisation, посланные в запросе Ping. Значения статусного кода Ping не включают в себя такие значения как Fail, так как, когда программа, получающая сообщение запроса Ping, не работает, не будет послано никакого отклика Ping. Блок Signature содержит один или более компонентов Signature и соответствующих сертификатов (если требуется), которые подтверждают данные в рамках данной транзакции. Определение компонента Signature и сертификатов содержится в статье "Digital Signatures for the Internet Open Trading Protocol", смотри [IOTPDSIG]. Описание их применения в IOTP можно найти в разделах 7.19 и 7.20. Определение блока Signature представлено ниже: <!ELEMENT IotpSignatures (Signature+, Certificate*) > Атрибуты: Cодержимое: Содержимое блока Signature зависит от торгового блока, который содержится в том же сообщении, что и блок Signature. Блок подписи, который содержится в том же сообщении, что и блок отклика Offer, несет в себе только компонент подписи отклика Offer (смотри раздел 7.19.2). Блок Signature, который содержится в том же сообщении, что и блок платежного запроса, содержит в себе: Блок подписи, который содержится в том же сообщении, что и блок платежного отклика, содержит только компонент подписи платежной расписки (смотри раздел 7.19.3), сформированной на этом этапе (шаге). Блок подписи, который содержится в том же сообщении, что и блок запроса доставки, содержит: Блок Signature, который содержится в том же сообщении, что и блок отклика доставки, содержит только компонент подписи отклика Delivery (смотри раздел 7.19.4), сформированный на этом шаге. Торговый блок Error содержит один или более компонентов Error (смотри раздел 7.21), которые несет в себе информацию о технических ошибках (смотри раздел 4.1) в сообщении IOTP, полученном одной из торговых ролей, вовлеченных в сделку. Ниже представлены две фразы, которые используются в описании торгового блока Error: Торговый блок Error может содержаться в любом сообщении, уведомляющем об ошибке. Реакция на такое сообщение зависит от серьезности (severity) ошибки. Разъяснения различных значений серьезности ошибки (и сопряженных с ними действий) дано в определении компонента Error. Несмотря на то что торговый блок Error может уведомлять о многих различных ошибках, используя несколько компонентов Error, разработчики приложений могут и не поддерживать такую возможность. Структура торгового блока Error представлена ниже. <!ELEMENT ErrorBlk (ErrorComp+, PaySchemeData*) > Атрибуты: Cодержимое: Блок Cancel используется одной торговой ролью чтобы информировать остальных о том, что транзакция аннулируется. Пример использования включает в себя: Его определение имеет вид. <!ELEMENT CancelBlk (Status) > Атрибуты: Cодержимое: Базовая версия протокола IOTP поддерживает три типа транзакций. Среди них: - Депозит - Транзакция запроса состояния и Хотя транзакции аутентификации могут выполняться сами по себе, опционно любая платежная операция
может предшествоваться аутентификацией. Остальная часть данного раздела поделена на две части, где описывается: Транзакции, имеющие отношение к аутентификации и платежу состоят из шести документальных обменов, которые объединяются в последовательности, чтобы реализовать определенную транзакцию. Вообще имеется теснаое но не точное соответствие между документальным и торговым обменами. Главное отличие заключается в том, что некоторые документальные обмены включают в себя часть или все два торговых обменов одновременно для того чтобы минимизировать число IOTP-сообщений, посылаемых через Интернет. Эти шесть документальных обменов включают в себя: Эти документальные обмены скомбинированы вместе в различные последовательности, чтобы реализовать каждую из транзакций. Способ, которым они могут комбинироваться проиллюстрирован на рис. 17. Рис. 17. Блок-диаграмма обмена сообщениями платежа и аутентификации Допустимые комбинации документального обмена зависят от конкретного типа транзакции IOTP. Далее рассматриваются методы обработки рабочих ошибок (Business Errors) в процессе
документального обмена (смотри раздел 4.2). Документальный обмен аутентификации является непосредственной реализацией торгового обмена аутентификации (смотри раздел 2.2.4). Он включает в себя: Аутентификация состоит из: Документальный обмен аутентификации предполагает также: Запрос аутентификации может быть подписан цифровым образом, что позволяет аутентифицируемому, проверить доверительные параметры (credentials) аутентификатора. IOTP-сообщения, которые используются в таком обмене, представлены на рис. 18. Рис. 18. Документальный обмен аутентификации При получении ссобщения-запроса TPO & Authentication (смотри ниже), аутентифицируемый может: Получив сообщение-отклик Authentication (смотри ниже), аутентификатор должен в ответ послать сообщение состояния аутентификации, содержащее блок Status с компонентом Status, где StatusType = Authentication и: Получив сообщение состояния аутентификации (смотри ниже), аутентифицируемый должен проверить компонент Status в блоке состояния. Если он указывает на: - - Если аутентификатор получает от Покупателя сообщение IOTP, содержащее блок Cancel, тогда аутентифицируемый может обратиться к сетевому узлу CancelNetLocn, специифицированному элементом торговой роли в компоненте Organisation для аутентификатора, указанного в блоке опций торгового протокола. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение содержит в себе: Каждый из них описан ниже. Блок опций торгового протокола Блок опций торгового протокола (смотри раздел 8.1) должен содержать следующие торговые компоненты: Блок запроса аутентификации Блок запроса аутентификации (смотри раздел 8.4) должен содержать следующие торговые компоненты: Блок подписи (Запрос аутентификации) Если запрос аутентификации был снабжен цифровой подписью, то должен быть включен блок Signature. Он содержит дайджесты следующих XML-элементов: Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение содержит в себе: Блок отклика AUTHENTICATION Блок SIGNATURE (Отклик аутентификации) Если элемент Algorithm (смотри раздел 12) компонента запроса аутентификации содержащийся в блоке запроса аутентификации, указывает, что отклик аутентификации должен содержать цифровую подпись, тогда блок Signature должен быть включен в то же сообщение, где размещается блок отклика аутентификации. Компонент Signature содержит элементы дайджестов для следующиз XML-элементов: Не следует предполагать, что все торговые роли могут поддерживать цифровую подпись данных. В частности не нужно думать, что эта опция поддерживается Покупателем. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение содержит в себе: Блок состоояния аутентификации Блок состоояния аутентификации (смотри раздел 8.6) должен содержать следующие торговые компоненты: Блок SIGNATURE (состояние аутентификации) Если блок состояния аутентификации подписан цифровым образом, тогда блок Signature должен включать то что содержать дайджесты следующих XML-элементов: - компонент Status (смотри раздел 7.16). Если за документальным обменом аутентификации следует документальный обмен предложения (Offer) (смотри раздел 9.1.2), тогда блок состояния аутентификации и блок подписи (состояние аутентификации) могут объединяться с: Обмен документами предложения oвстречается в двух формах: Каждый из этих типов документального обмена предложения может следовать за бокументальным обменом аутентификации (смотри раздел 9.1.1). В документальном обмене предложения, зависящего от вида платежа блоки TPO отклика Offer посылаются отдельно продавцом покупателю, т.e.: Это проиллюстрировано на диаграмме ниже (рис. 19). … продолжение ... Покупатель идентифицирует документальный обмен предложения, зависимого от вида платежа, с помощью отсутствия блока отклика Offer в первом сообщении IOTP. Обработка сообщений Получив сообщение TPO (смотри ниже), Покупатель может: Получив сообщение выбора TPO (смотри ниже), Продавец может: Получив сообщение отклика Offer (смотри ниже), Покупатель может: Если продавец получает сообщение IOTP, содержащее блок Cancel, покупатель вероятно обратится в сетевой узел CancelNetLocn, специфицированный в элементе торговой роли компонента Organisation продавца. Если покупатель получает сообщение, содержащее блок Cancel, тогда информация, содержащаяся в сообщении должна быть доведена до сведения покупателя. В документальном обмене предложения, независящего от вида платежа, блоки TPO и отклика Offer посылаются вместе от продавца к покупателю, т.e. имеется одно сообщение IOTP, которое содержит блоки TPO и отклика Offer. Обмен сообщениями проиллюстрирован на рис. 20 ниже: … Продолжение ... Заметим, что документальный обмен предложения, независимого от видов платежа происходит, когда продавец предлагает покупателю лишь один вид платежа, протокол и вид валюты. Это может произойти и при нескольких предлагаемых видах платежа, если имеется один Кассир и все виды платежа используют один и тот же набор протоколов. Заметим, что блоки TPO и отклика Offer могут быть посланы в одном IOTP-сообщении (смотри документальный обмен предложения, зависимого от вида платежа), даже если блок отклика Offer не изменяется. Однако это увеличивает число сообщений в транзакции и следовательно может увеличить время отклика. Приложения, поддерживающие торговую роль Покупателя, должны проверять наличие блока отклика Offer в первом сообщении IOTP с тем чтобы определить, является ли обмен зависимым от вида платежа. Принципы обработки сообщений Получив сообщение TPO и отклика Offer (смотри ниже), Покупатель может: Если продавец поличает сообщение, содержащее блок Cancel, тогда Покупатель вероятно направится в сетевой узел CancelNetLocn, специфицированный в элементе торговой роли компонента Organisation для Продавца. Сообщение используется только в документальном обмене предложения, зависящего от вида платежа.
Помимо блока ссылок транзакции (смотри раздел 3.3), в это сообщение входит блок опций торгового протокола (смотри раздел
8.1), который описан ниже. Блок TPO (TRADING PROTOCOL OPTIONS) Блок опций торгового протокола (смотри раздел 8.1) должен содержать следующие торговые компоненты: Если транзакция IOTP включает доставку, тогда блок TPO должен содержать: Блоки подписи и состояния аутентификации Если за документальным обменом Offer следует обмен аутентификации, тогда сообщение TPO может также содержать: Для получения подробностей смотри раздел 9.1.1.4 (сообщение о состоянии аутентификации). Сообщение выбора TPO используется только в документальном обмене предложения, зависящего от вида платежа. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение включает в себя блок выбора TPO (смотри раздел 8.1), который описан ниже. Блок выбора TPO (смотри раздел 8.2) содержит: Сообщение отклика Offer используется только в документальном обмене предложения, зависящего от вида платежа. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение состоит из: Блок отклика предложения (блок отклика OFFER) Блок отклика Offer (смотри раздел 8.3) содержит следующие компоненты: Блок подписи (отклик предложения) Если блок состояния аутентификации снабжен цифровой подписью, тогда должен быть включен блок Signature, который содержит компонент подписи (смотри раздел 7.19) с элементами дайджестов для следующих XML-элементов: Если отклик Offer снабжен цифровой подписью, тогда должен быть включен блок Signature, который содержит компонент подписи (смотри раздел 7.19) с элементами дайджестов для следующих XML-элементов: Сообщение TPO и отклика Offer используется только в документальном обмене предложения,
независящего от вида платежа. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение включает в себя: Блок TPO (TRADING PROTOCOL OPTIONS) Это тот же самый блок опций торгового протокола, что описан в IOTP-сообщении TPO (смотри раздел 9.1.2.3). Блок отклика OFFER Это тот же самый блок отклика Offer, что и в сообщении отклика Offer (смотри раздел 9.1.2.5). Если до документального обмена Offer имел место обмен аутентификации, тогда сообщение TPO и отклика Offer может содержать (смотри раздел 8.6). Блок подписи тот же самый блок Signature, что и в сообщении отклика Offer (смотри раздел 9.1.2.5), со следующими добавлениями: Документальный обмен платежа является непосредственной реализацией последней части платежного обмена (смотри раздел 2.2.2) после того как вид платежа выбран покупателем. Платежный обмен состоит из: IOTP-сообщения, которые используются при платежном обмене показаны на рис. 21. Рис. 21. Обмен платежными документами Получив сообщение платежного запроса, кассир должен проверить, авторизован ли данный платеж (смотри раздел 6). Он может затем: Получив платежное ообщение, Покупатель может: Получив платежное ообщение, кассир может: Получив платежное ообщение-отклик, Покупатель может: Если покупатель получает сообщение, содержащее блок Cancel, тогда информация из сообщения IOTP должна быть доведена до сведения покупателя и не должны предприниматься никакие другие действия. Если кассир получает сообщение, содержащее блок Cancel, тогда покупатель вероятно обратится в сетевой узел CancelNetLocn, специфицированный элементом торговой роли в компоненте Organisation для кассира, здесь он сможет предпринять некоторые дальнейшие действия. Если продавец получает сообщение, содержащее блок Cancel, тогда покупатель должен завершить операцию платежа. В этом случае покупатель вероятно обратится в сетевой узел CancelNetLocn, специфицированный элементом торговой роли в компоненте Organisation для продавца, здесь он сможет предпринять некоторые дальнейшие действия. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение может содержать: Блок платежного запроса (смотри раздел 8.7) состоит из: Заметим, что: Блок подписи (запрос платежа) Если предшествующий документальный обмен предложения содержал цифровую подпись(смотри раздел 9.1.2.5), или подпись была включена в предыдущий платежный отклик (смотри раздел 9.1.3.4), тогда они должны обе быть скопированы в блок подписи сообщения платежного запроса. Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение включает в себя блок платежного обмена. Блок платежного обмена (смотри раздел 8.8) включает в себя: Помимо блока ссылок транзакции (смотри раздел 3.3), это сообщение включает в себя: Платежный блок отклика (смотри раздел 8.9) включает в себя: Блок подписи (платежный отклик) Если предоставлена подписанная платежная расписка, что индицируется атрибутом SignedPayReceipt= True компонента Payment, тогда блок Signature должен содержать компонент Signature, который содержит элементы дайджеста следующих видов: Документальный обмен доставки является непосредственной реализацией торгового обмена доставки (смотри раздел 2.2.3). Он состоит из следующих шагов: Схема обмена сообщениями представлена на рис. 22. Рис. 22. Обмен документами при доставке Получив сообщение-запрос доставки, агент доставки должен проверить авторизацию выполнения такой операции (смотри раздел 6). Далее он может: Получив сообщение-отклик доставки, покупатель может считать, что транзакция завершена. Если покупатель получает сообщение, содержащее блок Cancel, информация, содержащаяся в сообщении должна быть доведена до сведения покупателя и дальнейшая работа прервана. Сообщение запроса доставки IOTP состоит из: Блок запроса доставки (смотри раздел 8.10) содержит: Блок подписи (запрос доставки) Если предыдущиц документальный обмен Offer содержит подпись отклика Offer илт платежный обмен содержит подпись платежного отклика, тогда тогда они должны быть скопированы в блок подписи. Сообщение-отклик доставки содержит блок отклика доставки и опционно блок подписи. Блок отклика доставки содержит: Блок подписи (отклик доставки) Блок подписи должен содержать один компонент подписи, который содержит элементы дайджеста, которые относятся к: Документальный обмен платежа и доставки представляет собой комбинацию последней части торгового обмена платежа (смотри раздел 2.2.2) и обмена доставки (смотри раздел 2.2.3). Он состоит из: IOTP-сообщения, которые вовлечены в этот процесс, показаны на рис. 23. Рис. 23. Документальный обмен платежа и доставки Блоки отклика доставки и платежного отклика могут быть обхединены в одном сообщении только если кассир имеет необходимую информацию, чтобы послать блок отклика доставки. Это вероятно так, если роли продавца, кассира и агента доставки совмещены. Атрибут DelivAndPayResp компонента доставки (смотри раздел 7.13), содержащийся в блоке отклика Offer (смотри раздел 8.3), делается равным True, если блоки отклика доставки и платежного отклика объединены в одном сообщении, и равен False, если блоки отклика доставки и платежного отклика посланы в разных IOTP-сообщениях. Получив сообщение платежного запроса или платежного обмена, кассир должен выполнить некоторые действия по документальному платежному обмену (смотри раздел 9.1.3.1). Получив сообщение платежного обмена, покупатель также должен выполнить некоторые действия по платежному документальному обмену (смотри раздел 9.1.3.1). По получении сообщения платежного отклика и отклика доставки транзакция завершена. Если покупатель получает сообщение IOTP, содержащее блок Cancel, информация, содержащаяся в сообщении должна быть доведена до сведения покупателя и более никаких действий не предпринимается. Если кассир получает сообщение IOTP, содержащее блок Cancel, тогда покупатель вероятно обратится в сетевой узел CancelNetLocn, специфицированный элементом торговой роли в компоненте Organisation для кассира. Если продавец получает сообщение IOTP, содержащее блок Cancel, тогда покупатель должен прервать операцию платежа. В этом случае покупатель вероятно обратится в сетевой узел CancelNetLocn, специфицированный элементом торговой роли в компоненте Organisation для продавца. Здесь он может предпринять какие-то дальнейшие действия. Содержимое этого сообщения то же, что и для запроса при платежном документальном обмене (смотри раздел 9.1.3.2). Содержимое этого сообщения то же, что и для платежного документального обмена (смотри раздел 9.1.3.3). Содержимое этого сообщения включает в себя: Содержимое блока платежного отклика то же, что и в платежном отклике при платежном документальном обмене (смотри раздел 9.1.3.4). Блок SIGNATURE (отклик PAYMENT) Содержимое этого блока то же, что и в блоке Signature (платежный отклик) при платежном документальном обменее (смотри раздел 9.1.3.4). Содержимое блока отклика доставки то же, что и в блоке отклика доставки при платежном документальном обменее (смотри раздел 9.1.4.3). Базовая транзакция аутентификации может иметь место в любое время между торговыми ролями, вовлеченными в сделку IOTP. Это означает, что она может иметь место: Базовая транзакция IOTP аутентификации предполагает обмен аутентификационными документами (смотри раздел 9.1.1) как это показано на рис. 24. Рис. 24. Базовая транзакция аутентификации Пример, использующий базовую транзакцию аутентификации, включает в себя следующие процедуры: Базовая транзакция депозита поддерживает операции по размещению депозита электронных средств в финансовой орнганизации. Финансовая организация в этой операции выполняет роль продавца (депозита электронных средств), который предлагает эту услугу за определенное вознаграждение, которое может поступить, например, с некоторого счета клиента в другом банке. Базовая транзакция депозита включает в себя следующие документальные обмены: Способ, с помощью которого эти документальные обмены могут взаимодействовать, показан на рис. 25. Смотри раздел 9.1.12, чтобы определить какие комбинации документальных обменов применимы к конкретным транзакциям. Заметим, что: Базовая транзакция покупки поддерживает покупку товаров или услуг с применением любых платежных методов. Она включает в себя следующие документальные обмены: Способы, какими эти документальные обмена могут комбинироваться показаны на рис. 26. Чтобы определить, какие комбинации документальных обменов встречаются в каждой из транзакций смотри раздел 9.1.12. Процесс возврата денег обычно состоит из: Базовая транзакция возврата денег поддерживает субнабор возможностей перчисленных выше, в частности поддерживает: Способы того, как эти документальные обмены взаимодействуют, показаны на рис. 27. Базовая транзакция возврата денег без документального обмена аутентификации может использоваться: Базовая транзакция отзыва поддерживает возврат электронных средств из финансовой организации. Финансовая организация в рамках технологии IOTP имеет в этой транзакции, роль Продавца - за выполнение этой операции она может получить определенную оплату. Базовая транзакция отмены сделки включает в себя следующие документальные обмены: Способы, какими эти документальные обмены могут комбинироваться показаны на рис. 28. Заметим, что: Базовая транзакция обмена ценностями использует документальный обмен платежа, чтобы поддержать обмен ценностями в одной валюте с помощью одного метода оплаты и с привлечением той же или (обычно) другой валюты с помощью того же или иного платежного метода (встречный платеж). Примеры реализации такой процедуры включают в себя: Базовый обмен ценностями использует следующие документальные обмены: Способы, которыми эти документальные обмены комбинируются друг с другом изображены на рис. 29. Базовая транзакция обмена ценностями осуществляется в двух вариантах: В выше приведенном примере фигурирует роль продавца, хотя организацией, выполняющей обмен ценностями может быть банк или какая-то другая финансовая организация. Это потому, что банк выполняет здесь роль продавца, направляя покупателю предложение, которое он может принять или отвергнуть. Блоки TPO и отклика Offer могут быть объединены в одном сообщении, только если содержимое блока отклика Offer не изменяется в результате выбора вида платежа и платежного протокола для обмена ценностями. Использование подписей, чтобы гарантировать целостность обмена ценностями проиллюстрирована на диаграмме рис. 30. Диаграмма на рис. 31. иллюстрирует информационные условия в различных IOTP-сообщениях, которые могут быть использованы покупателем, чтобы определить допустима или нет конкретная комбинация документальных обменов. 1) Если первое сообщение IOTP транзакции содержит запрос аутентификации, то: 2) В противном случае (отсутствие запроса аутентификации в первом сообщении IOTP): 3) Если блок отклина предложения присутствует в каком-либо сообщении IOTP, тогда: Ниже представлена таблица типов транзакций, которые могут удовлетворять условиям перечисленным выше. Имеется возможность запустить независимую транзакцию аутентификации в любой момент времени, даже в параллель с другой транзакцией IOTP. Обычно она используется: В общих чертах базовый процесс состоит из: Покупатель, например, может: Кассир может аутентифицировать покупателя после получения платежного запроса и до посылки следующего сообщения, относящегося к платежу. агент доставки может аутентифицировать покупателя после получения запроса доставки и до посылки отклика доставки. Некоторые платежные методы могут выполнять аутентификацию в ходе платежного обмена. В этом
случае информация, необходимая для выполнения аутентификации будет включаться в компоненты платежной схемы. В этом примере приложение IOTP не будет уверено, что аутентификация состоялась, так как компоненты платежной схемы, которые содержат аутентификационную информацию, не отличимы о других компонентов платежной схемы. Инфраструктурные транзакции разработаны, для поддержки запросов, прошла ли транзакция успешно или
работает ли корректно некоторая торговая роль. Существует два типа таких транзакций: 9.2.1. Базовая транзакция запроса состояния транзакции IOTP Базовая транзакция запроса состояния предоставляет информацию о состоянии существующей или завершившейся транзакции IOTP. Базовая транзакция запроса состояния использует следующие торговые блоки: Запросы состояния транзакции IOTP могут производиться по разным причинам. Например: Запросы о базовых транзакциях IOTP Ping (смотри раздел 9.2.2) игнорируются. Одна торговая роль может послать запрос любой другой торговой роли в любое время. Программа, которая поддерживает торговую роль покупателя IOTP может не делать: Базовыми требованиями являются: Ошибки в запросах состояния транзакции могут быть отнесены к следующим трем классам: Рабочие ошибки в исходных сообщениях Возврат блока информационного запроса, содержащего компонент Status, который был послан покупателю последним. Технические ошибки в исходных сообщениях Возврат блока информационного отклика, содержащего компонент Status. Компонент Status должен содержать атрибут ProcessState равный ProcessError. В этом случае в качестве отклика посылается блок Error, указывающий, где в исходном сообщении была найдена ошибка. Технические ошибки в блоке информационного запроса Возврат сообщения Error. То есть, возврат блока Error, содержащего код ошибки (смотри раздел 7.21.2), который описывает природу ошибки в сообщении информационного запроса. Сообщения информационого запроса транзакции На рис. 32 рассмотрен процесс реализации базовой транзакции информационого запроса. Рис. 32. Базовая транзакция статусного запроса Блок ссылок транзакции Торговая роль, делающая информационный запрос, должна использовать Id-компонент (смотри раздел 3.3.1), где атрибуты IotpTransId и TransTimeStamp имеют те же значения, что и в Id-компоненте исходной транзакции, объекта запроса. Атрибут IotpTransID в этом компоненте выполняет роль ключа при запросе записей, которые ведет торговая роль. Значение ID-атрибута Id-компонента должно быть отличным от любых других в исходной транзакции (смотри раздел 3.4.1). Если требуются текущие статусные данные, компонент MsgId, и конкретный ID-атрибут для компонента MsgId должен отличаться от любых других в сообщениях, посланных торговой роли. Блок информационного запроса (смотри раздел 8.12) содержит следующие компоненты: Блок подписи (информационный запрос) Если в сообщении, содержащем блок информационного запроса, присутствует блок подписи, тогда он может быть проверен, чтобы определить, авторизован ли этот запрос. Если присутствует блок подписи информационного запроса (смотри раздел 8.12), то он содержит следующие компоненты: Блоки информационного отклика должны формироваться, только если транзакция авторизована. Цифровые подписи информационного запроса ставятся только в том случае, если получатель ожидает получение подписанных запросов. В данной версии IOTP это требует предварительного согласования. Это означает, что: С другой стороны, если исходная транзакция, к которой относится запрос, реализована через безопасный канал (напр., [SSL]), тогда разумно предположить, что, если отправитель информационного запроса знает Id-компонент исходного сообщения (включая, например, временную метку), то запрос является подлинным. Блок отклика INQUIRY (смотри раздел 8.13) содержит следующие компоненты: Блок SIGNATURE (отклик информационного запроса) Если в сообщении, содержащем блок информационного запроса, присутствует блок подписи, тогда он
может быть проверен получателем на предмет корректности информационного отклика. Если блок подписи информационного отклика присутствует (смотри раздел 8.13), он содержит следующие
компоненты: Цифровые подписи информационного отклика могут использоваться, только если получатель ожидает прихода подписанных откликов. В данной версии IOTP tэто предполагает предварительное согласование применение цифровых подписей. Это означает, что: Целью базовой транзакции IOTP Ping является проверка коннективности между торговыми ролями,
принимающими участие в транзакции. Это позволяет приложению IOTP сделать следующее: Например, эта транзакция может быть использована продавцом, чтобы определить, функционирует ли
кассир или агент доставки, прежде чем запускать транзакцию, требующую участия этих торговых ролей. Торговыми блоками, используемыми транзакцией Ping, являются: Сообщения PING На рис. 33 отображен обмен сообщениями прибазовой транзакции Ping. Рис. 33. Базовые сообщения транзакции Ping Верификация того, что подписи могут обрабатываться, осуществляется отправителем блока запроса Ping путем включения: Получатель запроса Ping таким образом: Заметим, что запрос Ping: Все приложения IOTP должны присылать отклики Ping отправителю запросов Ping, сразу по получении. Базовый запрос IOTP Ping может также содержать опционный блок подписи. Приложение IOTP может, например, использовать блок подписи для проверки того, способен ли получатель этого запроса формировать и верифицировать цифровые подписи. Для каждой транзакции Ping, каждая роль IOTP может устанавливать различные транспортные сессии. Любая торговая роль IOTP может посылать запрос Ping любой другой торговой роли. Сообщение Ping имеет свой собственный IotpTransId, который отличается от соответствующего параметра других транзакций. Блок ссылок транзакции IotpTransId транзакции Ping должен быть уникальным и отличать данную транзакцию от любых других. Блок запроса PING Если транзакция Ping является анонимной, тогда в блок запроса Ping включается компонент no Organisation (смотри раздел 8.7). Если транзакция Ping не анонимна, то блок запроса Ping содержит компоненты Organisation для: Если присутствуют компоненты Organisation, это указывает, что отправитель запроса Ping сформировал блок подписи. Блок подписи должен быть верифицирован торговой ролью, которая получила этот запрос Ping. Блок подписи запроса Ping (смотри раздел 8.16) содержит следующие компоненты: Блок отклика PING Блок отклика PING (смотри раздел 8.15) содержит следующие компоненты: Если транзакция Ping не является анонимной, тогда отклик Ping дополнительно содержит: Блок SIGNATURE (отклик PING) Блок подписи отклика Ping (смотри раздел 8.16) содержит следующие компоненты: Ниже описано, как извлекать логотипы для отображения их программой IOTP, используя атрибут Logo Net Locations, содержащийся в элементе вида платежа (смотри раздел 7.7.1) и компоненте Organisation (смотри раздел 7.6). Полный адрес логотипа определяется следующим образом: Logo_address ::= Logo_net_location "/" Logo_size Logo_color_depth ".gif" Где: Logo_size и Logo_color_depth специфицирует разработчик программы IOTP, которая извлекает логотип, в зависимости от размера и цвета, который желательно иметь. Имеется пять стандартных рамеров логотипа. Размеры в пикселях соответствуют в таблице значениям размера логотипа. Существует три стандартных значения насыщенности цвета. Насыщенность цвета (включая число бит на пиксель) и соответствующее значение для Logo_Color_Depth представленны ниже в таблице. Заметим, что если насыщенность цвета логотипа пропущена, тогда извлекается логотип с 256 цветами. Если логотип сетевой позиции равен ftp://logos.xzpay.com, тогда: Организации, которые делают логотип доступными для работы с IOTP должны всегда допускать размеры "small" и "medium" и использовать формат "gif". Одной из ключевых черт IOTP является возможность для продавца предложить список видов платежа, чтобы покупатель мог сделать выбор. Ниже рассматриваются: Платежный инструмент является средством, с помощью которого покупатель платит за товар или услуги, предлагаемые продавцом. Это может быть, например: Большинство платежных инструментов имеют номер, обычно это номер счета, по которому можно идентифицировать платежный инструмент. Вид платежа часто представляет собой марку, которая идентифицирует конкретный тип платежного инструмента. Список видов платежа представляет собой опции, которые предоставляются продавцом покупателю и из которых покупатель делает свой выбор. Каждый вид платежа может иметь разных кассиров. Среди примеров вида платежа: Двойственный вид платежа (Dual Brand) означает, что отдельный платежный инструмент может использоваться так, как если бы это были два отдельных вида платежа. Например, может существовать одна японская карта "UC" (MasterCard), которую можно использовать как UC-карту или как обычную MasterCard. Виды платежа через UC-карту и MasterCard могут иметь своих собственных, отличных друг от друга Кассиров. Это означает, что: Двойственные виды платежа не требуют какого-то специального обслуживания продавцом и, следовательно, не нужно как-то выделять эти виды платежа в DTD. Это происходит потому, что в той части, которая касается продавца, каждый вид платежа в двойственном виде платежа рассматривается как независимый. Только покупатель должен находить соответствие между предлагаемым видом оплаты и имеющимся двойственным платежным инструментом. Поощрительный вид оплаты предполагает, что если покупатель им воспользуется, то он получит какие-то дополнительные выгоды. Эти выгоды могут быть получены двумя путями: Заметим, что: Имеется две проблемы, которые нужно решить при идентификации поощрительных видов платежа: Правильная идентификация того, что покупатель воспользовался поощрительным видом платежа, крайне важно, так как покупатель может объявить, что он имеет право на скидку, которая действует для поощрительного вида платежа, в то время как в действительности это не так. Здесь возможны два подхода: Заметим, что: IOTP не предоставляет продавцу информации о платежном инструменте (напр., карте или номере счета). Эти данные посылаются кассиру в качестве части инкапсулированного платежного протокола. Это означает, что: Проверка кассиром, является ли платеж льготным, возможна, если кассир совмещает функции и эмитента карты. Существует два способа, как покупатель может выбрать правильно льготный вид платежа: В последнем случае, код покупателя должен совпадать с кодом из списка продавца, в противном случае соответствие не будет зарегистрировано. Способы, которыми программа IOTP покупателя может получить такой код, включают: Новые Id видов платежа выдаются в соответствии с процедурой, заданной IANA (смотри раздел 12). Рекомендуется, чтобы разработчики приложений IOTP покупателя (напр., платежных программ) обеспечивали предварительную загрузку текущего набора идентификаторов вида платежа и предлагали средства пополнения этого списка. Данный пример содержит три образца XML для компонента списка видов платежа: Этот простой пример включает в себя: <BrandList ID='M1.2' XML:Lang='us-en' ShortDesc='Purchase book including s&h' Пример списка видов платежей с помощью кредитной карты представлен ниже. Он включает в себя: <BrandList ID='M1.2' XML:Lang='us-en' ShortDesc='Purchase ladies coat' PayDirection='Debit'> Для оплаты через 'British Airways' MasterCard для выше приведенного варианта и платежного протокола SET список вида платежа будет иметь вид: <BrandSelection ID='C1.2' BrandListRef='M1.3' BrandRef='M1.5' ProtocolAmountRef='M1.7' Ниже представлен достаточно сложный пример, который включает в себя: <BrandList ID='M1.2' XML:Lang='us-en' ShortDesc='Company report on XYZ Co' Для того чтобы гарантировать совместимость, коды, используемые IOTP, нужно поддерживать в контролируемой среде так, что их значения и использование были строго определены, а дублирование кодов должно быть исключено. IANA представляет механизм решения этой проблемы, как это описано в RFC 2434. Типы элементов и имена атрибутов, к которым эта процедура применяется, приведены ниже в таблице вместе с исходными величинами, разрешенными для этих атрибутов. Заметим, что: За исключением алгоритмов, которые начинаются с "pay:", новые значения выделяются после
просмотра торгового почтового списка IETF и с привлечением “специального эксперта”. Элемент Algorithm обычно определяется в пределах пространства имен [DSIG]. Со временем эта процедура может измениться. Новые значения BrandId должны быть опубликованы через торговый подписной лист IETF и, если в течение трех недель не поступает возражений, они присваиваются в порядке поступления. Если CurrCodeType = "ISO4217-A", тогда код валюты является буквенным, определенным в [ISO4217]. Если CurrCodeType = "IOTP", тогда новые значения должны быть опубликованы через торговый подписной лист IETF и, если в течение трех недель не поступает возражений, они присваиваются в порядке поступления. Код типа валюты IOTP, сконструирован так, чтобы позволять поддержку "новых" псевдовалют, таких как loyalty или frequent flyer points. На момент написания этого документа ни один из таких кодов не был лпределен. Новые значения атрибута CurrCodeType выделяются после публикования через подписной лист IETF и рассмотрения экспертами. Новые значения атрибута Delivery Method выделяются после публикования через подписной лист IETF и рассмотрения экспертами. Это может потребовать публикации дополнительной документации, описывающей как используется данный метод доставки. Если атрибут Content имеет форму "MIME:mimetype", тогда управление новыми значениями для "mimetype" определено в [MIME]. В противном случае, новые значения атрибута Content выделяются после публикования через подписной
лист IETF и рассмотрения экспертами. Это может потребовать публикации дополнительной документации, описывающей как используется новый атрибут в элементе Packaged Content. Новые значения атрибута RelationshipType выделяются после публикования через подписной лист табочей группы IETF и рассмотрения экспертами. Это может потребовать публикации дополнительной документации, описывающей как осуществляется метод доставки. Документ, описывающий новые значения атрибута Status Type, может быть объединен с документами,описывающими новые торговые роли и типы подписей (смотри ниже). Документ, описывающий новые значения атрибута Trading Role может быть объединен с документами, описывающими новые значения Status Types (смотри выше) и типы подписей (смотри ниже). Документ, описывающий новые значения типа подписи, может быть объединен с документами, описывающими новые типы Status и торговые роли (смотри выше). Помимо формального выбора и регистрации кодов, как это описано выше, для разработчиков существует необходимость экспериментировать с новыми кодами IOTP. По этой причине могут использоваться "коды определенные пользователем", что не требует регистрациив IANA. Определение кода, задаваемого пользователем, выглядит следующим образом: user_defined_code ::= ( "x-" | "X-" ) NameChar (NameChar)* Рекомендуется использование имен доменов (смотри [DNS]), для того чтобы сделать коды,
определенные пользователем, уникальными, хотя этот метод и не является совершенно надежным. Этот раздел содержит XML DTD для IOTP. <!-- <!-- <!ELEMENT MsgId EMPTY> SenderTradingRoleRef NMTOKEN #IMPLIED <!ELEMENT RelatedTo (PackagedContent) > <!ATTLIST RelatedTo ID ID #REQUIRED <!-- <!-- SuccessNetLocn CDATA #REQUIRED> <!-- AUTHENTICATION DATA COMPONENT --> ContentSoftwareId CDATA #IMPLIED> LogoNetLocn CDATA #IMPLIED> ErrorLogNetLocn CDATA #IMPLIED> <!ELEMENT PersonName EMPTY > <!ELEMENT PostalAddress EMPTY> LegalLocation (True | False) 'False' > (Debit | Credit) #REQUIRE> ContentSoftwareId CDATA #IMPLIED> ContentSoftwareId CDATA #IMPLIED> CurrCode CDATA #REQUIRED> ContentSoftwareId CDATA #IMPLIED > ProtocolAmountRef NMTOKEN #REQUIRED StartAfterRefs NMTOKENS #IMPLIED> <!-- PAYMENT RECEIPT COMPONENT --> <!-- PAYMENT NOTE COMPONENT --> <!ELEMENT DeliveryData (PackagedContent*) > ContentSoftwareId CDATA #IMPLIED> <!-- CONSUMER DELIVERY DATA COMPONENT --> ContentSoftwareId CDATA #IMPLIED > <!-- TRADING ROLE DATA COMPONENT --> ProcessReference CDATA #IMPLIED > <!ELEMENT ErrorLocation EMPTY > AttName NMTOKEN #IMPLIED> <!-- TRADING PROTOCOL OPTIONS BLOCK --> <!-- AUTHENTICATION REQUEST BLOCK --> <!-- AUTHENTICATION RESPONSE BLOCK --> <!-- AUTHENTICATION STATUS BLOCK --> <!-- PAYMENT REQUEST BLOCK --> <!-- PAYMENT EXCHANGE BLOCK --> <!-- PAYMENT RESPONSE BLOCK --> <!-- DELIVERY RESPONSE BLOCK --> <!-- INQUIRY REQUEST BLOCK --> <!-- INQUIRY RESPONSE BLOCK --> <!-- PING REQUEST BLOCK --> <!-- PING RESPONSE BLOCK --> <!-- ERROR BLOCK --> <!-- CANCEL BLOCK --> <!-- <!ELEMENT Signature (Manifest, Value+) > <!ELEMENT Manifest ( Algorithm+, <!ATTLIST Manifest LocatorHRefBase CDATA #IMPLIED> <!ELEMENT Algorithm (Parameter*)> <!ELEMENT Digest (Locator, Value)> <!ELEMENT Attribute ( ANY ) > <!ELEMENT OriginatorInfo ANY > <!ELEMENT RecipientInfo ANY > <!ELEMENT KeyIdentifier EMPTY> <!ELEMENT Parameter ANY > <!ATTLIST Certificate ID ID #IMPLIEDtype NMTOKEN #REQUIRED> <!ELEMENT IssuerAndSerialNumber EMPTY > <!ELEMENT Locator EMPTY> В этом разделе содержится словарь некоторых терминов, используемых в данной спецификации.
OkFrom CDATA #REQUIRED
OkTo CDATA #REQUIRED
BrandListRef NMTOKEN #REQUIRED
SignedPayReceipt (True | False) #REQUIRED
ID
Идентификатор, который однозначно идентифицирует платежный компонент в транзакции IOTP.
OkFrom
Дата и время в формате [UTC], после которого кассир может воспринимать на обработку блок платежного запроса (смотри раздел 8.7), содержащий компонент платежа.
OkTo
Дата и время в формате [UTC], до которого Кассир может воспринимать на обработку блок платежного запроса, содержащий компонент платежа.
BrandListRef
Ссылка элемента (смотри раздел 3.5) компонента списка видов платежа (смотри раздел 7.7) в рамках торгового блока TPO транзакции IOTP. Список видов платежа идентифицирует альтернативные способы осуществления платежа.
SignedPayReceipt
Указывает, должен ли быть подписан блок платежного отклика (смотри раздел 8.9), сгенерированный Кассиром.
StartAfter
Содержит ссылки элемента (смотри раздел 3.5) других платежных компонентов, которые описывают платежи, которые должны быть проведены до того, как будет произведен данный платеж. Если атрибут StartAfter отсутствует, тогда никаких зависимостей нет и платеж может быть проведен немедленно.
7.10. Компонент платежной схемы
<!ATTLIST PaySchemeData ID ID #REQUIRED
PaymentRef NMTOKEN #IMPLIED
ConsumerPaymentId CDATA #IMPLIED
PaymentHandlerPayId CDATA #IMPLIED
ContentSoftwareId CDATA #IMPLIED>
ID
Идентификатор, который однозначно определяет компонент схемы оплаты транзакции IOTP.
PaymentRef
Ссылка элемента (смотри раздел 3.5) компонента платежа (смотри раздел 7.9), с которым связан компонент схемы платежа. Атрибут необходим, если только компонент схемы платежа не является частью запроса состояния транзакции (смотри раздел 9.2.1).
ConsumerPaymentId
Идентификатор, специфицированный Покупателем, который в случае возвращения Кассиром в другом компоненте схемы платежа (или другим способом) позволит Покупателю определить, о каком платеже идет речь.
PaymentHandlerPayId
Идентификатор, специфицированный Кассиром, который в случае возвращения Покупателем в другом компоненте схемы платежа (или другим способом) позволит Кассиру определить, о каком платеже идет речь. Атрибут необходим для каждого компонента схемы платежа, вне зависимости от того, что содержится в блоке платежного запроса.
ContentSoftwareId
Смотри раздел 14. Словарь.
PackagedContent
Содержит протокольную информацию о схеме платежа в виде элементов Packaged Content (смотри раздел 3.7). Определение содержимого смотри в приложение по схемам платежа.
7.11. Компонент платежной расписки
<!ATTLIST PayReceipt ID
ID #REQUIRED
PaymentRef NMTOKEN #REQUIRED
PayReceiptNameRefs NMTOKENS #IMPLIED
ID
Идентификатор, который однозначно определяет компонент платежной расписки транзакции IOTP.
PaymentRef
Содержит ссылку элемента (смотри раздел 3.5) на компонент платежа (смотри раздел 7.9), к которому относится данная расписка.
PayReceiptNameRefs
Опционно содержит список значений атрибутов Name элементов Packaged Content, которые образуют расписку. Элементы Packaged Content могут содержать:
о
компоненты данных платежной схемы, обмен которыми производится между Кассиром и Покупателем в процессе платежа и/или
o
сам компоент платежной расписки. Заметим, что:
o
каждый компонент схемы определяет в своем приложении имена элементов Packaged Content, которые должны быть перечислены в этом атрибуте (если они нужны).
о
Если компонент платежной схемы содержит элементы Packaged Content, с именами которые совпадают с именем в PayReceiptNameRefs, тогда на такие компоненты платежной схемы должны ссылаться дайджесты в компоненте подписи платежного отклика (если используется такая подпись).
ContentSoftwareId
Смотри раздел 14. Словарь.
PackagedContent
Опционно содержит информацию платежной расписки (платежную схему) в виде элементов Packaged Content (смотри раздел 3.7). Определение его содержимого смотри в прилжении платежной схемы.
о
значения атрибута Name каждого элемента packaged content определены приложением платежного протокола;
о
значение Name должно быть уникальным для каждого платежа, как и для всех схем платежа или компонентов платежной расписки с идентичным значением атрибута PaymentRef.
7.12. Компоент Payment Note
<!ATTLIST PaymentNote ID ID #REQUIREDContentSoftwareId CDATA #IMPLIED>
ID
Идентификатор, который однозначно определяет компонент платежной расписки транзакции IOTP.
ContentSoftwareId
Смотри раздел 14. Словарь.
PackagedContent
Содержит дополнительную, не связанную с платежом информацию,
которую кассир хочет довести до сведения покупателя в виде одного или более элементов Packaged Content (смотри раздел 3.7).
7.13. Компонент доставки
<!ATTLIST Delivery ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
DelivExch (True | False) #REQUIRED
DelivAndPayResp (True | False) #REQUIRED
ActionOrgRef NMTOKEN #IMPLIED>
ID
Идентификатор, который однозначно определяет компонент доставки транзакции.
xml:lang
Определяет язык, используемый атрибутами и дочерними элементами
этого компонента, если только атрибут дочернего элемента xml:lang не перепишет это значение. Смотри раздел 3.8.
DelivExch
Индицирует факт наличия в транзакции сообщений, ассоциированных с обменом доставки. Корректные значения:
o “Ложно” указывает на отсутствие обмена доставки.
DelivAndPayResp
Индицирует то, чтоблок отклика доставки (смотри раздел 8.11) и блок отклика плптежа (смотри раздел 8.9) находся в одном и том же сообщении IOTP. Корректные значения:
o Кассир должен должен быть способен осуществить доставку.
ActionOrgRef
Ссылка элемента на компонент организации Агента доставки.
DeliveryData
Содержит подробности того, как будет осуществляться доставка. Смотри 7.13.1.
PackagedContent
Содержит данные "пользователя", определенные для продавца и необходимые агенту доставки в виде одного или нескольких элементов Packaged Content. Смотри раздел 3.7.
7.13.1. Элемент Delivery Data
<!ATTLIST DeliveryData xml:lang
NMTOKEN #IMPLIED
OkFrom CDATA #REQUIRED
OkTo CDATA #REQUIRED
DelivMethod NMTOKEN #REQUIRED
DelivToRef NMTOKEN #REQUIRED
DelivReqNetLocn CDATA #REQUIRED
SecDelivReqNetLocn CDATA #REQUIRED
xml:lang
Определяет язык, используемый атрибутами компонента. Смотри раздел 3.8.
OkFrom
Дата и время в формате [UTC] после которого Агент доставки может принять на обработку блок запроса доставки (смотри раздел 8.10).
OkTo
Дата и время в формате [UTC], до которого Агент доставки может принять на обработку блок запроса доставки.
DelivMethod
Индицирует метод, с помощью которого могут быть доставлены товары или предоставлены услуги. Корректными считаются значения:
DelivToRef
Ссылка элемента (смотри раздел 3.4) компонента Organisation транзакции IOTP, которая имеет роль DelivTo. Информация в этом блоке используется, чтобы определить, куда следует доставить покупку. Она должна быть совместимой с DelivMethod. В частности, если DelivMethod является:
DelivReqNetLocn
Содержит сетевую позицию, куда должен быть послан небезопасный блок запроса доставки (смотри раздел 8.10), который содержит компонент доставки. Содержимое этого атрибута зависит от транспортного механизма и должно согласовываться с требованиями документа [RFC-1738].
SecDelivReqNetLocn
Содержит сетевую позицию, куда должен быть послан безопасный блок запроса доставки (смотри раздел 8.10), который содержит компонент доставки.
ContentSoftwareId
Смотри раздел 14. Словарь.
PackagedContent
Дополнительная информация о доставке в виде одного или несколько элементов Packaged Content (смотри раздел 3.7), предоставляемая агенту доставки продавцу.
7.14. Информационный компонент доставки Покупателя
<!ATTLIST ConsumerDeliveryData ID ID #REQUIRED
ConsumerDeliveryId CDATA #REQUIRED>
ID
Идентификатор, который однозначно определяет информационный компонент доставки покупателя для данной транзакции.
ConsumerDeliveryId
Идентификатор, специфицированный покупателем, который в случае возврата агентом доставки позволяет покупателю идентифицировать процедуру доставки.
7.15. Компонент Delivery Note
<!ATTLIST DeliveryNote ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
DelivHandlerDelivId CDATA #IMPLIED
ContentSoftwareId CDATA #IMPLIED>
ID
Идентификатор, который однозначно определяет компонент Delivery Note транзакции IOTP.
xml:lang
Определяет язык, используемый атрибутами или дочерними элементами в рамках данного компонента, если только его значение не будет переписано атрибутом xml:lang дочернего элемента. Смотри раздел 3.8.
DelivHandlerDelivId
Опционный идентификатор, специфицированный Агентом доставки,
который в случае возвращения Покупателем в другом компоненте доставки или каким-либо другим способом, позволяет Агенту доставки определить, о какой доставке идет речь. Он необходим для любого компонента доставки, вне зависимости от того содержится ли от в блоке запроса доставки.
ContentSoftwareId
Смотри раздел 14. Словарь.
PackagedContent
Содержит информацию декларации доставки (delivery note) в виде одного или нескольких элементов Packaged Content (смотри раздел 3.7).
7.16. Компонент Status
<!ATTLIST Status ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
StatusType NMTOKEN #REQUIRED
ElRef NMTOKEN #IMPLIED
CompletionCode NMTOKEN #IMPLIED
ProcessReference CDATA #IMPLIEDStatusDesc CDATA #IMPLIED >
ID
Идентификатор, который однозначно определяет компонент Status транзакции IOTP.
xml:lang
Определяет язык, используемый атрибутами в пределах компонента. Смотри раздел 3.8.
StatusType
Индицирует тип обмена документами, о котором сообщает компонент Status. Он может быть установлен в состояние предложение, платеж, доставка, аутентификация или “неопределено” (Undefined).
ElRef
Если StatusType не установлено равным Undefined
(неопределено), тогда ElRef содержит ссылку элемента (смотри раздел 3.5) на компонент, для которого описан
Status. Он может относиться к:
ProcessState
Содержит код состояния (State Code), который индицирует текущее состояние исполняемого процесса. Допустимыми значениями ProcessState являются:
CompletionCode
Индицирует то, как завершился процесс. Корректные значения CompletionCode приведены ниже вместе с указанием условий, когда атрибут должен присутствовать и указанием возможности восстановления при неудаче.
ProcessReference
Этот опционный атрибут хранит ссылку для процесса, о состоянии которого сообщается. Он может содержать следующие значения:
StatusDesc
Опционное текстовое описание текущего состояния процесса на языке, заданном атрибутом xml:lang.
7.16.1. Коды завершения предложения
Значение
Описание
AuthError
Ошибка аутентификации. Проверка отклика аутентификации не прошла.
ConsCancelled
Прервано покупателем (Consumer Cancelled). Покупатель по каким-то причинам решает прервать транзакцию. Это код является единственно верным в компоненте Status, содержащимся в блоках Cancel или информационного отклика. Восстановление невозможно.
MerchCancelled
Предложение аннулировано (Offer Cancelled). Продавец по каким-то причинам аннулирует свое предложение и прерывает транзакцию. Этот код является единственно верным в компоненте Status, содержащимся в блоках Cancel или информационного отклика. Восстановление невозможно.
Unspecified
Неспецифицированная ошибка. Возникла какая-то неизвестная проблема или ошибка, которая не соответствует ни однму из кодов CompletionCodes. Восстановление невозможно.
TimedOutRcvr
Восстановимый таймаут (Recoverable Time Out). Сообщения были посланы, а откликов не получено. Документальный обмен прерван таймаутом. Этот код допустим в случае информационного запроса транзакции.
TimedOutNoRcvr
Невосстановимый таймаут (Non Recoverable Time Out). Сообщения были посланы повторно, а откликов не получено. Документальный обмен прерван таймаутом. Этот код допустим в случае информационного запроса транзакции. Восстановление невозможно.
7.16.2. Коды завершения платежа
Значение
Описание
BrandNotSupp
Вид платежа не поддерживается Кассиром.
CurrNotSupp
Валюта не поддерживается. Валюта, в которой выполнен платеж, не поддерживается платежным инструментом или кассиром.
ConsCancelled
Отмена Покупателем (Consumer Cancelled). Покупатель по какой-либо
причине решил аннулировать платеж. Этот код является единственно верным в компоненте Status, содержащимся в блоках Cancel или информационного отклика. Восстановление невозможно.
PaymtCancelled
Платеж аннулирован (Payment Cancelled). Кассир по каким-то
причинам не хочет завершить платежную операцию и аннулирует транзакцию. Этот код является единственно верным в компоненте Status, содержащегося в блоках Cancel или информационного отклика. Опции восстановления смотри ниже.
AuthError
Ошибка аутентификации. Аутентификационная проверка платежной схемы не прошла. Восстановление возможно. Чтобы определить, что допустимо, смотри приложение по платежным схемам.
InsuffFunds
Нехватает средств. Средств для осуществления платежа недостаточно. Опции восстановления смотри ниже.
InstBrandInvalid
Платежный инструмент не приемлем для данного вида платежа. Использован платежный инструмент, который не соответствует выбранному виду платжа. Например, использована кредитная карта Visa, хотя в качестве вида платежа была выбрана MasterCard. Опции восстановления смотри ниже.
InstNotValid
Платежный инструмент не приемлем для сделки. Платежный инструмент по каким-то причинам не может быть использован для предлагаемого вида сделки. Опции восстановления смотри ниже.
BadInstrument
Плохой инструмент. Имеется проблема с использованным платежным инструментом, что означает, что он не может быть применен для платежа. Опции восстановления смотри ниже.
Unspecified
Неспецифицированная ошибка. Имеет место какая-то неизвестная проблема или ошибка, которая не совпадает ни с одним из кодов CompletionCodes. Атрибут StatusDesc должен предоставить объяснение причины. Опции восстановления смотри ниже.
TimedOutRcvr
Восстановимый таймаут (Recoverable Time Out). Сообщения были повторно посланы, но отклика не получено. Документальный обмен прерван по таймауту. Этот код приемлем при транзакции информационного запроса. Восстановление возможно, если последнее сообщение другой торговой роли получено снова.
TimedOutNoRcvr
Невосстановимый таймаут. Сообщения были повторно посланы, но отклика не получено. Документальный обмен прерван по таймауту. Этот код приемлем при транзакции информационного запроса. Восстановление невозможно.
7.16.3. Коды завершения доставки
Значение
Описание
BackOrdered
Back Ordered. Товары, подлежащие доставке, ожидают длставки, но
еще не доставлены. Доставка будет оформлена, когда товар будет получен. Это справедливо, если ProcessState = CompletedOk. Восстановление невозможно.
PermNotAvail
Постоянно не доступен (Permanently Not Available). Товары не доступны и не могут быть перезаказаны. Это справедливо, если ProcessState = Failed. Восстановление не возможно.
TempNotAvail
Временно не доступен. Товары временно не доступны и могут быть получены при повторном заказе. Это возможно, если ProcessState = CompletedOk. Восстановление невозможно.
ShipPending
Задержка доставки. Товары доступны и запланированы к доставке, но еще не доставлены. Это возможно, если ProcessState = CompletedOk. Восстановление невозможно.
Shipped
Товары доставлены (Goods Shipped). Товар уже доставлен. Ожидается подтверждение доставки. Это возможно, если ProcessState = CompletedOk. Восстановление невозможно.
ShippedNoConf
Доставлен - никакого подтверждения доставки (Shipped - No Delivery Confirmation). Товары были доставлены, но их доставку невозможно подтвердить. Это возможно, если ProcessState = CompletedOk. Восстановление невозможно.
ConsCancelled
Аннулировано Покупателем (Consumer Cancelled). Покупатель по какой-то причине решает аннулировать доставку. Этот код допустим только в компоненте Status, содержащимся в блоках Cancel или информационного отклика. Восстановление невозможно.
DelivCancelled
Доставка аннулирована (Delivery Cancelled). Агент доставки по какой-то причине отказался завершить процедуру доставки и аннулировал транзакцию. Этот код допустим только в компоненте Status, содержащимся в блоках Cancel или информационного отклика. Восстановление невозможно.
Confirmed
Подтверждено (Confirmed). Все товары были доставлены и получено подтверждение их доставки. Это возможно, если ProcessState = CompletedOk. Восстановление невозможно.
Unspecified
Неспецифицированная ошибка (Unspecified error). Имеет место какая-то неизвестная проблема или ошибка, которая не совпадает ни с одним из кодов CompletionCodes. Атрибут StatusDesc должен прояснить причину. Восстановление невозможно.
TimedOutRcvr
Восстановимый таймаут (Recoverable Time Out). Сообщения были повторно посланы, но отклика не получено. Документальный обмен прерван по таймауту. Этот код приемлем при транзакции информационного запроса. Восстановление возможно, если последнее сообщение от другой торговой роли получено вновь.
TimedOutNoRcvr
Невосстановимый таймаут (Non Recoverable Time Out). Сообщения были повторно посланы, но отклика не получено. Документальный обмен прерван по таймауту. Этот код приемлем при транзакции информационного запроса. Восстановление невозможно.
7.16.4. Коды завершения аутентификации
Значение
Описание
AutEeCancel
Аннулировано аутентифицируемым (Authenticatee Cancel). Организация по какой-то причине отказывается от аутентификации. Это может быть, например, потому что подпись аутентификационного запроса оказалась некорректной или аутентификатор оказался неизвестным или неприемлемым. Восстановление невозможно.
AutOrCancel
Аннулировано аутентификатором (Authenticator Cancel). Организация, запросившая аутентификацию по каким-то причинам отказывается проверять полученный аутентификационный отклик и аннулирует транзакцию. Восстановление невозможно.
NoAuthReq
Запрос аутентификации не возможен (Authentication Request Not Available). Аутентифицирующийся субъект не имеет данных, которые должны быть предоставлены. Например, забыт пароль или субъект не авторизован. Восстановление невозможно.
AuthFailed
Аутентификация не прошла (Authentication Failed). Аутентификатор
проверил аутентификационный отклик, но эта проверка по какой-то причине не прошла. Например, оказался неправильным пароль. Восстановление может быть возможно аутентифицируемым путем повторной посылки отклика аутентификации с корректными данными.
TradRolesIncon
Торговые роли несоместимы (Trading Roles Inconsisten). Торговые роли, содержащиеся в атрибуте TradingRoleList компонента информационного запроса торговых ролей (смотри раздел
7.4) не согласуются с торговой ролью, которую аутентифицируемый играет в данной транзакции IOTP. Примеры несогласованности включают в себя:
Восстановление может выполнить аутентификатор путем повторной посылки блока аутентификационного запроса с поправленной информацией.Unspecified
Неспецифицированная ошибка (Unspecified error). Имеет место какая-то неизвестная проблема или ошибка, которая не совпадает ни с одним из кодов CompletionCodes. Восстановление невозможно.
TimedOutRcvr
Восстановимый таймаут (Recoverable Time Out). Сообщения были повторно посланы, но отклика не получено. Документальный обмен прерван по таймауту. Этот код приемлем при транзакции информационного запроса. Восстановление возможно, если последнее сообщение от другой торговой роли получено вновь.
TimedOutNoRcvr
Невосстановимый таймаут (Non Recoverable Time Out). Сообщения были повторно посланы, но отклика не получено. Документальный обмен прерван по таймауту. Этот код приемлем при транзакции информационного запроса. Восстановление невозможно.
7.16.5. Неопределенные коды завершения
Значение
Описание
InMsgHardError
Серьезная ошибка во взодном сообщении (Input Message Hard Error). Тип блока запроса не может быть идентифицирован или является несовместимым. Следовательно никакой однодокументный обмен не может быть идентифицирован. Это может вызвать серьезную ошибку в транзакции.
7.16.6. Коды завершения информационного запроса транзакции
Значение
Описание
UnAuthReq
Неавторизованный запрос (Unauthorised Request). Получатель запроса состояния транзакции отказывается откликаться на запрос.
7.17. Компонент данных торговой роли
o организацию, которая его получила.
<!ATTLIST TradingRoleData ID ID #REQUIRED
OriginatorElRef NMTOKEN #REQUIREDDestinationElRefs NMTOKENS #REQUIRED>
ID
Идентификатор, который однозначно определяет компонент данных торговой роли транзакции IOTP.
OrginatorElRef
Содержит ссылку элемента на компонент Organisation организации,
которая создала компонент данных о торговой роли и включила его в блок отклика (напр., блок отклика предложения или платежа).
DestinationElRefs
Содержит ссылку элемента на компоненты Organisation организации, которая получила компонент данных о торговой роли в блоке запроса (напр., блоков запроса платежа или доставки).
PackagedContent
Содержит данные, которыые должны быть пересланы между торговыми ролями в виде одного или нескольких элементов PackagedContent, смотри раздел 3.7.
7.17.1. Кто получает компонент данных о торговой роли
- компонент данных о торговой роли, а также,
- компонент Organisation, идентифицированной атрибутом OriginatorElRef.
7.18. Компонент типа информационного запроса
<!ATTLIST InquiryType ID ID #REQUIREDType NMTOKEN #REQUIRED
ElRef NMTOKEN #IMPLIEDProcessReference CDATA #IMPLIED>
ID
Идентификатор, который однозначно определяет компонент типа информационного запроса транзакции IOTP.
Содержит тип информационного запроса. Допустимые значения типа запроса:
o Компонент Payment, когда тип = Payment;
o Компонент Delivery, когда тип = Delivery.ProcessReference
Опционно содержит ссылку на процесс, о котором произведен запрос. Он должен быть установлен, если информация доступна. Для определения значений, которые он может принимать, смотри атрибут ProcessReference компонента Status (смотри раздел 7.16).
7.19. Компонент Signature (подпись)
7.19.1. Использование элементов подписи и атрибутов IOTP
ID-атрибут является обязательным.
Элемент algorithm идентифицирует алгоритмы, использованные при формировании подписи. Тип алгоритма определяется значением алгоритма Type, который указывает, следует ли его использовать в качестве Digest-алгоритма, алгоритма подписи или алгоритма Key Agreement. Следует использовать следующие алгоритмы дайджестов:
<Parameter type='AlgorithmRef'>A2</Parameter> </Algorithm>
<Algorithm ID=A2 type="digest" name="urn:fips:sha1"> </Algorithm>
<Algorithm ID=A3 type="signature" name="urn:ibm:hmac">
7.19.2. Компонент подписи отклика предложения
компонент опций протокола;
каждый из компонентов Organisation;
каждый из компонентов списка видов платежа;
компонент Order;
каждый из компонентов Payment;
компонент Delivery;
каждый из компонентов запроса аутентификации;
любой компонент данных о торговой роли.
7.19.3. Компонент подписи платежной расписки
7.19.4. Компонент подписи отклика доставки
7.19.5. Компонент подписи запроса аутентификации
- компонент опций протоколов;
- компонент Organisation.
- компоненты запроса аутентификации (если имеются)
- компонент запроса информации о торговой роли (если имеется)
7.19.6. Компонент подписи отклика аутентификации
- компонент запроса аутентификации, который был использован в аутентификации (если имеется);
- компонент информационного запроса о торговой роли (если имеются).
7.19.7. Компонент подписи информационного запроса
7.19.8. Компонент подписи
7.19.9. Компонент подписи запроса Ping
7.19.10. Компонент подписи отклика Ping
7.20. Компонент Certificate
7.20.1. Использование в IOTP атрибутов и элементов подписи
ID-атрибут является обязательным.
ID-атрибут является обязательным.7.21. Компонент Error
<!ATTLIST ErrorComp ID NMTOKEN #REQUIRED
xml:lang NMTOKEN #REQUIREDErrorCode NMTOKEN #REQUIRED
ErrorDesc CDATA #REQUIRED Severity (Warning|TransientError|HardError) #REQUIRED
MinRetrySecs CDATA #IMPLIED
SwVendorErrorRef CDATA #IMPLIED>
ID
Идентификатор, который однозначно определяет компонент Error транзакции IOTP.
xml:lang
Определяет язык, используемый атрибутами или дочерними элементами компонента, если только значение не переписано атрибутом xml:lang дочернего элемента. Смотри раздел 3.8.
ErrorCode
Содержит код ошибки, который указывает на природу ошибки в сообщении. Допустимые значения ErrorCode приведены в секции 7.21.2.
ErrorDesc
Содержит текстовое описание ошибки на языке, заданном xml:lang. Содержимое этого атрибута определено поставщиком/разработчиком программного обеспечения, которое сгенерировало компонент Error.
Severity
Определяет степень (severity) ошибки. Допустимы следующие значения:
о Warning.
Индицирует, что хотя имеется ошибочное сообщение, транзакция может продолжаться.
о TransientError.
Индицирует, что ошибка в сообщении может быть исправлена, если ошибочное сообщение, на которое указывает элемент ErrorLocation, послать повторно.
o HardError.
Индицирует, что в сообщении имеется неустранимая ошибка, трпнзакция IOTP должна быть остановлена.
MinRetrySecs
Этот атрибут должен присутствовать, если Severity равен TransientError. Он равен минимальному числу полных секунд, которое приложение IOTP, получившее сообщение об ошибке, должно подождать прежде чем переадресовать сообщение, идентифицированное элементом ErrorLocation.
SwVendorErrorRef
Этот атрибут является ссылкой, чье значение установлено поставщиком/разработчиком программы, которая сформировала компонент Error. Он должен содержать данные, которые позволяют поставщику идентифицировать точную позицию в его прогрпмме и установить причины, которые вызвали сообщение об ошибке. Смотри также атрибут SoftwareID Id-элемента сообщения в блоке ссылки транзакции (раздел 3.3).
ErrorLocation
Идентифицирует Id транзакции IOTP сообщения с ошибкой и, если возможно, элемент и атрибут сообщения, который вызвал формирование компонента Error.
PackagedContent
Содержит дополнительные данные, которые могут использоваться для понимания ошибки. Его содержимое может варьироваться в зависимости от природы ошибки (смотри раздел 7.21.2) и ои поставщика/разработчика приложения IOTP. Определение f PackagedContent смотри в разделе 3.7.
7.21.1. Общие принципы обработки ошибок
7.21.1.1. Severity = предупреждение
- продолжеть транзакцию как обычно или
- прервать транзакцию, выработав сообщение с компонентом Error и атрибутом Severity = HardError (смотри раздел 7.21.1.3).
7.21.1.2. Severity = переходная ошибка
- сформироать сообщение с компонентом Error и атрибутом Severity = Warning, после чего послать его со следующим сообщением (если такое имеется) торговой роли, которая прислала сообщение об ошибке с неверным значением MinRetrySecs и
- использовать величину MinRetrySecs, установленное поставщиком/ разработчиком приложения IOTP.
7.21.1.3. Severity = Hard Error
7.21.2. Коды ошибок
Значение
Описание
Reserved
Reserved. Эта ошибка зарезервирована поставщиком/разработчиком программы. Контактируйте, если требуется, с поставщиком/разработчиком программы. Смотри ID-атрибут Software Id-элемента сообщения в блоке ссылок транзакции (раздел 3.3).
XmlNotWellFrmd
XML плохо сформирован. Документ XML плохо сформатирован. Смотри [XML]Ю, для того чтобы понять, что значит "хорошо сформатирован". Даже если XML сформатирован плохо, он должен быть просмотрен, найден блок ссылок транзакции, с тем чтобы было можно правильно сформировать отклик Error.
XmlNotValid
XML некорректен. Документ XML сформатирован хорошо, но он некорректен. Для того чтобы понять, что значит "корректен" смотри [XML], в частности:
ElUnexpected
Нестандартный элемент. Несмотря на то что документ XML сформирован правильно и корректен, присутствует элемент, который не является стандартным для данного контекста согласно правил и ограничениям, содержащимся в данной спецификации.
ElNotSupp
Элемент не поддерживается. Несмотря на то что документ XML сформирован правильно и корректен, присутствует элемент, который:
o не поддерживается приложением IOTP, которое обрабатывает IOTP-сообщение.ElMissing
Элемент отстутствует. Несмотря на то что
документ XML сформирован правильно и корректен, отсутствует элемент, который должен присутствовать, если следовать правилам и ограничениям данной спецификации.
ElContIllegal
Содержимое элемента не верно. Несмотря на то что документ XML сформирован правильно и корректен, элемент Content содержит значения, которые не согласуются с правилами и ограничениями данной спецификации.
EncapProtErr
Ошибка инкапсулированного протокола. Несмотря на то что документ XML сформирован правильно и корректен, PackagedContent элемента содержит данные инкапсулированного протокола, которые неверны.
AttUnexpected
Нестандартный атрибут. Несмотря на то что документ XML сформирован правильно и корректен, присутствие такого атрибута в данном контексте не предусмотрено и не согласуются с правилами и ограничениями данной спецификации.
AttNotSupp
Атрибут не поддерживается. Несмотря на то что документ XML сформирован правильно и корректен, и приутствие атрибута элемента согласуется с правилами и ограничениями данной спецификации, он не поддерживается конкретной программной реализацией, которая обрабатывает сообщение IOTP.
AttMissing
Атрибут отсутствует. Несмотря на то что документ сформирован правильно и корректен, отсутствует атрибут, который согласно правилам и ограничениям данной спецификации должен присутствовать.
AttValIllegal
Не верно значение атрибута. Атрибут содержит значение, которое не согласуется с правилами и ограничениями данной спецификации.
AttValNotRecog
Значение атрибута не распознано. Атрибут содержит значение, которое приложение IOTP, обрабатывающее сообщение, не смогло распознать.
MsgTooLarge
Сообщение имеет слишком больую длину. Сообщение слишком велико для приложения, его обрабатывающего.
ElTooLarge
Элемент слишком велик. Элемент слишком велик для приложения, его обрабатывающего.
ValueTooSmall
Значение слишком мало. Значение всего или части элемента Content или атрибута, хотя и верно, но слишком мало.
ValueTooLarge
Значение слишком велико. Значение всего или части элемента Content или атрибута, хотя и верно, но слишком велико.
ElInconsistent
Элемент не согласован. Несмотря на то что документ сформирован правильно и корректен, согласно правилам и ограничениям данной спецификации:
о значение атрибута не согласуется со значением одного или нескольких других атрибутов.
TransportError
Транспортная ошибка (Transport Error). Этот код ошибки используется для индикации проблем с транспортным механизмом, которые приводят к потере сообщения. Она обычно ассоциируется с переходной ошибкой. Объяснение переходной ошибки содержится с атрибуте ErrorDesc. Значения, которые могут использоваться в ErrorDesc с TransportError специфицированы в приложении IOTP для транспортного механизма.
MsgBeingProc
Сообщение обрабатывается (Message Being Processed). Этот код ошибки используется только с серьезностью (Severity) переходных ошибок. Код указывает, что предыдущее сообщение обрабатывается и, если в орговоренное время, заданное атрибутом MinRetrySecs, не получено отклика, оригинальное сообщение следует послать вновь.
SystemBusy
Система занята (System Busy). Этот код ошибки используется только с серьезностью (Severity) переходных ошибок. Он указывает, что сервер, который получил сообщение, в настоящее время занят и обработать сообщение не может. Если в орговоренное время, заданное атрибутом MinRetrySecs, не получено отклика, оригинальное сообщение следует послать вновь.
UnknownError
Неизвестная ошибка. Индицирует, что транзакция не может завершиться по неидентифицированной причине. Атрибут ErrorDesc следует использовать для индикации природы проблемы. Эта ошибка может быть применена для указания, например, внутренней ошибки оконечного сервера или процесса клиента.
7.21.3. Элемент положения ошибки
<!ATTLIST ErrorLocation ElementType
NMTOKEN #REQUIRED
IotpMsgRef NMTOKEN #IMPLIED
BlkRef NMTOKEN #IMPLIED
CompRef NMTOKEN #IMPLIED
ElementRef NMTOKEN #IMPLIED
ElementType
Имя типа элемента, где обнаружена ошибка. Например, если элемент декларирован как <!ELEMENT Org, тогда его имя - "Org".
IotpMsgRef
Значение ID-атрибута Id-компонента сообщения (смотри раздел 3.3.2), к которому относится компонент Error.
BlkRef
Если ошибка ассоциирована со специфическим торговым блоком, тогда это значение ID-атрибута торгового блока, где обнаружена ошибка.
CompRef
Если ошибка ассоциирована со специфическим торговым компонентом, тогда это значение ID-атрибута торгового компонента, где обнаружена ошибка.
ElementRef
Если ошибка ассоциирована со специфическим элементом торгового компонента, тогда, если элемент имеет атрибут с типом (смотри [XML]) "ID", тогда это значение данного атрибута.
AttName
Если ошибка ассоциирована со значением атрибута, тогда это имя данного атрибута. В этом случае PackagedContent компонента Error должен содержать значение атрибута.
8. Торговые блоки
Рис. .16. Торговые блоки
( TransRefBlk,
SigBlk?,
ErrorBlk?,
( AuthReqBlk |
AuthRespBlk |
AuthStatusBlk |
CancelBlk |
DeliveryReqBlk |
DeliveryRespBlk |
InquiryReqBlk |
InquiryRespBlk |
OfferRespBlk |
PayExchBlk |
PayReqBlk |
PayRespBlk |
PingReqBlk |
PingRespBlk |
TpoBlk |
TpoSelectionBlk
)*
8.1. Блок опций торгового протокола
<!ATTLIST TpoBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок опций
торгового протокола транзакции IOTP (смотри раздел 3.4).
ProtocolOptions
Компонент протокольных опций (смотри раздел 7.1) определяет опции, которые распространяются на всю транзакцию IOTP (смотри раздел 9).
BrandList
Этот компонент списка видов платежа содержит один или более видов протоколов и типов платежа, которые можно выбрать (смотри раздел 7.7).
Org
Компоненты Organisation (смотри раздел 7.6) идентифицируют организации и их роли в транзакции IOTP. Роли и организации, которые должны присутствовать, зависят от конкретного типа транзакции. Определения каждой транзакции смотри в разделе 9.
- Агент обслуживания Покупателя;
- источник сертификатов, который предлагает "коды доверия (Credentials)" Продавца или какую-то другую гарантию на товары или услуги.
8.2. Блок выбора TPO
<!ATTLIST TpoSelectionBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет блок выбора TPO транзакции IOTP.
BrandSelection
Идентифицирует выбор вида платежаи платежного протокола, которы следует использовать при оплате в транзакции IOTP. Имеется один компонент выбора вида платежа (смотри раздел 7.8) для каждого предстоящего платежа транзакции IOTP.
8.3. Блок отклика Offer
<!ATTLIST OfferRespBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет блок отклика Offer транзакции.
Status
Содержит статусную информацию об успехе или неудаче подготовки предложения (смотри раздел 4.2). Заметим, что в блоке отклика Offer, значения ProcessState NotYetStarted или InProgress являются нелегальными.
Order
Компонент Order содержит подробности о товарах, услугах или финансовой операции, которая имеет место, смотри раздел 7.5.
Payment
Компоненты Payment содержат информацию о платежах, которые надлежит произвести, смотри раздел 7.9.
Delivery
Компонент Delivery содержит детали предстоящей доставки (смотри раздел 7.13).
TradingRoleData
Компонент информации о торговой роли содержит данными должны обменяться торговые роли, вовлеченные в транзакцию (смотри раздел 7.17).
8.4. Блок запроса аутентификации
<!ATTLIST AuthReqBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок запроса аутентификации транзакции.
AuthReq
Каждый компонент запроса аутентификации (смотри раздел 7.2) описывет альтернативный путь, с помощью которого получатель запроса аутентификации может себя аутентифицировать, генерируя компонент отклика аутентификации (смотри раздел 7.3).
TradingRoleInfoReq
Компонент информационного запроса торговой роли (смотри раздел 7.4) содержит список торговых ролей, данные о которых запрашиваются.
8.5. Блок отклика аутентификации
<!ATTLIST AuthRespBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок отклика аутентификации транзакции.
AuthResp
Опционный компонент аутентификационного отклика, который содержит результаты обработки компонента запроса аутентификации - смотри раздел 7.3.
Org
Опционные компоненты Organisation, которые содержат информацию, соответствующую торговым ролям, как это запрошено атрибутом TradingRoleList компонента информационного запроса торговой роли.
8.6. Блок состояния аутентификации
<!ATTLIST AuthStatusBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок состояния аутентификации транзакции.
Status
Содержит статусную информацию об успехе или неудаче аутентификации (смотри раздел 4.2).
8.7. Блок платежного запроса
Payment, PaySchemeData?, Org*, TradingRoleData*)>
ID
Идентификатор, который однозначно определяет блок платежного запроса транзакции.
Status
Содержит компоненты Status (смотри раздел 7.13) откликов на шаги (напр., отклика Offer и/или Payment), от которых данный шаг зависит. Он используется чтобы индицировать успех или неудачу этих шагов. Платеж может состояться лишь тогда, когда все предыдущие шаги были успешными.
BrandList
Компонент списка видов платежа содержит список из одного или более видов платежа и протоколов, которые могут быть выбраны (смотри раздел 7.7).
BrandSelection
Идентифицирует выбор вида платежа, платежного протокола и Кассира, которые должны быть использованы при оплате в данной транзакции. Имеется один компонент выбора вида платежа (смотри раздел 7.8) для каждой проплаты, которую следует выполнить в процессе транзакции.
Payment
Компоненты Payment содержит информацию о платеже, который выполняется, смотри раздел 7.9.
PaySchemeData
Компонент Payment Scheme содержит специфические данные о платежной схеме, смотри раздел 7.10.
Org
Компонент Organisation содержит подробности об организациях, вовлеченных в платеж (смотри раздел 7.6). Присутствие организаций зависит от транзакции и данных, которые должны быть подписаны. Смотри раздел 6.
TradingRoleData
Компонент данных о торговой роли содержит информацию, которая нужна для пересылки между торговыми ролями, вовлеченными в транзакцию (смотри раздел 7.17).
8.8. Блок платежного обмена
<!ATTLIST PayExchBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет блок платежного обмена транзакции.
PaySchemeData
Этот торговый компонент содержит специфические данные о платежной схеме, смотри раздел 7.10.
8.9. Блок платежного отклика
PaymentNote?, TradingRoleData*)>
<!ATTLIST PayRespBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет блок платежного отклика транзакции.
Status
Содержит статусную информацию об успехе или неудаче (смотри раздел 4.2) платежа. Заметим, что в блоке платежного отклика, значения ProcessState NotYetStarted или InProgress являются нелегальными.
PayReceipt
Содержит специфические данные о платежной схеме, которые могут быть использованы для верификации произведенного платежа. Смотри раздел 7.11. Он должен присутствовать, если атрибут ProcessState компонента Status равен CompletedOk. Атрибут PayReceipt является опционным.
PaySchemeData
Содержит специфические данные о платежной схеме, например, о сообщениях платежного протокола. Смотри также раздел 7.10.
PaymentNote
Содержит дополнительную, несвязанную с платежом информацию, которую кассир желает предоставить покупателю. Например, если выполнен отзыв сделки или осуществлен депозит, он может содержать данные о полученном балансе на счету, после того как данная операция завершена. Смотри раздел 7.12.
TradingRoleData
Компонент информации о торговой роли содержит данные, которые нужны для обмена между ролями, участвующими в транзакции (смотри раздел 7.17).
8.10. Блок запроса доставки
ConsumerDeliveryData?, TradingRoleData*)>
<!ATTLIST DeliveryReqBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет блок запроса доставки транзакции.
Status
Содержит компоненты Status (смотри раздел 7.13) откликов на шаги (напр., платежный отклик), от которых данный шаг зависит. Он используется чтобы индицировать успех или неудачу этих шагов. Доставку следует осуществлять только если все прдыдущие шаги завершились успешно.
Order
Компонент Order содержит подробности о товарах, услугах или финансовых операциях, которые имеют место, смотри раздел 7.5. Комоненты Organisation (смотри раздел 7.6) идентифицируют организации их роли.
Org
Транзакция IOTP. Роли и организации, которые должны присутствовать зависят от конкретного типа транзакции. Описания транзакций смотри в разделе 9.
Delivery
Компонент Delivery содержит подробности доставки, которую следует осуществить (смотри раздел 7.13).
ConsumerDeliveryData
Опционный. Содержит идентификатор, специфицированный Покупателем, который в случае возвращения Агентом доставки позволяет покупателю определить, о какой доставке идет речь.
TradingRoleData
Компонент данных о торговой роли содержит информацию, которая нужна при обмене между двумя торговыми ролями в процессе транзакции (смотри раздел 7.17).
8.11. Блок отклика доставки
<!ATTLIST DeliveryRespBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет блок отклика доставки транзакции.
Status
Содержит статусную информацию об успехе или неудаче (смотри раздел 4.2) доставки. Заметим, что в блоке отклика Delivery, ProcessState равный NotYetStarted или InProgress считается нелегальным.
DeliveryNote
Компонент Delivery Note содержит подробности о том, как будут доставляться товары или услуги (смотри раздел 7.15).
8.12. Торговый блок информационного запроса
<!ATTLIST InquiryReqBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет торговый блок информационного запроса транзакции.
InquiryType
Компонент тип информационного запроса (смотри раздел 7.18), который содержит код типа запроса.
PaySchemeData
Компонент платежная схема (Payment Scheme) (смотри раздел 7.10), который содержит специфические данные конкретных информационных запросов о платежной схеме. Он присутствует, когда атрибут Type компонента типа запроса равен Payment.
8.13. Торговый блок информационного отклика
<!ATTLIST InquiryRespBlk ID ID #REQUIRED
LastReceivedIotpMsgRef NMTOKEN #IMPLIED
LastSentIotpMsgRef NMTOKEN #IMPLIED >
ID
Идентификатор, который однозначно определяет торговый блок информационного отклика транзакции.
LastReceivedIotpMsgRef
Содержит ссылку элемента (смотри раздел 3.5) на Id-компонент (смотри раздел 3.3.2) последнего сообщения, которое получил данный сервер от покупателя. Если до этого не получено от покупателя ни одного сообщения, этот атрибут должен содержать значение (Null). Данный атрибут предназначен для отладочных целей.
LastSentIotpMsgRef
Содержит ссылку элемента (смотри раздел 3.5) на Id-компонент (смотри раздел 3.3.2) последнего сообщения, которое послал данный сервер покупателю. Если до этого не послано ни одного сообщения покупателю, данный атрибут должен содержать значение (Null). Этот атрибут предназначен для отладочных целей.
Status
Содержит статусную информацию об успехе или неудаче (смотри раздел 4.2) определенного торгового обмена (т.e., предложения, платежа или доставки).
PaySchemeData
Компонент Payment Scheme (смотри раздел 7.10), который содержит специфические информационные запросы по поводу платежной схемы. Он присутствует, когда атрибут Type атрибута StatusType компонента Status равен Payment.
8.14. Блок запроса Ping
<!ATTLIST PingReqBlk ID ID #REQUIRED>
ID
Идентификатор, который однозначно определяет запрос Ping торгового блока транзакции.
8.15. Блок отклика Ping
<!ATTLIST PingRespBlk ID ID #REQUIRED
PingStatusCode (Ok | Busy | Down) #REQUIRED
SigVerifyStatusCode (Ok | NotSupported | Fail) #IMPLIED
xml:lang NMTOKEN #IMPLIEDPingStatusDesc CDATA #IMPLIED>
ID
Идентификатор, который однозначно определяет торговый блок запроса Ping транзакции.
PingStatusCode
Содержит код, который показывает состояние программы отправителя, которая обрабатывает IOTP-сообщения. Допустимыми значениями являются:
SigVerifyStatusCode
Заключает в себе код, который показывает состояние проверки
подписи. Он присутствует только когда сообщение, содержащее блок запроса Ping имеет также блок Signature.
Допустимы следующие значения:
Xml:lang
Определяет язык, использованный в PingStatusDesc. Присутствует тогда, когда имеется PingStatusDesc.
PingStatusDesc
Содержит короткое описание состояния сервера, который поылает этот блок отклика Ping. Сервер, если его разработчики хотят, может использовать этот атрибут для посылки более детальной информации, чем содержится в PingStatusCode, он может использоваться, например, для отладрчных целей.
Org
Компоненты Organisation (смотри раздел 7.6).
8.16. Блок подписи
<!ATTLIST IotpSignatures ID ID #IMPLIED >
ID
Идентификатор, который однозначно определяет блок подписи транзакции.
Signature
Компонент Signature. Смотри раздел 7.19.
Certificate
Компонент Certificate. Смотри раздел 7.20.
8.16.1. Блок подписи в отклике предложении
8.16.2. Блок подписи в платежном запросе
8.16.3. Блок подписи в платежном отклике
8.16.4. Блок подписи в запросе доставки
8.16.5. Блок подписи в отклике доставки
8.17. Блок ошибки
<!ATTLIST ErrorBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок Error транзакции.
ErrorComp
Компонент Error (смотри раздел 7.21), который содержит информацию об индивидуальной технической ошибке.
PaySchemeData
Опционный компонент Payment Scheme (смотри раздел 7.10), который содержит описание платежной схемы.
8.18. Блок Cancel
<!ATTLIST CancelBlk ID ID #REQUIRED >
ID
Идентификатор, который однозначно определяет блок Cancel транзакции.
Status
Содержит статусную информацию, указывающую, что транзакция была аннулирована.
9. Транзакции IOTP
- Покупка
- Возврат денег
- Отзыв сделки
- Обмен ценностями
- Ping9.1. Транзакция аутентификации и платежа
9.1.1. Документальный обмен аутентификации
o
Аутентификатор организация, которая запрашивает аутентификацию;
o
Аутентифицируемый - организация, которая должна пройти аутентификацию.
1.
Первая организация предпринимает некоторое действие (например, нажимает кнопку на HTML-странице), которое требует аутентификации
1 à 2
Необходимость аутентификации (за пределами протокола IOTP)
2.
Вторая организация генерирует: блок запроса аутентификации, содержащий один или несколько компонентов запроса аутентификации и/или компонент информационного запроса о торговой роли, которые посылаются первой организации
1 ß 2
Запрос TPO & аутентификации. Сообщение IotpMsg: блоки TransRef; Signature (опционно); TPO; запроса аутентификации
3
Запускается приложение IOTP. Если присутствует блок Signature, первая организацияможет использовать проверку параметров доверия (credentials) второй организации. Если все в порядке, первая организация выбирает запрос аутентификации (если присутствует или их более одного), и запускает аутентификационный алгоритм для формирования блока отклика аутентификации. Для генерации компонентов Organisation, если требуется, используетсякомпонент запроса данных о торговой роли. Наконец создается, если нужно, компонент Signature и все компоненты посылаются второй организации для проверки.
1 à 2
Отклик аутентификации. Сообщение IotpMsg: блоки Trans Ref; Signature (опционно) ; Auth Response
4.
Вторая организация проверяет отклик Authentication, сопостовляя его с блоком запроса и убеждаясь, что первая организация именно та, за которую она себя выдает. По результатам проверки первой организации посылается статусный блок аутентификации.
1 ß 2
Состояние аутентификации. Сообщение IotpMsg: блоки Trans Ref; Signature (опционно); Auth Response
5.
Первая организация проверяет статусный блок и, если все в порядке, завершает транзакцию.
9.1.1.1. Принципы обработки сообщений
o
успех аутентификации, тогда аутентифицируемый должен сделать следующее:
продолжить следующий шаг транзакции, частью которой является документальный обмен аутентификации, или
индицировать отказ продолжения транзакции путем посылки аутентификатору блока Cancel, содержащего компонент Status с атрибутом аутентификации StatusType, ProcessState = Failed и кодом CompletionCode (смотри раздел 7.16.4) = AutEeCancel.
o
аутентификация не прошла, тогда аутентифицируемый должен быть оповещен о неудаче, а процесс остановлен.
9.1.1.2. Сообщение запроса аутентификации и TPO
o
блок ссылок транзакции (смотри раздел 3.3) для сообщения IOTP, которое содержит информацию, описывающую сообщение и транзакцию;
o
Id-компонент транзакции (смотри раздел 3.3.1), который однозначно идентифицирует транзакцию IOTP;
o
следующие компоненты блока TPO:
- компонент протокольных опций;
- компонент Organisation.
- компонент запроса аутентификации
- компонент информационного запроса о торговой роли
9.1.1.3. Сообщение-отклик аутентификации IOTP
Блок отклика аутентификации должен содержать следующие торговые компоненты:
- компонент запроса аутентификации;
- компонент информационного запроса о торговой роли;
9.1.1.4. Сообщение состояния аутентификации
9.1.2. Обмен документами предложения
9.1.2.1. Документальный обмен предложения, зависящего от вида платежа
1.
Покупатель решает совершить покупку и посылает продавцу информацию (напр., используя HTML), которая позволяет продавцу сформировать предложение,
C à M
Информация предложения - вне области действия IOTP
2.
Продавец решает, какой платежный протокол, валюту и пр. использовать, помещает эти данные в компонент видов платежа в блоке TPO и посылает покупателю
C ß M
TPO (опции торгового протокола). IotpMsg: блоки Trans Ref Block; TPO
3.
Приложение IOTP запущено. покупатель выбирает вид платежа, платежный протоколи вид валюты. Компонент выбора вида платежа посылается Продавцу.
C à
M
Выбор TPO. IotpMsg: блоки Trans Ref Block и выбора TPO
4.
Продавец использует выбранный вид платежа, плптежный протокол, валюту и информацию предложения для формирования блока отклика Offer, содержащего детали транзакции IOTP, включая цену, и т.д., опционно подписывает его и посылает покупателю
C ß
M
Отклик OFFER. IotpMsg: блоки Trans Ref, Signature (опционный) и отклика Offer
5.
Покупатель проверяет все ли в порядке в Offer, затем комбинирует компоненты из блоков TPO, выбора TPO и отклика Offer, чтобы сформировать следующее сообщение транзакции, и посылает его вместе с блоком подписи (если таковая нужна) соответствующей торговой роли
Рис. 19. Документальный обмен предложения, зависимого от вида платежа
9.1.2.2. Документальный обмен предложения, независимого от вида платежа
1.
Покупатель решает заключить сделку и посылает продавцу информацию (напр., используя HTML), которая позволяет ему подготовить предложение,
C à M
Информация предложения - вне пределов действия IOTP
2.
Продавец решает, какой применить платежный протокол и валюту, помещает эти данные в компонент списка видов платежа в блок TPO, формирует отклик Offer, содержащий некоторые детали транзакции, например цену, опционно подписывает эту информацию и посылает покупателю
C ß M
Отклик TPO & OFFER. IotpMsg: блоки Trans Ref; Signature; TPO; отклика Offer
3.
Запускается приложение IOTP. Покупатель выбирает вид платежа, платежный протокол, валюту. Записывает свой выбор в компонент выбора вида платежа, проверяет предложение и, если все в порядке, комбинирует компонент выбора вида платежа и информацию из блоков TPO Block и отклика Offer, чтобы сформировать следующее сообщение транзакции и послать его соответствующей торговой роли.
Рис. 20. Обмен для предложения, независимого от вида платежа
9.1.2.3. Сообщение TPO
- Продавец, который сделал предложение
- Покупатель, который осуществляет транзакцию
- Кассир. "ID" компонента организщации-кассира содержится в атрибуте PhOrgRef компонента платежа (Payment).
- Агент доставки (DeliveryHandler), который осуществляет доставку товаров или услуг;
- DelivTo т.e. лицо или организация, куда нужно выполнить доставку.
9.1.2.4. Сообщение IOTP выбора TPO
9.1.2.5. Сообщение отклик на предложение IOTP
- компонент опций протокола и
- компонент списка видов платежей;
- компоненты всех организаций.
- компонент заказа;
- все платежные компоненты;
- компонент Delivery, если имеется;
- любые компоненты данных о торговых ролях.
9.1.2.6. Сообщение TPO и отклика Offer
9.1.3. Обмен документами при платеже
1.
Покупатель формирует блок платежного запроса, если необходимо, инкапсулирует в него сообщение платежного протокола, и посылает кассиру, снабжая при необходимости цифровой подписью
C à P
Запрос платежа. IotpMsg: блоки Trans Ref; подписи (опционный); платежного запроса
2.
Кассир обрабатывает блок платежного запроса, проверяет подпись, если таковая имеется, и начинает обмен с покупателем сообщениями (вложенными в блок платежного обмена) согласно платежному протоколу
C «
P
Платежный обмен. IotpMsg: блоки Trans Ref; Pay Exchange
3.
Покупатель и кассир продолжают обмен платежными блоками, пока платеж не будет осуществлен и кассир не сформирует платежную расписку (которая опционно может быть снабщена цифровой подписью) и не пошлет ее покупателю. Эта операция завершает платежный обмен.
C ß
P
Платежный отклик. IotpMsg: блоки Trans Ref; Signature (опционный); платежного отклика
4.
Покупатель проверяет, все ли в порядке с платежным откликом. Опционно могут регистрироваться все операции IOTP. После этого покупатель может остановиться или послать очередное сообщение IOTP (снабдив его, если требуется, подписью) соответствующей торговой роли
9.1.3.1. Принципы обработки сообщений
9.1.3.2. Сообщение платежного запроса
- компонент Status
- компонент Payment для выполняемого платежа
- компоненты Organisation с ролями Продавец и Кассир, которые были пересланы в блоке платежного запроса;
- компонент списка видов платежа, т.e. список видов платежа, указанный в атрибуте BrandListRef компонента Payment;
- скопирован из блока выбора вида платежа, если платеж предшествовал документальному обмену предложения, зависящего от вида платежа (смотри раздел 9.1.2.1) или
- сформирован Покупателем. В этом случае он содержит код вида платежа, платежный протокол и вид валюты, выбранные из списка видов платежа (смотри раздел 9.1.2.2).
9.1.3.3. Сообщение платежного обмена IOTP
9.1.3.4. Платежное сообщение отклика
9.1.4. Обмен документами при доставке
1.
Покупатель генерирует блок запроса доставки и посылает его агенту доставки, снабдив, если требуется, цифровой подписью
C à D
Запрос доставки. IotpMsg: блоки Trans Ref; подписи; запроса доставки
2.
Агент доставки проверяет компоненты Status и Order запроса доставки и опционно подпись, создает блок отклика доставки, посылает его покупателю.
C ß D
Отклик доставки. IotpMsg: блоки Trans Ref; подписи; отклика доставки
3.
Покупатель проверяет блок отклика доставки и опционный блок подпии. Опционно производит запись о транзакции на будущее.
9.1.4.1. Принципы обработки сообщений
9.1.4.2. Сообщение запроса доставки IOTP
- компонент Status (смотри раздел 7.16)
- компонент Order (смотри раздел 7.5)
- компонент Organisation (смотри раздел 7.6) с ролями: Продавец, Агент доставки и DeliverTo
- компонент Delivery (смотри раздел 7.13)
компонент Status (смотри раздел 7.16).
9.1.4.3. Сообщение-отклик доставки
9.1.5. Обмен документами в процессе платежа и доставки
- блок платежного отклика, содержащий платежную расписку, и
- блок отклика доставки, содержащий подробности о доставленных товарах или услугах.
1.
Покупатель генерирует блок платежного запроса, в который, если требуется, вкладывается сообщение платежного протокола, и посылает его кассиру, снабжая опционно цифровой подписью
C à P
Платежный запрос. IotpMsg: блоки Trans Ref; подписи; платежного запроса
2.
Кассир обрабатывает блок платежного запроса, проверяет опционную подпись и начинает обмен с покупателем в рамках платежного протокола (вкладывая эти сообщения в блоки платежного обмена)
C « P
Платежный обмен. IotpMsg: блоки Trans Ref; платежного обмена
3.
Покупатель и кассир обмениваются блоками платежного обмена до тех пор пока платежный протокол не завершит свою работу. Кассир формирует компонент платежной расписки, помещает его в блок платежного отклика, опционно формирует компонент подписи, который укладывается в блок Signature, затем использует информацию из блока отклика предложения, чтобы сформировать блок отклика отклика доставки и посылает его покупателю.
C ß P
Отклики платежа и доставки. IotpMsg: блоки Trans Ref; подписи; платежного отклика; отклика доставки
4.
Покупатель проверяет блоки платежного отклика и отклика доставки. Опционно он может вести запись всех транзакций. Здесь покупатель может остановиться или сформировать очередное сообщение и послать его соотвествующе торговой роли.
9.1.5.1. Принципы обработки сообщений
9.1.5.2. Сообщение платежного запроса IOTP
9.1.5.3. Сообщение платежного обмена IOTP
9.1.5.4. Сообщение платежного отклика и отклика доставки
9.1.6. Базовая транзакция аутентификации
- сформировать безопасный канал связи с покупателем (напр., используя [SSL/TLS]);
- аутентифицировать покупателя, используя базовую транзакцию аутентификации и затем;
- предоставить покупателю доступ к информации и другим услугам с конфиденциальностью, с которой они общаются с добросовестными клиентами.
9.1.7. Базовая транзакция депозита
Рис. 25. Базовая транзакция депозита
- покупатель может специфицировать номер счета перед началом базовой транзакции депозита или
- покупатель может быть идентифицирован ранее, например, с помощью базовой транзакции аутентификации, а счет может быть выбран из списка, предоставляемого финансовой организацией.
- если предыдущая транзакция, например, отзыва сделки или аутентификации уже идентифицировала покупателя, а канал связи обеспечивает достаточную безопасность, что гарантирует аутентифицированность клиента;
- если аутентификация является частью платежного протокола и, следовательно, уже включена в платежный документальный обмен;
- если аутентификация покупателя реализована каким-то иным способом вне рамак протокола IOTP, например, путем использования парольной фразы или аппаратным образом.
9.1.8. Базовая транзакция покупки
- документальный обмен платежа ge (смотри раздел 9.1.3), за которым следует
- документальный обмен доставки (смотри раздел 9.1.4)
Рис. 26. Базовая транзакция покупки9.1.9. Базовая транзакция возврата денег
- исходная сделка имела место, например, путем предоставления расписки для исходной транзакции;
- используется некоторый вид аутентификации, чтобы показать, что субъект, запросивший возврат, действительно является покупателем, или представителем покупателя, который осуществлял исходную сделку;
- причину, почему продавец должен вернуть деньги.
- опционный документальный обмен аутентификации (смотри раздел 9.1.1)
- документальный обмен предложения (смотри раздел 9.1.2) и
- документальный обмен платежа (смотри раздел 9.1.3).
Рис. 27. Базовая транзакция возврата денег
9.1.10. Базовая транзакция отзыва платежа
Рис. 28. Базовая транзакция отзыва сделки
- покупатель может специфицировать номер счета перед началом базовой транзакции отзыва или
- покупатель может быть идентифицирован ранее, например, с помощью базовой транзакции аутентификации, а счет может быть выбран из списка, предоставляемого финансовой организацией.
- если предыдущая транзакция, например, депозит или аутентификация уже идентифицировала покупателя, а канал связи обеспечивает достаточную безопасность, что гарантирует аутентифицированность клиента;
- если аутентификация является частью платежного протокола и, следовательно, уже включена в платежный документальный обмен;
- если аутентификация покупателя реализована каким-то иным способом вне рамак протокола IOTP, например, путем использования парольной фразы или аппаратным образом.
9.1.11. Базовая транзакция обмена ценностями
Рис. 29. Базовая транзакция обмена ценностями
Рис. 30. Подписи при обмене ценностями9.1.12. Допустимые комбинации документальных обменов
Рис. 31. Допустимые комбинации документальных обменов
a)
Транзакция IOTP содержит документальный обмен аутентификации (смотри раздел 9.1.1). (Замечание 1)
b)
Если последнее сообщение документального обмена аутентификации содержит блоки TPO и отклика предложения, тогда:
i)
c)
В противном случае, если последнее сообщение аутентификационного обмена содержит блок TPO, но не содержит блока отклика предложения, тогда:
i)
d)
В противном случае (сообщение состояния аутентификации документального обмена не содержит ни блока TPO ни блока отклика предложения).
i)
e) Транзакция IOTP не включает в себя документальный обмен аутентификации (Замечание 2)
f)
Если первое сообщение содержит блок отклика предложения, тогда:
i)
g)
В противном случае (отсутствие блока отклика предложения в первом сообщении):
i)
h) Если блок отклика предложения содержит компонент доставки, тогда:
i)
(1) Транзакция IOTP состои из документальных обменов платежа и доставки (смотри раздел 9.1.5) (Замечание 4)
ii)
(1) Транзакция состоит из документального обмена платежа (смотри раздел 9.1.3), за которым следует обмен доставки (смотри раздел 9.1.4) (Замечание 4)
i) В противном случае (блок отклика предложения не содержит компонента доставки )
(1) Транзакция IOTP содержит только один документальный обмен платежа (Замечание 5)
(1) Транзакция IOTP включает в себя два документальных платежных обмена. Атрибут StartAfter компонента платежа используется для индикации того, какой платеж происходит первым. (Замечание 6)
4) В противном случае (отсутствие блока отклика Offer) имеет место ошибка.
Замечание
Корректность транзакции IOTP
1.
Любая транзакция платежа и аутентификации
2.
Любая транзакция платежа и аутентификации за исключением базовой аутентификации
3.
Транзакция базовой аутентификации или базовой покупки, возврата денег, депозита, отзыва или обмена ценностями с не прошедшей аутентификацией
4.
Только базовая транзакция покупки
5.
Базовая транзация покупки, возврата денег, депозита и отзыва
6.
Только базовый обмен ценностями
9.1.13. Комбинирование аутентификации с другими транзакциями
9.2. Инфраструктурные транзакции
- Продавцу, после отправки блока выбора TPO,
- Кассиру, после отправки блока платежного запроса,
- Агенту доставки, после отправки блока запроса доставки,
1.
Первая роль решает сделать запрос о транзакции IOTP, например, нажав кнопку запроса в приложении IOTP. Это вызовет генерацию блока информационого запроса и посылку его соответствующей торговой роли.
1 à2
Информационый запрос. IotpMsg: блоки TransRef; подписи (опционный); информационого запроса
2.
Вторая торговая роль проверяет цифровую подпись (если она присутствует). Если получатель хочет среагировать, тогда торговая роль проверяет состояние транзакции, объекта запроса, используя IotpTransId в ID-компоненте блока ссылок транзакции, посылает сообщение первой торговой роли, после чего процесс останавливается
1 ß 2
Информационный отклик. IotpMsg: блоки TransRef; информационного отклика; подписи (опционный)
3.
Первая торговая роль проверяет блок информационного отклика и опционную подпись, выполняет необходимые действия и останавливается. Это может включать отображение статусной информации конечному пользователю.
9.2.2. Базовая транзакция Ping
1.
Приложение IOTP первой торговой роли решает проверить, находится ли в рабочем состоянии соответствующее приложение партнера. Оно генерирует блок запроса Ping, опционный блок подписи и шлет их другой торговой роли.
1 à 2
Запрос PING. IotpMsg: блоки Trans Ref; подписи (опционный); запроса Ping
2.
Вторая торговая роль, которая получает блок запроса Ping, генерирует блок отклика Ping и посылает его отправителю исходного запроса Ping, с блоком подписи, если это требуется.
1 ß 2
Отклик PING. IotpMsg: блоки Trans Ref; подписи (опционный); отклика Ping
3.
Первая торговая роль проверяет блок отклика Ping и выполняет необходимые действия, если это требуется
10. Получение логотипов
10.1. Размер Logo
Размер в пикселях
Размер логотипа значение
32 x 32 или
32 x 20exsmall (сверх малый)
53 x 33
small (малый)
103 x 65
medium (средний)
180 x 114
large (большой)
263 x 166
exlarge (сверх большой)
10.2. Насыщенность цвета логотипа
Насыщенность цвета
Цвет логотипа
(бит на пиксель)
Значение насыщенности
4 (16 цветов)
4
8 (256 цветов)
ничего
24 (16 миллионов цветов)
24
10.3. Примеры логотипа для сетевой позиции
11. Виды платежа
11.1. Определения и выбор вида платежа11.1.1. Определение платежного инструмента
11.1.2. Определение вида платежа
- store brands, где платежный инструмент предоставляется покупателю конкретным продавцом, например Walmart, Sears или Marks and Spencer (UK)
- совмещенные виды платежа, например American Advantage Visa, где организация использует свой собственный вид платежа обычно в сочетании с платежами рассчетной ассоциации. 11.1.3. Определение двойственного вид платежа (Dual Brand)
11.1.4. Определение стимулирующего вида оплаты
- Покупатель информируется о выгоде, которую он может получить при выборе данного вида платежа;
- если вид платежа выбран, продавец изменяет соответствующие компоненты IOTP в отклике Offer, чтобы правильно отразить сумму, которую следует оплатить.
11.1.5. Идентификация льготных видов платежа
11.1.5.1. Идентификация поощрительных видов платежа Продавцом/Кассиром
11.1.5.2. Выбор Покупателем льготных видов платежа
- сертификат SET для видов платежа, которые используют этот протокол оплаты;
- код предоставляется платежной программой, которая работает с конкретным методом оплаты, это может быть приложимо к, например, GeldKarte, Mondex, CyberCash и DigiCash,
11.1.5.3. Рекомендации для Id видов платежа в программе покупателя
11.2. Примеры видов платежа
11.2.1. Простой пример, базирующийся на кредитной карте
PayDirection='Debit' >
<Brand ID ='M1.30' BrandId='MasterCard' BrandName='MasterCard Credit'
BrandLogoNetLocn='ftp://otplogos.mastercard.com/mastercardcredit'
ProtocolAmountRefs='M1.33'>
</Brand>
<Brand ID ='M.31' BrandId='Visa' BrandName='Visa Credit'
BrandLogoNetLocn='ftp://otplogos.visa.com/visacredit' ProtocolAmountRefs='M1.33'>
</Brand>
<Brand ID ='M1.32' BrandId='AmericanExpress' BrandName='American Express'
BrandLogoNetLocn='ftp://otplogos.amex.com' ProtocolAmountRefs ='M1.33' >
</Brand >
<ProtocolAmount ID ='M1.33' PayProtocolRef='M1.35' CurrencyAmountRefs='M1.34'>
</ProtocolAmount>
<CurrencyAmount ID ='M1.34' Amount='10.95' CurrCode='USD'/>
<PayProtocol ID ='M1.35' ProtocolId='SCCD1.0' ProtocolName='Secure Channel Credit/Debit'
PayReqNetLocn='http://www.example.com/etill/sccd1' >
</PayProtocol>
</BrandList>11.2.2. Список платежей с помощью кредитной карты, включая льготные платежи
- SET (Secure Electronic Transactions) смотри [SET] и
- SCCD (Secure Channel Credit Debit) смотри [SCCD].
<Brand ID ='M1.3' BrandId='MasterCard' BrandName='MasterCard Credit'
BrandLogoNetLocn='ftp://otplogos.mastercard.com' ProtocolAmountRefs='M1.7 M1.8'>
<ProtocolBrand ProtocolId='SET1.0' ProtocolBrandId='MasterCard:'>
</ProtocolBrand>
</Brand>
<Brand ID ='M1.4' BrandId='Visa' BrandName='Visa Credit'
BrandLogoNetLocn='ftp://otplogos.visa.com' ProtocolAmountRefs='M1.7 M1.8'>
<ProtocolBrand ProtocolId='SET1.0' ProtocolBrandId='Visa:'>
</ProtocolBrand>
</Brand>
<Brand ID ='M1.5' BrandId='BritishAirwaysMC' BrandName='British Airways MasterCard'
BrandLogoNetLocn='ftp://otplogos.britishairways.co.uk'
BrandNarrative='Double air miles with British Airways MasterCard'
ProtocolAmountRefs ='M1.7 M1.8' >
<ProtocolBrand ProtocolId='SET1.0' ProtocolBrandId='MasterCard:BA'>
</ProtocolBrand>
</Brand >
<Brand ID ='M1.6' BrandId='Walmart' BrandName='Walmart Store Card'
BrandLogoNetLocn='ftp://otplogos.walmart.com'
BrandNarrative='5% off with your Walmart Card on purchases over $150'
ProtocolAmountRefs='M1.8'>
</Brand>
<ProtocolAmount ID ='M1.7' PayProtocolRef='M1.10' CurrencyAmountRefs='M1.9' >
<PackagedContent Transform="BASE64">
238djqw1298erh18dhoire
</PackagedContent>
</ProtocolAmount>
<ProtocolAmount ID ='M1.8' PayProtocolRef='M1.11' CurrencyAmountRefs='M1.9' >
<PackagedContent Transform="BASE64">
238djqw1298erh18dhoire
</PackagedContent>
</ProtocolAmount>
<CurrencyAmount ID ='M1.9' Amount='157.53' CurrCode='USD'/>
<PayProtocol ID ='M1.10' ProtocolId='SET1.0'
ProtocolName='Secure Electronic Transaction Version 1.0'
PayReqNetLocn='http://www.example.com/etill/set1' >
<PackagedContent Transform="BASE64">
8ueu26e482hd82he82
</PackagedContent>
</PayProtocol>
<PayProtocol ID ='M1.11' ProtocolId='SCCD1.0'
ProtocolName='Secure Channel Credit/Debit'
PayReqNetLocn='http://www.example.com/etill/sccd1' >
<PackagedContent Transform="BASE64">
82hd82he8226e48ueu
</PackagedContent>
</PayProtocol>
</BrandList>11.2.3. Пример выбора вида платежа
CurrencyAmountRef='M1.9' >
</BrandSelection>11.2.4. Список видов платежа, базирующихся на комплексных электронных деньгах
PayDirection='Debit'>
<Brand ID ='M1.13' BrandId='Mondex' BrandName='Mondex Electronic Cash'
BrandLogoNetLocn='ftp://otplogos.mondex.com' ProtocolAmountRefs='M1.17 M1.18'>
</Brand>
<Brand ID ='M1.14' BrandId='GeldKarte' BrandName='GeldKarte Electronic Cash'
BrandLogoNetLocn='ftp://otplogos.geldkarte.co.de' ProtocolAmountRefs='M1.19'>
</Brand>
<Brand ID ='M1.15' BrandId='CyberCoin' BrandName='CyberCoin Eletronic Cash'
BrandLogoNetLocn='http://otplogos.cybercash.com' ProtocolAmountRefs ='M1.20'>
</Brand >
<Brand ID ='M1.16' BrandId='DigiCash' BrandName='DigiCash Electronic Cash'
BrandLogoNetLocn='http://otplogos.digicash.com'
BrandNarrative='5% off with your Walmart Card on purchases over $150'
ProtocolAmountRefs='M1.22'>
</Brand>
<ProtocolAmount ID ='M1.17' PayProtocolRef='M1.31'
CurrencyAmountRefs='M1.25 M1.29'>
</ProtocolAmount>
<ProtocolAmount ID ='M1.18' PayProtocolRef='M1.32'
CurrencyAmountRefs='M1.26 M1.27 M1.28 M1.30'>
</ProtocolAmount>
<ProtocolAmount ID ='M1.19' PayProtocolRef='M1.35' CurrencyAmountRefs='M1.28'>
</ProtocolAmount>
<ProtocolAmount ID ='M1.20' PayProtocolRef='M1.34 M1.33'
CurrencyAmountRefs='M1.23 M1.24 M1.27 M1.28 M1.29 M1.30'>
</ProtocolAmount>
<ProtocolAmount ID ='M1.21' PayProtocolRef='M1.36'
CurrencyAmountRefs='M1.23 M1.24 M1.27 M1.28 M1.29 M1.30'>
</ProtocolAmount>
<CurrencyAmount ID ='M1.23' Amount='20.00' CurrCode='USD'/>
<CurrencyAmount ID ='M1.24' Amount='12.00' CurrCode='GBP'/>
<CurrencyAmount ID ='M1.25' Amount='19.50' CurrCode='USD'/>
<CurrencyAmount ID ='M1.26' Amount='11.75' CurrCode='GBP'/>
<CurrencyAmount ID ='M1.27' Amount='36.00' CurrCode='DEM'/>
<CurrencyAmount ID ='M1.28' Amount='100.00' CurrCode='FFR'/>
<CurrencyAmount ID ='M1.29' Amount='22.00' CurrCode='CAD'/>
<CurrencyAmount ID ='M1.30' Amount='15000' CurrCode='ITL'/>
<PayProtocol ID ='M1.31' ProtocolId='MXv1.0'
ProtocolName='Mondex IOTP Protocol Version 1.0'
PayReqNetLocn='http://www.mxbankus.com/etill/mx' >
</PayProtocol>
<PayProtocol ID ='M1.32' ProtocolId='MXv1.0'
ProtocolName='Mondex IOTP Protocol Version 1.0'
PayReqNetLocn='http://www.mxbankuk.com/vserver' >
</PayProtocol>
<PayProtocol ID ='M1.33' ProtocolId='Ccashv1.0' ProtocolName='CyberCoin Version 1.0'
PayReqNetLocn='http://www.cybercash.com/ccoin' >
</PayProtocol>
<PayProtocol ID ='M1.34' ProtocolId='CCashv2.0' ProtocolName='CyberCoin Version 2.0'
PayReqNetLocn='http://www.cybercash.com/ccoin' >
</PayProtocol>
<PayProtocol ID ='M1.35' ProtocolId='GKv1.0' ProtocolName='GeldKarte Version 1.0'
PayReqNetLocn='http://www.example.com/pgway'>
</PayProtocol>
<PayProtocol ID ='M1.36' ProtocolId='DCashv1.0'
ProtocolName='DigiCash Protocol Version 1.0'
PayReqNetLocn='http://www.example.com/digicash' >
</PayProtocol>
</BrandList>12. Соображения IANA
12.1. Коды контролируемые IANA
Тип элемента/Имя атрибута
Значения атрибутов
Алгоритм/Имя
"sha1" - указывает, что будет использована аутентификация [SHA1]
(Когда алгоритм является производным от компонента AuthReq)
"Подпись" - указывает, что аутентификация включает в себя генерацию цифровой подписи.
"Pay:ppp", где "ppp" может быть установлено равным любому допустимому значению для "iotpbrand" (смотри ниже)
Тип элемента/Имя атрибута
Значения атрибутов
Вид платежа/BrandId
Следующий список исходных значений BrandId был получен от организаций, которые сипользуют сертификаты протокола SET с 1-го июня 1999:
"Amex" - American Express
"Dankort" - Dankort
"JCB" - JCB
"Maestro" - Maestro
"MasterCard" - MasterCard
"NICOS" - NICOS
"VISA" - Visa
Кроме того определены следующие значения Id видов платежа:
"Mondex"
"GeldKarte"
Валютная сумма/CurrCode
Коды валюты зависят от CurrCodeType (смотри ниже).
Тип элемента/Имя атрибута
Значения атрибута
Валютная сумма/CurrCodeType
"ISO4217A"
"IOTP"
DeliveryData/DelivMethod
"Post"
"Web"
"Email"
PackagedContent/Content
"PCDATA"
"MIME"
"MIME:mimetype" (где mimetype должен быть тем же, что и в content-type, как это определено в [MIME])
"XML"
RelatedTo/RelationshipType
"IotpTransaction"
"Reference"
Тип элемента/Имя атрибута
Значения атрибута
Значения Status/StatusType
Значения Предложение
Платеж
Доставка
Аутентификация
Не идентифицировано
Новые значения атрибута Status Type выделяются после:
TradingRole/TradingRole
"Consumer"
"Merchant"
"PaymentHandler"
"DeliveryHandler"
"DelivTo"
Тип элемента/Имя атрибута
Значения атрибута
TransId/IotpTransType
"BaselineAuthentication"
"BaselineDeposit"
"BaselineRefund"
"BaselineWithdrawal"
"BaselineValueExchange"
"BaselineInquiry"
"BaselinePing"
Новые значения атрибута IotpTransType выделяются после:Attribute/Content
(смотри компонент Signature)"OfferResponse"
"PaymentResponse"
"DeliveryResponse"
"AuthenticationRequest"
"AuthenticationResponse"
"PingRequest"
"PingResponse"
Новые значения кода, которые описывают тип подписи выделяются после:
12.2. Коды, неконтролируемые IANA
NameChar
NameChar имеет то же определение, что и [XML] определение NameChar.
13. Определения типов данных протокола IOTP
******************************************************
* *
* INTERNET OPEN TRADING PROTOCOL VERSION 1.0 DTD *
* Имя файла: ietf.org/rfc/rfc2801.dtd *
* *
* Отличие от версии 07 (iotp-v1.0-protocol-07.dtd) *
* - никаких изменений *
* *
* Copyright Internet Engineering Task Force 1998-2000*
* *
******************************************************
******************************
* Определение сообщения IOTP *
******************************
-->
<!ELEMENT IotpMessage ( TransRefBlk, IotpSignatures?, ErrorBlk?,
( AuthReqBlk | AuthRespBlk | AuthStatusBlk | CancelBlk | DeliveryReqBlk |
DeliveryRespBlk | InquiryReqBlk | InquiryRespBlk | OfferRespBlk | PayExchBlk |
PayReqBlk | PayRespBlk | PingReqBlk | PingRespBlk | TpoBlk | TpoSelectionBlk
)* ) >
<!ATTLIST IotpMessage xmlns CDATA 'iotp:ietf.org/iotp-v1.0' >
***************************************
* Определение блока ссылок транзакции *
*************************************** -->
<!ELEMENT TransRefBlk (TransId, MsgId, RelatedTo*)>
<!ATTLIST TransRefBlk ID ID #REQUIRED>
<!ELEMENT TransId EMPTY>
<!ATTLIST TransId ID ID #REQUIRED
Version NMTOKEN #FIXED '1.0'IotpTransId CDATA #REQUIRED
IotpTransType CDATA #REQUIREDTransTimeStamp CDATA #REQUIRED>
<!ATTLIST MsgId ID ID #REQUIRED
RespIotpMsg NMTOKEN #IMPLIED
xml:lang NMTOKEN #REQUIRED
LangPrefList NMTOKENS #IMPLIED
CharSetPrefList NMTOKENS #IMPLIED
SoftwareId CDATA #REQUIRED
TimeStamp CDATA #IMPLIED>
xml:lang NMTOKEN #REQUIRED
RelationshipType NMTOKEN #REQUIRED
Relation CDATA #REQUIRED
RelnKeyWords NMTOKENS #IMPLIED>
**********************************
* Общий элемент Packaged Content *
********************************** -->
<!ELEMENT PackagedContent (#PCDATA)>
<!ATTLIST PackagedContent Name CDATA #IMPLIED
Content NMTOKEN "PCDATA"
Transform (NONE|BASE64) "NONE">
***********************
* Торговые компоненты *
*********************** -->
<!-- PROTOCOL OPTIONS COMPONENT -->
<!ELEMENT ProtocolOptions EMPTY >
<!ATTLIST ProtocolOptions ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
ShortDesc CDATA #REQUIRED
SenderNetLocn CDATA #IMPLIED
SecureSenderNetLocn CDATA #IMPLIED
<!ELEMENT AuthReq (Algorithm, PackagedContent*)>
<!ATTLIST AuthReq ID ID #REQUIRED
AuthenticationId CDATA #REQUIREDContentSoftwareId CDATA #IMPLIED>
<!-- AUTHENTICATION RESPONSE COMPONENT -->
<!ELEMENT AuthResp (PackagedContent*) >
<!ATTLIST AuthResp ID ID #REQUIRED
AuthenticationId CDATA #REQUIREDSelectedAlgorithmRef NMTOKEN #REQUIRED
ContentSoftwareId CDATA #IMPLIED>
<!-- TRADING ROLE INFO REQUEST COMPONENT -->
<!ELEMENT TradingRoleInfoReq EMPTY>
<!ATTLIST TradingRoleInfoReq ID ID #REQUIRED
TradingRoleList NMTOKENS #REQUIRED>
<!-- ORDER COMPONENT -->
<!ELEMENT Order (PackagedContent*)>
><!ATTLIST Order ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
OrderIdentifier CDATA #REQUIRED
ShortDesc CDATA #REQUIRED
OkFrom CDATA #REQUIRED
OkTo CDATA #REQUIRED
ApplicableLaw CDATA #REQUIRED
<!-- ORGANISATION COMPONENT -->
<!ELEMENT Org (TradingRole+, ContactInfo?, PersonName?, PostalAddress?)>
<!ATTLIST Org ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
OrgId CDATA #REQUIRED
LegalName CDATA #IMPLIED
ShortDesc CDATA #IMPLIED
<!ELEMENT TradingRole EMPTY>
<!ATTLIST TradingRole ID ID#REQUIRED
TradingRole NMTOKEN #REQUIRED
IotpMsgIdPrefix NMTOKEN #REQUIRED
CancelNetLocn CDATA #IMPLIED
ErrorNetLocn CDATA #IMPLIED
<!ELEMENT ContactInfo EMPTY>
<!ATTLIST ContactInfo xml:lang NMTOKEN #IMPLIED
Tel CDATA #IMPLIED
Fax CDATA #IMPLIED
Email CDATA #IMPLIED
NetLocn CDATA #IMPLIED>
<!ATTLIST PersonName xml:lang NMTOKEN #IMPLIED
Title CDATA #IMPLIED
GivenName CDATA #IMPLIED
Initials CDATA #IMPLIED
FamilyName CDATA #IMPLIED>
<!ATTLIST PostalAddress xml:lang NMTOKEN #IMPLIED
AddressLine1 CDATA #IMPLIED
AddressLine2 CDATA #IMPLIED
CityOrTown CDATA #IMPLIED
StateOrRegion CDATA #IMPLIED
PostalCode CDATA #IMPLIED
Country CDATA #IMPLIED
<!-- BRAND LIST COMPONENT -->
<!ELEMENT BrandList (Brand+, ProtocolAmount+, CurrencyAmount+, PayProtocol+)>
<!ATTLIST BrandList ID
ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
ShortDesc CDATA #REQUIRED PayDirection
<!ELEMENT Brand (ProtocolBrand*, PackagedContent*)>
<!ATTLIST Brand ID ID #REQUIRED
xml:lang NMTOKEN #IMPLIED
BrandId CDATA #REQUIRED
BrandName CDATA #REQUIRED
BrandLogoNetLocn CDATA #REQUIRED
BrandNarrative CDATA #IMPLIED
ProtocolAmountRefs IDREFS #REQUIRED
<!ELEMENT ProtocolBrand (PackagedContent*) >
<!ATTLIST ProtocolBrand ProtocolId CDATA #REQUIRED
ProtocolBrandId CDATA #REQUIRED>
<!ELEMENT ProtocolAmount (PackagedContent*) >
<!ATTLIST ProtocolAmount ID
ID #REQUIRED
PayProtocolRef IDREF #REQUIRED
CurrencyAmountRefs IDREFS #REQUIRED
<!ELEMENT CurrencyAmount EMPTY >
<!ATTLIST CurrencyAmount ID
ID #REQUIRED
Amount CDATA #REQUIRED
CurrCodeType NMTOKEN 'ISO4217-A'
<!ELEMENT PayProtocol (PackagedContent*) >
<!ATTLIST PayProtocol ID ID #REQUIRED
xml:lang NMTOKEN #IMPLIED
ProtocolId NMTOKEN #REQUIRED
ProtocolName CDATA #REQUIRED
ActionOrgRef NMTOKEN #REQUIRED
PayReqNetLocn CDATA #IMPLIED
SecPayReqNetLocn CDATA #IMPLIED
<!-- BRAND SELECTION COMPONENT -->
<!ELEMENT BrandSelection (BrandSelBrandInfo?,
BrandSelProtocolAmountInfo?,
BrandSelCurrencyAmountInfo?)>
<!ATTLIST BrandSelection ID
ID #REQUIRED
BrandListRef NMTOKEN #REQUIRED
BrandRef NMTOKEN #REQUIRED
CurrencyAmountRef NMTOKEN #REQUIRED>
<!ELEMENT BrandSelBrandInfo (PackagedContent+)>
<!ATTLIST BrandSelBrandInfo ID ID #REQUIRED
ContentSoftwareId CDATA #IMPLIED>
<!ELEMENT BrandSelProtocolAmountInfo (PackagedContent+)>
<!ATTLIST BrandSelProtocolAmountInfo ID ID #REQUIRED
ContentSoftwareId CDATA #IMPLIED>
<!ELEMENT BrandSelCurrencyAmountInfo (PackagedContent+)>
<!ATTLIST BrandSelCurrencyAmountInfo ID ID #REQUIRED
ContentSoftwareId CDATA #IMPLIED >
<!-- PAYMENT COMPONENT -->
<!ELEMENT Payment EMPTY>
<!ATTLIST Payment ID
ID #REQUIRED
OkFrom CDATA #REQUIRED
OkTo CDATA #REQUIRED
BrandListRef NMTOKEN #REQUIRED
SignedPayReceipt (True | False) #REQUIRED
<!-- PAYMENT SCHEME COMPONENT -->
<!ELEMENT PaySchemeData (PackagedContent+) >
<!ATTLIST PaySchemeData ID
ID #REQUIRED
PaymentRef NMTOKEN #IMPLIED
ConsumerPaymentId CDATA #IMPLIED
PaymentHandlerPayId CDATA #IMPLIED
ContentSoftwareId CDATA #IMPLIED>
<!ELEMENT PayReceipt (PackagedContent*) >
<!ATTLIST PayReceipt ID ID #REQUIRED
PaymentRef NMTOKEN #REQUIRED
PayReceiptNameRefs NMTOKENS #IMPLIED
ContentSoftwareId CDATA #IMPLIED>
<!ELEMENT PaymentNote (PackagedContent+)>
<!ATTLIST PaymentNote ID ID #REQUIREDContentSoftwareId CDATA #IMPLIED>
<!ELEMENT Delivery (DeliveryData?, PackagedContent*) >
<!ATTLIST Delivery ID
ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
DelivExch (True | False) #REQUIRED
DelivAndPayResp (True | False) #REQUIRED
ActionOrgRef NMTOKEN #IMPLIED>
<!ATTLIST DeliveryData xml:lang
NMTOKEN #IMPLIED
OkFrom CDATA #REQUIRED
OkTo CDATA #REQUIRED
DelivMethod NMTOKEN #REQUIRED
DelivToRef NMTOKEN #REQUIRED
DelivReqNetLocn CDATA #IMPLIED
SecDelivReqNetLocn CDATA #IMPLIED
<!ELEMENT ConsumerDeliveryData EMPTY>
<!ATTLIST ConsumerDeliveryData ID ID #REQUIRED
ConsumerDeliveryId CDATA #REQUIRED>
<!-- DELIVERY NOTE COMPONENT -->
<!ELEMENT DeliveryNote (PackagedContent+)>
<!ATTLIST DeliveryNote ID
ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
DelivHandlerDelivId CDATA #IMPLIED
<!-- STATUS COMPONENT -->
<!ELEMENT Status EMPTY>
<!ATTLIST Status ID
ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
StatusType NMTOKEN #REQUIRED
ElRef NMTOKEN #IMPLIED
ProcessState (NotYetStarted | InProgress |
CompletedOk | Failed | ProcessError) #REQUIRED
CompletionCode NMTOKEN #IMPLIEDProcessReference CDATA #IMPLIED
StatusDesc CDATA #IMPLIED >
<!ELEMENT TradingRoleData (PackagedContent+)>
<!ATTLIST TradingRoleData ID ID #REQUIRED
<!-- INQUIRY TYPE COMPONENT -->
<!ELEMENT InquiryType EMPTY>
<!ATTLIST InquiryType ID
ID #REQUIRED
Type NMTOKEN #REQUIRED
ElRef NMTOKEN #IMPLIED
<!-- ERROR COMPONENT -->
<!ELEMENT ErrorComp (ErrorLocation+, PackagedContent*)>
<!ATTLIST ErrorComp ID
NMTOKEN #REQUIRED
xml:lang NMTOKEN #REQUIRED
ErrorCode NMTOKEN #REQUIRED
ErrorDesc CDATA #REQUIRED
Severity (Warning|TransientError|HardError) #REQUIRED
MinRetrySecs CDATA #IMPLIED
SwVendorErrorRef CDATA #IMPLIED>
<!ATTLIST ErrorLocation ElementType
NMTOKEN #REQUIRED
IotpMsgRef NMTOKEN #IMPLIED
BlkRef NMTOKEN #IMPLIED
CompRef NMTOKEN #IMPLIED
ElementRef NMTOKEN #IMPLIED
<!--
**********************
* ТОРГОВЫЕ БЛОКИ *
********************** -->
<!ELEMENT TpoBlk ( ProtocolOptions, BrandList*, Org* )>
<!ATTLIST TpoBlk ID ID #REQUIRED >
<!-- TPO SELECTION BLOCK -->
<!ELEMENT TpoSelectionBlk (BrandSelection+)>
<!ATTLIST TpoSelectionBlk ID ID #REQUIRED>
<!-- OFFER RESPONSE BLOCK -->
<!ELEMENT OfferRespBlk (Status, Order?, Payment*, Delivery?, TradingRoleData*)>
<!ATTLIST OfferRespBlk ID ID #REQUIRED >
<!ELEMENT AuthReqBlk (AuthReq*, TradingRoleInfoReq?)>
<!ATTLIST AuthReqBlk ID ID #REQUIRED>
<!ELEMENT AuthRespBlk (AuthResp?, Org*)>
<!ATTLIST AuthRespBlk ID ID #REQUIRED>
<!ELEMENT AuthStatusBlk (Status) >
<!ATTLIST AuthStatusBlk ID ID #REQUIRED>
<!ELEMENT PayReqBlk (Status+, BrandList, BrandSelection,
Payment, PaySchemeData?, Org*, TradingRoleData*)>
<!ATTLIST PayReqBlk ID ID #REQUIRED>
<!ELEMENT PayExchBlk (PaySchemeData)>
<!ATTLIST PayExchBlk ID ID #REQUIRED>
<!ELEMENT PayRespBlk (Status, PayReceipt?, PaySchemeData?,
PaymentNote?, TradingRoleData*) >
<!ATTLIST PayRespBlk ID ID #REQUIRED>
<!-- DELIVERY REQUEST BLOCK -->
<!ELEMENT DeliveryReqBlk (Status+, Order, Org*, Delivery,
ConsumerDeliveryData?, TradingRoleData*) >
<!ATTLIST DeliveryReqBlk ID ID #REQUIRED>
<!ELEMENT DeliveryRespBlk (Status, DeliveryNote)>
<!ATTLIST DeliveryRespBlk ID ID #REQUIRED>
<!ELEMENT InquiryReqBlk ( InquiryType, PaySchemeData? )>
<!ATTLIST InquiryReqBlk ID ID #REQUIRED >
<!ELEMENT InquiryRespBlk (Status, PaySchemeData?)>
<!ATTLIST InquiryRespBlk ID ID #REQUIRED
LastReceivedIotpMsgRef NMTOKEN #IMPLIED
LastSentIotpMsgRef NMTOKEN #IMPLIED>
<!ELEMENT PingReqBlk (Org*)>
<!ATTLIST PingReqBlk ID ID #REQUIRED>
<!ELEMENT PingRespBlk (Org+)>
<!ATTLIST PingRespBlk ID ID #REQUIRED
PingStatusCode (Ok | Busy | Down) #REQUIRED
BR/P>
xml:lang NMTOKEN #IMPLIEDPingStatusDesc CDATA #IMPLIED>
><!ELEMENT ErrorBlk (ErrorComp+, PaySchemeData*)>
<!ATTLIST ErrorBlk ID ID #REQUIRED>
<!ELEMENT CancelBlk (Status)>
<!ATTLIST CancelBlk ID ID #REQUIRED>
<!--
*****************************
* Определение блока подписи *
***************************** -->
<!ELEMENT IotpSignatures (Signature+ ,Certificate*)>
<!ATTLIST IotpSignatures ID ID #IMPLIED>
*******************************************
* Определение компонента подписи IOTP *
******************************************* -->
<!ATTLIST Signature ID ID #IMPLIED>
Digest+,
Attribute*,
OriginatorInfo,
RecipientInfo+ )>
<!ATTLIST Algorithm ID ID #REQUIRED
>type (digest|signature) #IMPLIEDname NMTOKEN #REQUIRED>
<!ATTLIST Digest DigestAlgorithmRef IDREF #REQUIRED>
<!ATTLIST Attribute type NMTOKEN #REQUIRED
>critical ( true | false ) #REQUIRED>
<!ATTLIST OriginatorInfo OriginatorRef NMTOKEN #IMPLIED>
<!ATTLIST RecipientInfo SignatureAlgorithmRef IDREF #REQUIRED
SignatureValueRef IDREF #IMPLIEDSignatureCertRef IDREF #IMPLIED
RecipientRefs NMTOKENS #IMPLIED>
<!ATTLIST KeyIdentifier value CDATA #REQUIRED>
<!ATTLIST Parameter type CDATA #REQUIRED>
<!--
*******************************************
* Определение компонента сертификата IOTP *
******************************************* -->
<!ELEMENT Certificate ( IssuerAndSerialNumber, ( Value | Locator ) )>
<!ATTLIST IssuerAndSerialNumber issuer CDATA #REQUIRED number CDATA
#REQUIRED>
<!--
**************************************
* Определение компонента SHARED IOTP *
************************************** -->
<!ELEMENT Value ( #PCDATA )>
<!ATTLIST Value ID ID #IMPLIED encoding (base64|none) 'base64'>
<!ATTLIST Locator xml:link CDATA #FIXED 'simple' href CDATA #REQUIRED>14. Словарь
Имя
Описание
Аутентификатор
Организация, которая запрашивает аутентификацию другой организации
Аутентифицируемый
Организация, которая осуществляет аутентификацию у аутентификатора
Рабочая ошибка (Business Error)
Смотри компонент Status.
Вид платежа (Brand)
Вид платежа представляет собой идентификатор
определенного типа платежного инструмента. Список видов платежа явлется перечнем платежных опций, которые предоставляются продавцом покупателю и из которого последний выбирает вид оплаты. Каждый вид платежа может иметь разных кассиров. Примеры видов платежей включают в себя:
о частные и корпоративные виды платежей, например MasterCard, Visa, American Express, Diners Club, American Express, Mondex, GeldKarte, CyberCash, и т.д.. вльготные виды платежа (смотри ниже). Последние включают в себя:
o магазинные виды платежа, где платежный инструмент предоставляется покупателю конкретным продавцом, например Walmart, Sears или Marks and Spencer (UK)
o комбинированные виды платежа, например American Advantage Visa, где компания использует свою собственную системы о платы, которая совмещается с каким-то корпоративным видом платежей.Покупатель
Организация, которая обычно платит за товары или услуги.
ContentSoftwareId
Содержит информацию, которая идентифицирует программу, генерирующую содержимое элемента. Ее целью является помощь в разрешении проблем совместимости, которые могут возникнуть в результате несоответствия между сообщениями, выработанными различными программами. Это текстовая строка на языке, определенном xml:lang. Этот идентификатор должен содержать как минимум:
Агент обслуживания
Организация, которая обслуживает покупателя, обычно от имени продавца. Примеры обслуживания покупателя включают в себя, реагирование на задачи, которые ставит покупатель в ходе реализации транзакций IOTP, в которых он участвует.
Агент доставки
Организация, которая непосредственно доставляет товары или услуги покупателю от имени продавца. Доставка может иметь цифровую форму (напр., в виде сообщений [MIME]), или физическую форму с привлечением почты или курьеров.
Документальный обмен
Документальный обмен состоит из последовательности сообщений, которыми обмениваются партнеры в рамках одного или двух торговых операций одновременно. Документальные обмены могут комбинироваться, образуя конкретную транзакцию IOTP.
Двойственный вид платежа (Dual Brand)
Двойственный вид платежа означает, что один платежный инструмент может использоваться так, как будто имеются два независимых вида платежа. Например, японская карта "UC" MasterCard может быть использована как UC-карта или как обычная MasterCard. Платежи с помощью UC-карты и MasterCard могут иметь разных Кассиров. Это означает, что: Блок Error
Блок Error сообщает, что в полученном сообщении IOTP обнаружена техническая ошибка. Обычно технические ошибки вызываются ошибками в XML или сбоями в процессе обработки сообщения. Часто генерация или получение блока Error вызывает прерывание транзакции. Эти ошибки отличаются от рабочих ошибок (Business Error), о которых сообщается в компонентах Status. Последние ошибки также могут привести к срыву выполнения транзакции.
Блок Exchange
Блок Exchange посылается при торговом обмене от одной торговой роли к другой. Он содержит один или более торговых компонентов. Блоки Exchange при торговом обмене всегда посылаются после блоков Request и до блока Response (отклика). Соджержимое блока Exchange зависит от типа торгового обмена.
Сообщение IOTP
Сообщение IOTP является самой внешней структурой, в которую помещаются документы, которыми обмениваются торговые роли, принимающие участие в сделке. Это хорошо сформатированный XML-документ. Документы, которые содержат сообщение, состоят из:
o опционный блок Signature, который служит для цифровой подписи торговых блоков или компонентов, связанных с транзакцией IOTP;
o опционный блок Error для уведомления о технических ошибках, содержащихся в предыдущем полученном сообщении IOTP и
o последовательность торговых блоков IOTP, которые несут данные, необходимые для выполнения транзакции.Транзакция IOTP
Транзакция IOTP (Internet Open Trading Protocol) представляет собой набор IOTP-сообщений, передаваемых торговыми ролями. Правила о том, что могут содержать IOTP-сообщения, определяются типом транзакции.
Тип транзакции IOTP
Тип транзакции идентифицирует ее разновидность. Примерами транзакции могут служить: покупка, возврат денег, аутентификация, отзыв, депозит. Типы транзакции IOTP определяет:
o то, как эти торговые обмены могут комбинироваться, чтобы обеспечить достижение цели транзакции;
o какие торговые блоки могут быть включены в IOTP-сообщения, образующие транзакцию.Продавец
Организация, которая предоставляет товары или услуги, и получает выгоду от платежей за них
Агент обслуживания Покупателя
Организация, которая вовлекается в диалог с покупателем от имени продавца с целью разрешения возникающих проблем
Организация
Компания или частное лицо, которое принимает участие в сделке и выполняет определенную торговую роль. Организации могут выполнять и несколько торговых ролей в одной сделке
Кассир
Организация, которая физически получает платеж от покупателя для продавца
Платежный инструмент
Платежный инструмент представляет собой средство, с помощью которого покупатель платит за товары или услуги, предлагаемые продавцом. Это может быть, например:
Льготный вид платежа
Льготный вид платежа предполагает, что, если покупатель воспользуется этим видом оплаты, тогда он получит дополнительную выгду, которая может быть реализована двумя путями:
Компонент Receipt (расписка)
Компонент Receipt является записью об успешном завершении торгового обмена. Примеры компонентов Receipt включают в себя: платежные расписки и накладные при доставке (Delivery Notes). Их содержимое зависит от технологии выполнения торгового обмена. Например, платежная расписка SET (Secure Electronic Transaction) состоит из платежных сообщений SET, которые фиксируют результат оплаты.
Блок запроса
Блок запроса является торговым блоком, который содержит запрос начала торгового обмена. Торговые компоненты в блоке запроса могут быть подписаны с помощью блока Signature, что позволит идентифицировать отправителя. Авторизация начала торгового обмена может быть выполнена с помощью подписей, содержащихся в компонентах Receipt, которые вложены в блоки откликов предыдущего торгового обмена. Примерами блоков запроса могут служить запросы платежа и запросы доставки
Блок отклика
Блок отклика является торговым блоком, который указывает, что торговый обмен завершился. Он посылается торговой ролью, которая получила блок запроса, торговой роли. Блок отклика содержит компонент Status с информацией о завершении торгового обмена, например, он указывает, завершился ли торговый обмен успешно. Для некоторых торговых обменов блок отклика содержит компонент Receipt (расписка). Компоненты Receipt могут цифровым образом подписывать сообщение с использованием блока Signature, что делает завершение торгового обмена неопровержимым. Примеры блоков отклика включают в себя отклики предложения, платежа и доставки.
Блок подписи
Блок подписи является торговым блоком, который содержит одну или более цифровых подписей в виде компонентов Signature. Компонент Signature может цифровым образом подписывать любой блок или компонент в любом сообщении IOTP
Компонент Status
Компонент Status содержит информацию, которая описывает состояние торгового обмена. До завершения торгового обмена компонент Status может указывать на то, как он проходит. Если же торговый обмен завершился, компонент Status может говорить лишь об успешном завершении или о наличии рабочей ошибки. Рабочая ошибка указывает, что продолжение торгового обмена невозможно, так как нарушено какое-то правило, например, "нет достаточных средств". При этом не предполагается каких-либо технических ошибок, связанных с содержимым или форматом IOTP-сообщения в транзакции. Техническая ошибка
Смотри блок Error.
Торговый блок
Торговый блок состоит из одного или более торговых компронент. Один или более торговых блоков может содержаться в IOTP-сообщениях, которые пересылаются в форме XML-документов от одной торговой роли к другой. Сущетсвует три типа торговых блоков:
o блок Exchange или
o блок ResponseТорговый компонент
Торговый компонент является собранием XML-элементов и атрибутов. Торговые компоненты являются дочерними элементами Торговых блоков. Примерами торговых компонентов являются: Предложение, Список видов платежей, Платежная расписка, Доставка [информации], Сумма платежа
Торговый обмен
Торговый обмен предполагает обмен последовательностью документов, пересылаемых между торговыми ролями. Документы могут иметь форму торговых блоков или они могут быть пересланы каким-то другим образом, например, путем ввода данных на WEB-странице. Каждый торговый обмен состоит из трех главных частей:
Примерами торговых обменов/услуг могут служить:
Торговая роль
Торговая роль идентифицирует различные способы, которыми организации могут участвовать в сделке. Существует пять торговых ролей: Покупатель, Продавец, Кассир, Агент доставки и Агент обслуживания покупателя.
Блок ссылок транзакции
Блок ссылок транзакции идентифицирует транзакцию IOTP. Он содержит данные, которые идентифицируют:
15. Ссылки
[Base64]
Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.
[DOM-HASH]
Maruyama, H., Tamura, K. and N. Uramoto, "Digest Values for DOM (DOMHASH)", RFC 2803, April 2000.
[DNS]
Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987.
[DNS]
Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, November 1987.
[DSA]
The Digital Signature Algorithm (DSA) published by the National Institute of Standards and Technology (NIST) in the Digital Signature Standard (DSS), which is a part of the US government's Capstone project.
[ECCDSA]
Elliptic Curve Cryptosystems Digital Signature Algorithm (ECCDSA). Elliptic curve cryptosystems are analogues of public-key cryptosystems such as RSA in which modular multiplication is replaced by the elliptic curve addition operation. See: V. S. Miller. Use of elliptic curves in cryptography. In Advances in Cryptology - Crypto '85, pages 417-426, Springer-Verlag, 1986.
[HMAC]
Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997.
[HTML]
Berners-Lee, T. and D. Connolly, "Hypertext Markup Language - 2.0", RFC 1866, November 1995.
[HTML]
Hyper Text Mark Up Language. The Hypertext Mark-up Language (HTML) is a simple mark-up language used to create hypertext documents that are platform independent. See the World Wide Web (W3C) consortium web site at: http://www.w3.org/MarkUp/
[HTTP]
Berners-Lee, T., Fielding, R. and H. Frystyk, "Hypertext Transfer Protocol -- HTTP/1.0", RFC-1945, May 1996.
[HTTP]
Fielding, R., Gettys, J., Mogul, J., Frystyk, T. and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1.", RFC-2616, June 1999.
[IANA]
The Internet Assigned Numbers Authority. The organisation responsible for co-ordinating the names and numbers associated with the Internet. See http://www.iana.org/
[ISO4217]
ISO 4217: Codes for the Representation of Currencies. Available from ANSI or ISO.
[IOTPDSIG]
Davidson, K. and Y. Kawatsura, "Digital Signatures for the v1.0 Internet Open Trading Protocol (IOTP)", RFC-2802, April 2000.
[MD5]
Rivest, R., "The MD5 Message-Digest Algorithm", RFC-1321, April 1992.
[MIME]
Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, August 1982.
[MIME]
Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC-2045, November 1996.
[MIME]
Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC-2046, November 1996.
[MIME]
Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text" RFC-2047, November 1996.
[MIME]
Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", RFC-2048, November 1996.
[MIME]
Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples" RFC-2049, November 1996.
[OPS]
Open Profiling Standard. A proposed standard which provides a framework with built-in privacy safeguards for the trusted exchange of profile information between individuals and web sites. Being developed by Netscape and Microsoft amongst others.
[RFC1738]
Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform Resource Locators (URL)", RFC-1738, December 1994.
[RFC2434]
Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC-2434, October 1998.
[RSA]
RSA is a public-key cryptosystem for both encryption and authentication supported by RSA Data Security Inc. See: R. L. Rivest, A. Shamir, and L.M. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21(2): 120-126, February 1978.
[SCCD]
Secure Channel Credit Debit. A method of conducting a credit or debit card payment where unauthorised access to account information is prevented through use of secure channel transport mechanisms such as SSL/TLS. An IOTP supplement describing how SCCD works is under development.
[SET]
Secure Electronic Transaction Specification, Version 1.0, May 31, 1997. Supports credit and debit card payments using certificates at the Consumer and Merchant to help ensure authenticity. Download from: <http://www.setco.org>.
[SSL/TLS]
Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC-2246, January 1999.
[SHA1]
[FIPS-180-1]"Secure Hash Standard", National Institute of Standards and Technology, US Department Of Commerce, April 1995. Also known as: 59 Fed Reg. 35317 (1994). See http://www.itl.nist.gov/div897/pubs/fip180-1.htm
[UTC]
Universal Time Co-ordinated. A method of defining time absolutely relative to Greenwich Mean Time (GMT). Typically of the form: "CCYY-MM-DDTHH:MM:SS.sssZ+n" where the "+n" defines the number of hours from GMT. See ISO DIS8601.
[UTF16]
The Unicode Standard, Version 2.0. The Unicode Consortium, Reading, Massachusetts. See ISO/IEC 10646 1 Proposed Draft Amendment 1
[X.509]
ITU Recommendation X.509 1993 | ISO/IEC 9594-8: 1995, Including Draft Amendment 1: Certificate Extensions (Version 3 Certificate)
[XML
Recommendation for Namespaces in XML, World Wide Web Namespace] Consortium, 14 January 1999, "http://www.w3.org/TR/REC-xml-names"
[XML]
Extensible Mark Up Language. A W3C recommendation. See http://www.w3.org/TR/1998/REC-xml-19980210 for the 10 February 1998 version.
UP:
4.6 Электронная торговля в Интернет
Next:
4.6.2 SET и другие системы осуществления платежей