Торговые компоненты
7. Торговые компоненты
Далее рассматриваются торговые компоненты, используемые в IOTP. Торговые компоненты являются дочерними XML-элементами, что показано на диаграмме Рисунок .14.
Содержимое атрибута зависит от транспортного механизма.
SecureSenderNetLocn | Содержит безопасный сетевой узел отправителя блока TPO, в котором содержится компонент протокольных опций. |
SuccessNetLocn | Содержит сетевую позицию, которая должна быть отображена после успешного завершения транзакции. |
7.2. Компонент запроса аутентификации
Этот торговый компонент содержит параметр данных, которые используются при аутентификации одной торговой роли у другой. Его определение представлено ниже.
<!ELEMENT AuthReq (Algorithm, PackagedContent*)>
<!ATTLIST AuthReq ID ID #REQUIRED
AuthenticationId CDATA #REQUIREDContentSoftwareId CDATA #IMPLIED>
Если требуется, алгоритм может использовать данные вызова, содержащиеся в элементах Packaged Content из компонента запроса аутентификации. Формат Packaged Content является зависимым от алгоритма.
Атрибуты:
ID | Идентификатор, который однозначно идентифицирует компонент запроса аутентификации для данной транзакции IOTP. |
AuthenticationId | Идентификатор, специфицированный аутентификатором, который, если прислан организацией, которая получает запрос, позволит аутентификатору определить, какая аутентификационная процедура требуется. |
ContentSoftwareId | Смотри раздел 14. Словарь |
PackagedContent | Содержит данные вызова в виде одного или более элементах Packaged Content (смотри раздел 3.7), на которые следует рееагировать, используя алгоритм, опреденный элементом Algorithm. |
Algorithm | Содержит информацию, которая описывает алгоритм (смотри 7.19. Компоненты подписи), который должен быть использован для генерации отклика аутентификации. |
7.3. Компонент отклика аутентификации
Компонент отклика аутентификации содержит результаты аутентификационного запроса.
Используется алгоритм, содержащийся в компоненте запроса аутентификации (смотри раздел 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. Словарь. |
PackagedContent | Может содержать отклик, сформированный в качестве результата применения алгоритма, выбранного из компонента запроса аутентификации, смотри раздел 7.2. |
7.4. Компонент запроса информации торговой роли
Этот торговый компонент содержит список торговых ролей (смотри раздел 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 |
Атрибуты:
ID | Идентификатор, который однозначно определяет компонент Order в пределах текущей транзакции IOTP. |
xml:lang | Определяет язык, использованный атрибутами или дочерними элементами в пределах компонента, если только его значение не было изменено с помощью атрибута xml:lang дочернего элемента. Смотри раздел 3.8. |
OrderIdentifier | Это код, число или другой идентификатор, который автор заказа может использовать для идентификации заказа. В пределах транзакции он должен быть уникальным. Если он используется так, то нет нужды специфицировать содержимое элемента заказа, так как имеется ссылка на нужную информацию в базе данных. |
ShortDesc | Краткое описание заказа на языке, определенном атрибутом xml:lang. Оно используется для упрощения выбора индивидуального заказа из списка, например, из базы данных заказов, записанных туда продавцом, покупателем и т.д.. |
OkFrom | Дата и время в формате [UTC], после которого предложение, сделанное Продавцом теряет силу. |
OkTo | Дата и время в формате [UTC], до которого получатель может воспринимать предложение продавца не имеющим силу. |
ApplicableLaw | Фраза на языке, определенном атрибутом xml:lang, которая описывает штат или страну, юристдикция которой будет использована при разрешении конфликтов и споров. |
ContentSoftwareId | Смотри раздел 14. Словарь. |
PackagedContent | Опционное описание заказа в виде одного или более элементов Packaged Content (смотри раздел 3.7). |
Элемент Packaged Content будет в норме необходим, однако он может быть опущен там, где достаточная информация о покупке может быть получена из атрибута ShortDesc.
Если необходимо полное описание заказа, могут использоваться несколько элементов Packaged Content.
Хотя сумма и валюта вероятно присутствуют в элементах Packaged Content описания заказа, они содержатся в торговых компонентах, связанных с платежом (список видов платежа, выбор вида платежа и платеж). Это означает, что важно, чтобы сумма, которая действительно дожна быть уплачена, была четко отображена для Покупателя.
Для совместимости разные реализации должны поддерживать как минимум Plain Text, HTML и XML, что облегчит отображение.
7.5.2. Временные метки OkFrom и OkTo
Заметим, что:
- Дата OkFrom может быть позже чем дата OkFrom компонента Payment (смотри раздел 7.9), связанного с этим заказом, и
- аналогично, дата OkTo может быть раньше чем дата OkTo компонента Payment (смотри раздел 7.9).
Если предложение ограничено временными рамками, рекомендуется, чтобы продавцы взаимодействовали с покупателями и сообщали им условия заказа в понятной для них форме:
- предложение ограничено по времени;
- временные метки OkFrom и OkTo специфицируют время действия предложения;
- часы, напр., часы продавца, будут использоваться для определения действия предложения.
7.6. Компонент Organisation
Компонент Organisation предоставляет информацию об индивидууме или организации. Он может быть использован для различных целей, например:
- описать продавца, который продает товары,
- идентифицировать того, кто осуществляет покупку,
- идентифицировать того, кто будет доставлять товары,
- обеспечивать облуживание покупателя,
- описать того, кто будет Кассиром.
Смотри раздел 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 |
Атрибуты:
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 | Сетевая позиция, которая может быть использована для загрузки логотипа организации. |
Cодержимое:
TradingRole | Смотри 7.6.2. Элемент торговой роли. |
ContactInfo | Смотри 7.6.3. Элемент контактной информации. |
PersonName | Смотри 7.6.4. Персональное имя. |
PostalAddress | Смотри 7.6.5. Почтовый адрес. |
ID организаций используются одной из торговых ролей для идентификации торговой роли. Для того чтобы избежать путаницы, это означает, что эти ID должны быть глобально уникальными.
На практике это достигается следующим образом:
- Id организации для всех торговых ролей, за исключением торговой роли Покупателя, используют имена доменов, так как они уникальны по определению,
- Id организации для торговой роли покупателя выделяется одной из прочих торговых ролей в транзакции и делается уникальным путем присоединения его к другим Id организаций,
- если покупателю выделено Id организации для данной транзакции, это же Id используется всеми другими торговыми ролями в рамках этой транзакции для идентификации покупателя.
OrgId ::= NonConsumerOrgId | ConsumerOrgId
NonConsumerOrgId ::= DomainName
ConsumerOrgId ::= ConsumerOrgIdPrefix (namechar)+ "/" NonConsumerOrgId
ConsumerOrgIdPrefix ::= "Consumer:"
ConsumerOrgIdID организации покупателя состоит из:
- стандартного префикса, чтобы идентифицировать то, что это организация покупатель. Далее следует
- один или более символов, которые согласуются с определением "namechar" XML. Смотри спецификации [XML]. За ними следует
- NonConsumerOrgId организации, которая выдала ConsumerOrgId. Обычно это продавец. Применение символов в верхнем или нижнем регистре не играет роли.
NonConsumerOrgId | Если роль не соответствует покупателю, тогда здесь содержится каноническое имя этой организации. Смотри [DNS], за которым опционно следуют дополнительные символы, если требуется сделать NonConsumerOrgId уникальным. |
- newjerseybooks.comid организации-продавца;
- westernbank.co.ukid организации-кассира;
- consumer:1000247ABH/newjerseybooks.comid организации-покупателя выданный продавцом.
Этот элемент идентифицирует торговую роль человека или организации в данной транзакции IOTP. Заметим, что организация может иметь более чем одну торговую роль и несколько ролей может присутствовать в одном элементе Organisation.
Определение элемента представлено ниже:
<!ELEMENT TradingRole EMPTY >
<!ATTLIST TradingRole ID ID #REQUIRED
TradingRole NMTOKEN #REQUIRED | IotpMsgIdPrefix NMTOKEN #REQUIRED |
CancelNetLocn CDATA #IMPLIED | ErrorNetLocn CDATA #IMPLIED |
Атрибуты:
ID | Идентификатор, который однозначно определяет элемент торговая роль в пределах текущей транзакции IOTP. |
TradingRole |
Торговая роль организации. Возможные значения: o Покупатель. Лицо или организация, которая действует в роли покупателя в данной транзакции. o Продавец. Лицо или организация, которая действует в роли продавца в данной транзакции. o Агент доставки. Лицо или организация, которая доставляет товар или предоставляет услуги в рамках данной транзакции; o DelivTo. Лицо или организация, которая получает товары или услуги в рамках данной транзакции. o CustCare. Лицо или организация, которая обеспечивает обслуживание покупателя в данной транзакции. |
IotpMsgIdPrefix | Содержит префикс, который должен быть использован для всех IOTP сообщений, посланных торговой ролью в данной транзакции. Значения, которые следует использовать определены в 3.4.1. |
CancelNetLocn | Содержит сетевую позицию, куда покупатель должен обратиться, если он аннулирует транзакцию по какой-либо причине. Атрибут может быть использован торговой ролью для отправки отклика, который более соответствует обстоятельствам конкретной транзакции. |
- не должен присутствовать, когда TradingRole усановлено равным роли Покупателя или DelivTo,
- должен присутствовать, когда TradingRole = Продавец, Кассир или Агент доставки.
ErrorNetLocn | Содержит сетевую позицию, которая должна отображаться Покупателем, после того как он получил или сгенерировал блок Error, содержащий компонент Error с атрибутом Severity равным: |
- HardError,
- Предупреждение, но Покупатель решает не продолжать транзакцию.
- TransientError и транзакция прерывается по таймауту.
- не должен присутствовать, когда TradingRole равно Покупатель или DelivTo,
- должен присутствовать, когда TradingRole равно Продавец, Кассир или Агент доставки.
ErrorLogNetLocn | Опционно. Содержит сетевую позицию, куда Покупателю следует посылать IOTP сообщения, которые содержат блоки Error с компонентами Error сатрибутом Severity равным: |
- HardError,
- Предупреждение, но Покупатель решает не продолжать транзакцию,
- TransientError и транзакция прерывается по таймауту.
- не должен присутствовать, когда TradingRole = Покупатель,
- должен присутствовать, когда TradingRole равно Продавец, Кассир или Агент доставки.
Атрибут ErrorLogNetLocn может использоваться для посылки сообщений об ошибках программной компании или другой оргаанизации, ответственной за решение проблем с программами, которые посылают входные сообщения. Смотри раздел 7.21.1.
7.6.3. Элемент контактной информации
Этот элемент содержит информацию, которая может быть использована для контакта с организацией или частным лицом. Все атрибуты являются опционными, однако по крайней мере один из элементов контактной информации должен присутствовать. Его определения представлено ниже.
<!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-броузер. |
7.6.4. Элемент личного имени
Этот элемент содержит имя частного лица. Все поля являются опционными, однако 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 |
Атрибуты:
xml:lang | Определяет язык, используемый атрибутами в этом элементе. Смотри раздел 3.8. |
AddressLine1 | Первая строка почтового адреса, напр.,"The Meadows" |
AddressLine2 | Вторая строка почтового адреса. напр.,"Sandy Lane" |
CityOrTown | Город в адресе, напр.,"Москва" |
StateOrRegion | Штат или область в пределах страны, где находится город, напр., "Зюзино" |
PostalCode | Код, известный как, например почтовый код или zip-код, который обычно используется почтовыми организациями для организации эффективной доставки, напр.,"113303" |
Country | Страна адреса, напр.,"RU" |
LegalLocation | Идентифицирует, является ли адрес зарегистрированным адресом организации. По крайней мере один адрес организации должен соответствовать значению “истина” в противном случае торговой ролью является Покупатель или DeliverTo. |
7.7. Компонент списка видов платежей
Компоненты списка видов платежа содержатся в блоке опций торгового протокола (смотри раздел 8.1) транзакции IOTP. Они содержат список:
- виды платежа (смотри также раздел 11.1),
- суммы, которые должны быть заплачены в валюте, которую выбрал или предложил Продавец,
- платежные протоколы, которые могут использоваться для реализации заданного вида платежа,
- сетевые позиции Кассиров, которые воспринимают платеж в рамках платежного протокола.
<!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 | Индицирует направление платежа для выбранного вида. Возможные значения: |
- Дебит. Отправитель блока платежного запроса (напр., покупатель), к которому имеет отношение список видов платежа, произведет платеж кассиру.
- Кредит. Отправитель блока платежного запроса к которому имеет отношение список видов платежа, получит платеж от кассира.
Brand | Описывает вид платежа (Brand). Последовательность элементов Brand (смотри раздел 7.7.1) в списке видов плптежа не определяет каких-либо преоритетов. Рекомендуется, чтобы программа, которая обрабатывает этот список видов платежа представляла их в порядке предпочтения получателя. |
ProtocolAmount | Это связывает конкретный вид платежа с: |
- видами валюты и суммами в элементах CurrencyAmount, которые могут использоватьсясовместно с видами платежа, и
- Платежными протоколами и Кассирами, которые могут использоваться с этими видами валюты и суммами для конкретного вида платежа.
CurrencyAmount | Содержит код валюты и сумму платежа; |
PayProtocol | Содержит информацию о платежном протоколе и Кассире, которые могут использовать данный вид платежа. |