For a Transaction Status Inquiry on an ongoing transaction a
different transport session from the ongoing transaction is used. For
a Transaction Status Inquiry on a past transaction, how the IOTP
module on the software at the Trading Role is started upon the
receipt of Inquiry Request message is defined in each Mapping to
Transport supplement for IOTP.
TRANSACTION STATUS INQUIRY ERROR HANDLING
Errors in a Transaction Status Inquiry can be categorised into one of
the following three cases:
o Business errors (see section 4.2) in the original (inquired)
messages
o Technical errors (see section 4.1) - both IOTP and payment scheme
specific ones - in the original IOTP (inquired) messages
o Technical errors in the message containing the Inquiry Request
Block itself
The following outlines what the software should do in each case
BUSINESS ERRORS IN THE ORIGINAL MESSAGES
Return an Inquiry Response Block containing the Status Component
which was last sent to the Consumer Role.
TECHNICAL ERRORS IN THE ORIGINAL MESSAGES
Return an Inquiry Response Block containing a Status Component. The
Status Component should contain a ProcessState attribute set to
ProcessError. In this case send back an Error Block indicating where
the error was found in the original message.
TECHNICAL ERRORS IN THE INQUIRY REQUEST BLOCK
Return an Error message. That is, send back an Error Block containing
the Error Code (see section 7.21.2) which describes the nature of the
error in the Inquiry Request message.
INQUIRY TRANSACTION MESSAGES
The following Figure outlines the Baseline IOTP Transaction Status
Inquiry process.
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
1st Role
| 2nd Role
STEP | |
1. The first role decides to inquire on an IOTP Transaction
by, for example, clicking on the inquiry button of an
IOTP Aware Application. This will then generate an
Inquiry Request Block and send it to the appropriate
Trading Role.
1 --> 2 INQUIRY REQUEST. IotpMsg: TransRef Block; Signature Block
(optional); Inquiry Request Block
2. The Trading Role checks the digital signature (if
present). If the recipient wants to respond, then the
Trading Role checks the transaction status of the
transaction that is being inquired upon by using the
IotpTransId in the Transaction ID Component of the
Transaction Reference Block, then generates the
appropriate Inquiry Response Block, sends the message
back to the 1st Role and stops
1 <-- 2 INQUIRY RESPONSE. IotpMsg: TransRef Block; Inquiry
Response Block; Signature Block (Optional)
3. First role checks the Inquiry Response Block and optional
signature, takes whatever action is appropriate or
perhaps stops. This may include displaying status
information to the end user.
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Figure 32 Baseline Transaction Status Inquiry
The remainder of this sub-section on the Baseline Transaction Status
Inquiry IOTP Transaction defines the contents of each Trading Block.
Note that the term "original transaction" is the transaction which a
trading role wants to discover some information about.
TRANSACTION REFERENCE BLOCK
A Trading Role making an inquiry must use a Transaction Id Component
(see section 3.3.1) where both the IotpTransId and TransTimeStamp
attributes are the same as in the Transaction Id Component of the
original transaction that is being inquired upon. The IotpTransId
attribute in this component serves as the key in querying the
transaction logs maintained at the Trading Role's site. The value of
the ID attribute of the Message Id Component should be different from
those of any in the original transaction (see section 3.4.1).
If up-to-date status information is required then the MsgId
Component, and in particular the ID attribute for the MsgId Component
must be different from any other IOTP Message that has been sent by
the Trading Role. This is required because of the way that
Idempotency is handled by IOTP (see section 4.5.2.2 Checking/Handling
Duplicate Messages).
INQUIRY REQUEST BLOCK
The Inquiry Request Block (see section 8.12) contains the following
components:
o one Inquiry Type Component (see section 7.18). This identifies
whether the inquiry is on an offer, payment, or delivery.
o zero or one Payment Scheme Components (see section 7.10). This is
for encapsulating payment scheme specific inquiry messages for
inquiries on a payment.
SIGNATURE BLOCK (INQUIRY REQUEST)
If a signature block is present on the message containing the Inquiry
Request Block then it may be checked to determine if the Inquiry
Request is authorised.
If present, the Inquiry Request Signature Block (see section 8.12)
contains the following components:
o one Signature Component (see section 7.19)
o one or more Certificate Components, if required.
Inquiry Response Blocks should only be generated if the Transaction
is authorised.
Note: Digital signatures on an Inquiry Request is only likely to
occur if the recipient of the request expects the Inquiry Request to
be signed. In this version of IOTP this will require some kind of
pre-existing agreement. This means that:
o Consumers are unlikely to generate requests with signatures,
although it is not an error if they do
o the other trading roles may agree that digital signatures are
required. For example a Payment Handler may require that an
Inquiry Request is digitally signed by the Merchant so that they
can check that the request is valid.
On the other hand if the original transaction to which the Inquiry
relates was carried out over a secure channel (e.g., [SSL]) then it
is probably reasonable to presume that if the sender of the Inquiry
knows the Transaction Id component of the original message (including
for example the timestamp) then the inquiry is likely to be genuine.
INQUIRY RESPONSE BLOCK
The Inquiry Response Block (see section 8.13) contains the following
components:
o one Status Component (see section 7.16). This component holds the
status information on the inquired transaction,
o zero or one Payment Scheme Components. These contain encapsulated
payment scheme specific inquiry messages for inquiries on payment.
SIGNATURE BLOCK (INQUIRY RESPONSE)
If a signature block is present on the message containing the Inquiry
Response Block then it may be checked by the receiver of the block to
determine if the Inquiry Response is valid.
If present, the Inquiry Response Signature Block (see section 8.13)
contains the following components:
o one Signature Component (see section 7.19)
o one or more Certificate Components, if required.
Note: Digital signatures on an Inquiry Response is only likely to
occur if the recipient of the response expects the Inquiry Request to
be signed. In this version of IOTP this will require some kind of
pre-existing agreement. This means that:
o Consumers are unlikely to generate responses with signatures,
although it is not an error if they do
o the other trading roles may agree that digital signatures are
required. For example a Merchant may require that an Inquiry
Response is digitally signed by the Payment Handler so that they
can check that the request response is valid.
9.2.2 Baseline Ping IOTP Transaction
The purpose of the Baseline IOTP Ping Transaction is to test basic
connectivity between the Trading Roles that may take part in an IOTP
Transaction.
It enables IOTP aware application software to:
o determine if the IOTP aware application at another Trading Role is
operating, and
o verify whether or not the two trading roles signatures can be
processed.
For example it can be used by a Merchant to determine if a Payment
Handler or Delivery Handler is up and running prior to starting a
Purchase transaction that uses those trading roles.
The Trading Blocks used by the Baseline Ping IOTP Transaction are:
o a Ping Request Block (see section 8.14)
o a Ping Response Block (see section 8.15), and
o a Signature Block (see section 8.16).
PING MESSAGES
The following figure outlines the message flows in the Baseline IOTP
Ping Transaction.
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
1st Role
| 2nd Role
STEP | |
1. The IOTP Aware Application in the first Trading Role
decides to check whether the counterparty IOTP
application is up and running. It generates a Ping
Request Block and optional Signature Block and sends them
to the second trading role.
1 --> 2 PING REQUEST. IotpMsg: Trans Ref Block; Signature Block
(Optional); Ping Request Block
2. The second Trading Role which receives the Ping Request
Block generates a Ping Response Block and sends it back
to the sender of the original Ping Request with a
signature block if required.
1 <-- 2 PING Response. IotpMsg: Trans Ref Block; Signature Block
(Optional); Ping Response Block
3. The first Trading Role checks the Ping Response Block and
takes appropriate action, if necessary
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Figure 33 Baseline Ping Messages
The verification that signatures can be handled is indicated by the
sender of the Ping Request Block including:
o Organisation Components that identify itself and the intended
recipient of the Ping Request Block, and
o a Signature Block that signs data in the Ping Request.
In this way the receiver of the Ping Request:
o knows who is sending the Ping Request and can therefore verify the
Signature on the Request, and
o knows who to generate a signature for on the Ping Response.
Note that a Ping Request:
o does not affect any on-going transaction
o does NOT initiate an IOTP transaction, unlike other IOTP
transaction messages such as TPO or Transaction Status Inquiry.
All IOTP aware applications must return a Ping Response message to
the sender of a Ping Request message when it is received.
A Baseline IOTP Ping request can also contain an optional Signature
Block. IOTP aware applications can, for example, use the Signature
Block to check the recipient of a Ping Request can successfully
process and check signatures it has received.
For each Baseline Ping IOTP Transaction, each IOTP role shall
establish a different transport session from other IOTP transactions.
Any IOTP Trading Role can send a Ping request to any other IOTP
Trading Role at any time it wants. A Ping message has its own
IotpTransId, which is different from other IOTP transactions.
The remainder of this sub-section on the Baseline Ping IOTP
Transaction defines the contents of each Trading Block.
TRANSACTION REFERENCE BLOCK
The IotpTransId of a Ping transaction should be different from any
other IOTP transaction.
PING REQUEST BLOCK
If the Ping Transaction is anonymous then no Organisation Components
are included in the Ping Request Block (see section 8.7).
If the Ping Transaction is not anonymous then the Ping Request Block
contains Organisation Components for:
o the sender of the Ping Request Block, and
o the verifier of the Signature Component
If Organisation Components are present, then it indicates that the
sender of the Ping Request message has generated a Signature Block.
The signature block must be verified by the Trading Role that
receives the Ping Request Block.
SIGNATURE BLOCK (PING REQUEST)
The Ping Request Signature Block (see section 8.16) contains the
following components:
o one Signature Component (see section 7.19)
o one or more Certificate Components, if required.
PING RESPONSE BLOCK
The Ping Response Block (see section 8.15) contains the following
component:
o the Organisation Component of the sender of the Ping Response
message
If the Ping Transaction is not anonymous then the Ping Response
additionally contains:
o copies of the Organisation Components contained in the Ping
Request Block.
SIGNATURE BLOCK (PING RESPONSE)
The Ping Response Signature Block (see section 8.16) contains the
following components:
o one Signature Component (see section 7.19)
o one or more Certificate Components, if required.
10. Retrieving Logos
This section describes how to retrieve logos for display by IOTP
aware software using the Logo Net Locations attribute contained in
the Brand Element (see section 7.7.1) and the Organisation Component
(see section 7.6).
The full address of a logo is defined as follows: Logo_address ::=
Logo_net_location "/" Logo_size Logo_color_depth ".gif"
Where:
o Logo_net_location is obtained from the LogoNetLocn attribute in
the Brand Element (see section 7.7.1) or the Organisation
Component. Note that:
- the content of this attribute is dependent on the Transport
Mechanism (such as HTTP) that is used. See the Transport
Mechanism supplement,
- implementers should check that if the rightmost character of
Logo Net Location is set to right-slash "/" then another, right
slash should not be included when generating the Logo Address,
o Logo_size identifies the size of the logo,
o Logo_color_depth identifies the colour depth of the logo
o "gif" indicates that the logos are in "gif" format
Logo_size and Logo_color_depth are specified by the implementer of
the IOTP software that is retrieving the logo depending on the size
and colour that they want to use.
10.1 Logo Size
There are five standard sizes for logos. The sizes in pixels and the
corresponding values for Logo Size are given in the table below.
Size in Logo Size
Pixels Value
32 x 32 or exsmall
32 x 20
53 x 33 small
103 x 65 medium
180 x 114 large
263 x 166 exlarge
10.2 Logo Color Depth
There are three standard colour depths. The colour depth (including
bits per pixel) and the corresponding value for Logo_Color_Depth are
given in the table below.
Color Depth Logo Color
(bits per pixel) Depth Value
4 (16 colors) 4
8 (256 colors) nothing
24 (16 million colors) 24
Note that if Logo Color Depth is omitted then a logo with the default
colour depth of 256 colours will be retrieved.
10.3 Logo Net Location Examples
If Logo Net Location was set to "ftp://logos.xzpay.com", then:
o "ftp://logos.xzpay.com/medium.gif" would retrieve a medium size
256 colour logo
o "http://logos.xzpay.com/small4.gif" would retrieve a small size 16
colour logo
Note: Organisations which make logos available for use with IOTP
should always make available "small" and "medium" size logos and use
the "gif" format.
11. Brands
This section contains:
o a definition of Brands and an outline of Brand Selection using
Brand Lists, and
o some XML examples of Brand Lists
11.1 Brand Definitions and Brand Selection
One of the key features of IOTP is the ability for a merchant to
offer a list of Brands from which a consumer may make a selection.
This section provides an overview of what is involved and provides
guidance on how selection of a brand and associated payment
instrument can be carried out by a Consumer. It covers:
o definitions of Payment Instruments and Brands - what are Payment
Instruments and Brands in an IOTP context. Further categorises
Brands as optionally a "Dual Brand" or a "Promotional Brand",
o identification and selection of Promotional Brands - Promotional
Brands offer a Consumer some additional benefit, for example
loyalty points or a discount. This means that both Consumers and
Merchant must be able to correctly identify that a valid
Promotional Brand is being used.
Also see the following sections:
o Brand List Component (section 7.7) which contains definitions of
the XML elements which contain the list of Brands offered by a
Merchant to a Consumer, and
o Brand Selection Component (section 7.8) for details of how a
Consumer records the Brand, currency, amount and payment protocol
that was selected.
11.1.1 Definition of Payment Instrument
A Payment Instrument is the means by which a Consumer pays for goods
or services offered by a Merchant. It can be, for example:
o a credit card such as MasterCard or Visa;
o a debit card such as MasterCard's Maestro;
o a smart card based electronic cash payment instrument such as a
Mondex Card, a GeldKarte card or a Visa Cash card
o a software based electronic payment account such as a CyberCash or
DigiCash account.
Most Payment Instruments have a number, typically an account number,
by which the Payment Instrument can be identified.
11.1.2 Definition of Brand
A Brand is the mark which identifies a particular type of Payment
Instrument. A list of Brands are the payment options which are
presented by the Merchant to the Consumer and from which the Consumer
makes a selection. Each Brand may have a different Payment Handler.
Examples of Brands include:
o payment association and proprietary Brands, for example
MasterCard, Visa, American Express, Diners Club, Mondex,
GeldKarte, CyberCash, etc.
o promotional brands (see below). These include:
- store brands, where the Payment Instrument is issued to a
Consumer by a particular Merchant, for example Walmart, Sears,
or Marks and Spencer (UK)
- cobrands, for example American Advantage Visa, where an
Organisation uses their own brand in conjunction with,
typically, a payment association Brand.
11.1.3 Definition of Dual Brand
A Dual Brand means that a single payment instrument may be used as if
it were two separate Brands. For example there could be a single
Japanese "UC" MasterCard which can be used as either a UC card or a
regular MasterCard. The UC card Brand and the MasterCard Brand could
each have their own separate Payment Handlers. This means that:
o the merchant treats, for example "UC" and "MasterCard" as two
separate Brands when offering a list of Brands to the Consumer,
o the consumer chooses a Brand, for example either "UC" or
"MasterCard,
o the consumer IOTP aware application determines which Payment
Instrument(s) match the chosen Brand, and selects, perhaps with
user assistance, the correct Payment Instrument to use.
Note: Dual Brands need no special treatment by the Merchant and
therefore no explicit reference is made to Dual Brands in the DTD.
This is because, as far as the Merchant is concerned, each Brand in a
Dual Brand is treated as a separate Brand. It is at the Consumer,
that the matching of a Brand to a Dual Brand Payment Instrument needs
to be done.
11.1.4 Definition of Promotional Brand
A Promotional Brand means that, if the Consumer pays with that Brand,
then the Consumer will receive some additional benefit which can be
received in two ways:
o at the time of purchase. For example if a Consumer pays with a
"Walmart MasterCard" at a Walmart web site, then a 5% discount
might apply, which means the consumer actually pays less,
o from their Payment Instrument (card) issuer when the payment
appears on their statement. For example loyalty points in a
frequent flyer scheme could be awarded based on the total payments
made with the Payment Instrument since the last statement was
issued.
Note that:
o the first example (obtaining the benefit at the time of purchase),
requires that:
- the Consumer is informed of the benefits which arise if that
Brand is selected
- if the Brand is selected, the Merchant changes the relevant
IOTP Components in the Offer Response to reflect the correct
amount to be paid
o the second (obtaining a benefit through the Payment Instrument
issuer) does not require that the Offer Response is changed
o each Promotional Brand should be identified as a separate Brand in
the list of Brands offered by the Merchant. For example:
"Walmart", "Sears", "Marks and Spencer" and "American Advantage
Visa", would each be a separate Brand.
11.1.5 Identifying Promotional Brands
There are two problems which need to handled in identifying
Promotional Brands:
o how does the Merchant or their Payment Handler positively identify
the promotional brand being used at the time of purchase
o how does the Consumer reliably identify the correct promotional
brand from the Brand List presented by the Merchant
The following is a description of how this could be achieved.
Note: Please note that the approach described here is a model
approach that solves the problem. Other equivalent methods may be
used.
11.1.5.1 Merchant/Payment Handler Identification of Promotional Brands
Correct identification that the Consumer is paying using a
Promotional Brand is important since a Consumer might fraudulently
claim to have a Promotional Brand that offers a reduced payment
amount when in reality they do not.
Two approaches seem possible:
o use some feature of the Payment Instrument or the payment method
to positively identify the Brand being used. For example, the SET
certificate for the Brand could be used, if one is available, or
o use the Payment Instrument (card) number to look up information
about the Payment Instrument on a Payment Instrument issuer
database to determine if the Payment Instrument is a promotional
brand.
Note that:
o the first assumes that SET is available.
o the second is only possible if the Merchant, or alternatively the
Payment Handler, has access to card issuer information.
IOTP does not provide the Merchant with Payment Instrument
information (e.g., a card or account number). This is only sent as
part of the encapsulated payment protocol to a Payment Handler. This
means that:
o the Merchant would have to assume that the Payment Instrument
selected was a valid Promotional Brand, or
o the Payment Handler would have to check that the Payment
Instrument was for the valid Promotional Brand and fail the
payment if it was not.
A Payment Handler checking that a brand is a valid Promotional Brand
is most likely if the Payment Handler is also the Card Issuer.
11.1.5.2 Consumer Selection of Promotional Brands
Two ways by which a Consumer can correctly select a Promotional Brand
are:
o the Consumer visually matching a logo for the Promotional Brand
which has been provided to the Consumer by the Merchant,
o the Consumer's IOTP aware application matching a code for the
Promotional Brand which the application has registered against a
similar code contained in the list of Brands offered by the
Merchant.
In the latter case, the code contained in the Consumer wallet must
match exactly the code in the list offered by the Merchant otherwise
no match will be found. Ways in which the Consumer's IOTP Aware
Application could obtain such a code include:
o the Consumer types the code in directly. This is error prone and
not user friendly, also the consumer needs to be provided with the
code. This approach is not recommended,
o using one of the Brand Identifiers defined by IOTP and pre-loaded
into the Consumers IOTP Aware application or wallet by the
developer of the Wallet,
o using some information contained in the software or other data
associated with the Payment Instrument. This could be:
- a SET certificate for Brands which use this payment method
- a code provided by the payment software which handles the
particular payment method, this could apply to, for example,
GeldKarte, Mondex, CyberCash and DigiCash,
o the consumer making an initial "manual" link between a Promotional
Brand in the list of Brands offered by the Merchant and an
individual Payment Instrument, the first time the promotional
brand is used. The IOTP Aware application would then "remember"
the code for the Promotional Brand for use in future purchases.
11.1.5.3 Consumer Software Brand Id recommendation
New Brand Ids are allocated under IANA procedures (see section 12
IANA Considerations). Which also contains an initial list of Brand
Identifiers.
It is recommended that implementers of consumer IOTP aware
applications (e.g., software wallets) pre-load their software with
the then current set of Brand Ids and provide a method by which they
can be updated. For example, by going to the software developer's web
site.
11.2 Brand List Examples
This example contains three examples of the XML for a Brand List
Component. It covers:
o a simple credit card based example
o a credit card based brand list including promotional credit card
brands, and
o a complex electronic cash based brand list
Note that:
o brand lists can be as complex or as simple as required
o all example techniques described in this appendix can be included
in one brand list.
11.2.1 Simple Credit Card Based Example
This is a simple example involving:
o only major credit card payment brands
o a single price in a single currency
o a single Payment Handler, and
o a single payment protocol
<BrandList ID='M1.2'
XML:Lang='us-en'
ShortDesc='Purchase book including s&h'
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 Credit Card Brand List Including Promotional Brands
An example of a Credit Card based Brand List follows. It includes:
o two ordinary card association brands and two promotional credit
card brands. The promotional brands consist of one loyalty based
(British Airways MasterCard) which offers additional loyalty
points and one store based (Walmart) which offers a discount on
purchases over a certain amount
o two payment protocols:
- SET (Secure Electronic Transactions) see [SET], and
- SCCD (Secure Channel Credit Debit) see [SCCD].
<BrandList ID='M1.2'
XML:Lang='us-en'
ShortDesc='Purchase ladies coat'
PayDirection='Debit' >
<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 Brand Selection Example
In order to pay by 'British Airways' MasterCard using the example
above using SET and therefore getting double air miles, the Brand
Selection would be:
<BrandSelection ID='C1.2'
BrandListRef='M1.3'
BrandRef='M1.5'
ProtocolAmountRef='M1.7'
CurrencyAmountRef='M1.9' >
</BrandSelection>
11.2.4 Complex Electronic Cash Based Brand List
The following is an fairly complex example which includes:
o payments using either Mondex, GeldKarte, CyberCash or DigiCash
o in currencies including US dollars, British Pounds, Italian Lira,
German Marks and Canadian Dollars
o a discount on the price if the payment is made in Mondex using
British pounds or US dollars, and
o more than one Payment Handler is used for payments involving
Mondex or CyberCash
o support for more than one version of a CyberCash CyberCoin payment
protocol.
<BrandList ID='M1.2'
XML:Lang='us-en'
ShortDesc='Company report on XYZ Co'
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 Considerations
This section describes the codes that are controlled by IANA, and
also how new codes can be created for testing purposes that are not
controlled by IANA.
12.1 Codes Controlled by IANA
To help ensure interoperability, there is a need for codes used by
IOTP to be maintained in a controlled environment so that their
meaning and usage are well defined and duplicate codes avoided.
[IANA] is the mechanism to be used for this purpose as described in
RFC2434.
The element types and attributes names to which this procedure
applies is shown in the table below together with the initial values
that are valid for these attributes.
Note that:
o the IETF Trade mailing list's email address is ietf-
trade@elistx.com
o "Designated Experts" (see [IANA]) are appointed by the IESG.
Element Type/ Attribute Values
Attribute Name
Algorithm/ "sha1" - indicates that a [SHA1] authentication
Name will apply
(When Algorithm
is a child of an "signature" - indicates that authentication
AuthReq consists of the generation of a digital signature.
Component)
"Pay:ppp" where "ppp" may be set to any valid
value for "iotpbrand" (see below)
With the exception of Algorithms that begin with
"pay:", new values are allocated following review
on the IETF Trade mailing list and by the
Designated Expert.
Note: The Algorithm element is likely to be eventually defined
within the [DSIG] name space. It is likely that the maintenance
procedure defined here may need to vary over time, as the DSIG
proposals become more widely adopted.
Element Type/ Attribute Values
Attribute Name
Brand/BrandId The following list of initial BrandIds have been
taken from those Organisations that have applied
for SET certificates as at 1st June 1999:
"Amex" - American Express
"Dankort" - Dankort
"JCB" - JCB
"Maestro" - Maestro
"MasterCard" - MasterCard
"NICOS" - NICOS
"VISA" - Visa
In addition the following Brand Id values are
defined:
"Mondex"
"GeldKarte"
New values of BrandId must be announced to the
IETF Trade mailing list and, if there are no
objections within three weeks, are allocated on a
"first come first served" basis.
CurrencyAmount/ Currency codes are dependent on CurrCodeType (see
CurrCode below).
If CurrCodeType is "ISO4217-A" then the currency
code is an alphabetic currency code as defined by
[ISO4217].
If CurrCodeType is "IOTP" then new values must be
announced to the IETF Trade mailing list and, if
there are no objections within three weeks, are
allocated on a "first come first served" basis.
Note: The Currency Code Type of IOTP, is designed to allow the
support of "new" psuedo currencies such as loyalty or frequent flyer
points. At the time of writing this specification, no currency codes
of this type have been defined.
Element Type/ Attribute Values
Attribute Name
CurrencyAmount/ "ISO4217-A"
CurrCodeType
"IOTP"
New values of CurrCodeType attribute are allocated
following review on the IETF Trade mailing list
and by the Designated Expert.
DeliveryData/ "Post"
DelivMethod
"Web"
"Email"
New values of Delivery Method attribute are
allocated following review on the IETF Trade
mailing list and by the Designated Expert. This
may require the publication of additional
documentation to describe how the delivery method
is used.
PackagedContent/ "PCDATA"
Content
"MIME"
"MIME:mimetype" (where mimetype must be the same
as content-type as defined by [MIME] )
"XML"
If the Content attribute is of the form
"MIME"mimetype", then control of new values for
"mimetype" is as defined in [MIME].
Otherwise, new values of the Content attribute are
allocated following review on the IETF Trade
mailing list and by the Designated Expert. This
may require the publication of additional
documentation to describe how the new attribute is
used within a Packaged Content element.
RelatedTo/ "IotpTransaction"
RelationshipType
"Reference"
New values of the RelationshipType attribute are
allocated following review on the IETF Trade
Working Group mailing list and by the Designated
Expert. This may require the publication of
additional documentation to describe how the
Element Type/ Attribute Values
Attribute Name
delivery method is used.
Status/ Offer
StatusType
Payment
Delivery
Authentication
Unidentified
New values of the Status Type attribute are
allocated following:
o publication to the IETF Trade Working Group,
of an RFCdescribing the Trading Exchange,
Trading Roles and associated components that
relate to the Status, and
o review of the document on the IETF Trade
mailing list and by the Designated Expert.
Note: The document describing new values for the Status Type
attribute may be combined with documents that describe new Trading
Roles and types of signatures (see below).
TradingRole/ "Consumer"
TradingRole
"Merchant"
"PaymentHandler"
"DeliveryHandler"
"DelivTo"
"CustCare"
New values of the Trading Role attribute are
allocated following:
o publication to the IETF Trade Working Group,
of an RFCdescribing the Trading Exchange,
Trading Roles and associated components that
relate to the Trading Role, and
o review of the document on the IETF Trade
mailing list and by the Designated Expert.
Note: The document describing new values for the Trading Role
attribute may be
Element Type/ Attribute Values
Attribute Name
combined with documents that describe
new Status Types (see above) and
types of signatures (see below).
TransId/ "BaselineAuthentication"
IotpTransType
"BaselineDeposit"
"BaselinePurchase"
"BaselineRefund"
"BaselineWithdrawal"
"BaselineValueExchange"
"BaselineInquiry"
"BaselinePing"
New values of the IotpTransType attribute are
allocated following:
o publication to the IETF Trade mailing list, of
an RFCdescribing the new IOTP Transaction, and
o review of the document on the IETF Trade
Working Group mailing list and by the
Designated Expert.
Attribute/ Content
(see Signature
"OfferResponse"
Component) "PaymentResponse"
"DeliveryResponse"
"AuthenticationRequest"
"AuthenticationResponse"
"PingRequest"
"PingResponse"
New values of the code that define the type of a
signature are allocated following:
o publication to the IETF Trade Working Group,
of an RFCdescribing the Trading Exchange where
the signature is being used, and
o review of the document on the IETF Trade
mailing list and by the Designated Expert.
Element Type/ Attribute Values
Attribute Name
Note: The document describing new values for the types of signatures
may be combined with documents that describe new Status Types and
Trading Roles (see above).
12.2 Codes not controlled by IANA
In addition to the formal development and registration of codes as
described above, there is still a need for developers to experiment
using new IOTP codes. For this reason, "user defined codes" may be
used to identify additional values for the codes contained within
this specification without the need for them to be registered with
IANA.
The definition of a user defined code is as follows:
user_defined_code ::= ( "x-" | "X-" ) NameChar (NameChar)*
NameChar NameChar has the same definition as the [XML]
definition of NameChar
Use of domain names (see [DNS]) to make user defined codes unique is
recommended although this method cannot be relied upon.
13. Internet Open Trading Protocol Data Type Definition
This section contains the XML DTD for the Internet Open Trading
Protocols.
<!--
******************************************************
* *
* INTERNET OPEN TRADING PROTOCOL VERSION 1.0 DTD *
* Filename: ietf.org/rfc/rfc2801.dtd *
* *
* Changes from version 07 (iotp-v1.0-protocol-07.dtd)*
* - NO CHANGES *
* *
* *
* *
* *
* Copyright Internet Engineering Task Force 1998-2000*
* *
******************************************************
******************************************************
* IOTP MESSAGE DEFINITION *
******************************************************
-->
<!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' >
<!--
******************************************************
* TRANSACTION REFERENCE BLOCK DEFINITION *
******************************************************
-->
<!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 #REQUIRED
TransTimeStamp CDATA #REQUIRED >
<!ELEMENT MsgId EMPTY >
<!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 >
<!ELEMENT RelatedTo (PackagedContent) >
<!ATTLIST RelatedTo
ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
RelationshipType NMTOKEN #REQUIRED
Relation CDATA #REQUIRED
RelnKeyWords NMTOKENS #IMPLIED >
<!--
******************************************************
* Packaged Content Common Element *
******************************************************
-->
<!ELEMENT PackagedContent (#PCDATA) >
<!ATTLIST PackagedContent
Name CDATA #IMPLIED
Content NMTOKEN "PCDATA"
Transform (NONE|BASE64) "NONE" >
<!--
******************************************************
* TRADING COMPONENTS *
******************************************************
-->
<!-- PROTOCOL OPTIONS COMPONENT -->
<!ELEMENT ProtocolOptions EMPTY >
<!ATTLIST ProtocolOptions
ID ID #REQUIRED
xml:lang NMTOKEN #REQUIRED
ShortDesc CDATA #REQUIRED
SenderNetLocn CDATA #IMPLIED
SecureSenderNetLocn CDATA #IMPLIED
SuccessNetLocn CDATA #REQUIRED >
<!-- AUTHENTICATION DATA COMPONENT -->
<!ELEMENT AuthReq (Algorithm, PackagedContent*)>
<!ATTLIST AuthReq
ID ID #REQUIRED
AuthenticationId CDATA #REQUIRED
ContentSoftwareId CDATA #IMPLIED >
<!-- AUTHENTICATION RESPONSE COMPONENT -->
<!ELEMENT AuthResp (PackagedContent*) >
<!ATTLIST AuthResp
ID ID #REQUIRED
AuthenticationId CDATA #REQUIRED
SelectedAlgorithmRef 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
ContentSoftwareId CDATA #IMPLIED >
<!-- 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
LogoNetLocn CDATA #IMPLIED >
<!ELEMENT TradingRole EMPTY >
<!ATTLIST TradingRole
ID ID#REQUIRED
TradingRole NMTOKEN #REQUIRED
IotpMsgIdPrefix NMTOKEN #REQUIRED
CancelNetLocn CDATA #IMPLIED
ErrorNetLocn CDATA #IMPLIED
ErrorLogNetLocn CDATA #IMPLIED >
<!ELEMENT ContactInfo EMPTY >
<!ATTLIST ContactInfo
xml:lang NMTOKEN #IMPLIED
Tel CDATA #IMPLIED
Fax CDATA #IMPLIED
Email CDATA #IMPLIED
NetLocn CDATA #IMPLIED >
<!ELEMENT PersonName EMPTY >
<!ATTLIST PersonName
xml:lang NMTOKEN #IMPLIED
Title CDATA #IMPLIED
GivenName CDATA #IMPLIED
Initials CDATA #IMPLIED
FamilyName CDATA #IMPLIED >
<!ELEMENT PostalAddress EMPTY >
<!ATTLIST PostalAddress
xml:lang NMTOKEN #IMPLIED
AddressLine1 CDATA #IMPLIED
AddressLine2 CDATA #IMPLIED
CityOrTown CDATA #IMPLIED
StateOrRegion CDATA #IMPLIED