use the transaction instrument built into a Cellphone subscriber
for identification. "phoneid" indicates use for the transaction
of a billable phone number. "None" indicates that automatic
field fill is operating but that there is no further
information.
(18) A unique order ID string generated by the consumer software.
(19) The user ID and password fields can be used if the user has a
pre-established account with the merchant to which access is
authenticated by such values. For that use, one would expect an
application to require exactly one user ID, and one password
field be present.
(20) URI [RFC3986] indicating version of this set of fields. Equal
to "urn:ietf:params:ecml:v2.0" for this version. See Section 5.
(See also Note 101.)
(21) A string to identify the source and version of form fill
software that is acting on behalf of a user. Should contain
company and/or product name and version; for example, "Wallets
Inc., SuperFill, v42.7". (See also Note 101.)
(22) A flag to indicate that this web-page/aggregate is the final one
for this transaction. (See also Note 101.)
(23) The merchant domain name [RFC1034], such as
www.merchant.example. (See also Note 101.)
(24) The domain name [RFC1034] of the gateway transaction processor
that is actually accepting the payment on behalf of the
merchant, such as www.processor.example. (See also Note 101.)
(25) A Transaction identification string whose format is specific to
the processor.
(26) A URL [RFC3986] that can be invoked to inquire about the
transaction. (See also Note 100.)
(27) The amount of the transaction in ISO currency format [ISO4217].
This is two integer numbers with a period in between but with no
other currency mark (such as a "$" dollar sign).
(28) This is the three-letter ISO currency code [ISO4217]. For
example, US dollars is USD.
(29) ISO Transaction date.
(30) The type of the transaction, if known. Currently a value from
the following list:
debit
credit
(31) A digital signature, base64 encoded [RFC2045]. (See also Note
101.)
(32) The ReceiptTo fields are used when the BillTo entity, location,
or address and the ReceiptTo entity, location, or address are
different. For example, when using some forms of Corporate
Purchasing Cards or Agent Purchasing Cards, the individual card
holder would be in the ReceiptTo fields, and the corporate or
other owner would be in the BillTo fields.
(33) An IETF Language Tag, as defined in [RFC3066].
(34) User preferences, as specified by the merchant. (See also Note
102.)
(35) The Uniform Resource Locator [RFC3986] for accessing the
customer’s "wallet" software. (See also Note 100)
(36) A single capital letter: M=male, F=Female, U=Unknown [ISO5218].
(37) An immutable device identification or serial number. (See also
Note 102.)
(38) User understandable device brand name. (See also Note 102)
(39) [ISO8583] field "card acceptor terminal identification".
(40) [ISO8583] field "processing code".
(41) [ISO8583] field "acquiring institution identification code".
(42) [ISO8583] field "forwarding institution identification code".
(43) [ISO8583] field "system trace audit field".
(44) [ISO8583] field "date effective".
(45) [ISO8583] field "point of sale date code".
(46) [ISO8583] field "approval code".
(47) [ISO8583] field "action code".
(48) [ISO8583] field "date settlement".
(49) [ISO8583] field "date capture".
(50) [ISO8583] field "trace 1 data".
(51) [ISO8583] field "trace 2 data".
(52) User-recognizable loyalty card brand name. Values for this
field are not controlled, and there is no IANA or other registry
for them. (See also Note 102.)
(53) The card issuer number required by the UK-based Switch and Solo
acquirers.
(54) The field names "first_name" and "last_name" have been retained
for compatibility with earlier versions of ECML. However,
"last_name" should be understood to refer to family or inherited
names(s), whereas "first_name" is the first given or non-
inherited name and "middle_name" is the subsequent given or
non-inherited name or names, if any.
(55) The Uniform Resource Locator [RFC3986] for accessing the user’s
X.509v3 certificate encoded as binary DER. (See also Note 100.)
Meta Notes (referenced by other notes)
(100) ECML, a basic field-naming and structuring convention, does not
impose any particular requirements on these URLs. It is to be
expected that most applications that make use of ECML will
impose such limitations and perform checking to be sure that
provided URLs conform to such limitations before attempting to
invoke them.
(101) This is a field that, when presented in a web page, is usually
hidden.
(102) An ASCII [ASCII] character string with no leading or trailing
white space.
2.2. Exemplar XML Syntax
The following sections provide an XML DTD and an XML Schema that
express the ECML fields with ECML v2 naming and ECML v2 hierarchical
structure. In case of conflict between this DTD and Schema, the
Schema should prevail. Note that the ECML v2 naming and structure
may be used in non-XML syntaxes.
The ECML v2 XML syntax is deliberately liberal because it is assumed
that specific applications making use of ECML will impose their own
additional constraints.
For internationalization of ECML, use the general XML character-
encoding provisions [XML] (which mandate support of UTF-8 and UTF-16
and permit support of other character sets) and the xml:lang
attribute, which may be used to specify language information.
2.2.1. ECML v2 XML DTD
The following is an XML DTD for ECML v2.
<!-- Electronic Commerce Modeling Language v2 -->
<!ELEMENT Ecom ( #PCDATA | ShipTo | BillTo | ReceiptTo | Payment |
Loyalty | User | Merchant | Transaction |
TransactionComplete )* >
<!ATTLIST Ecom
id ID #IMPLIED
ConsumerOrderID CDATA #IMPLIED
Merchant CDATA #IMPLIED
Mode (Query|Assert) #IMPLIED
Processor CDATA #IMPLIED
SchemaVersion (urn:ietf:params:ecml:v2.0)
#IMPLIED
WalletID CDATA #IMPLIED
WalletLocation CDATA #IMPLIED >
<!ELEMENT ShipTo ( #PCDATA | Postal | Telecom | Online )* >
<!ATTLIST ShipTo
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT BillTo ( #PCDATA | Postal | Telecom | Online )* >
<!ATTLIST BillTo
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT ReceiptTo ( #PCDATA | Postal | Telecom | Online )* >
<!ATTLIST ReceiptTo
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Postal ( #PCDATA | Name | Company |
Street | City | StateProv )* >
<!ATTLIST Postal
id ID #IMPLIED
PostalCode NMTOKEN #IMPLIED
Mode (Query|Assert) #IMPLIED
CountryCode NMTOKEN #IMPLIED >
<!ELEMENT Name EMPTY >
<!ATTLIST Name
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Prefix NMTOKEN #IMPLIED
First NMTOKEN #IMPLIED
Middle NMTOKEN #IMPLIED
Last NMTOKEN #IMPLIED
Suffix NMTOKEN #IMPLIED >
<!ELEMENT Street EMPTY >
<!ATTLIST Street
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Line1 CDATA #REQUIRED
Line2 CDATA #IMPLIED
Line3 CDATA #IMPLIED >
<!ELEMENT Company (#PCDATA) >
<!ATTLIST Company
Mode (Query|Assert) #IMPLIED >
<!ELEMENT City (#PCDATA) >
<!ATTLIST City
Mode (Query|Assert) #IMPLIED >
<!ELEMENT StateProv (#PCDATA) >
<!ATTLIST StateProv
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Telecom ( #PCDATA | Phone )* >
<!ATTLIST Telecom
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Phone EMPTY >
<!ATTLIST Phone
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Number CDATA #REQUIRED >
<!ELEMENT Online ( #PCDATA | Email )* >
<!ATTLIST Online
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Email EMPTY >
<!ATTLIST Email
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Address CDATA #REQUIRED >
<!ELEMENT Payment (Card) >
<!ATTLIST Payment
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Card (ExpDate, ValidDate?) >
<!ATTLIST Card
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Name CDATA #IMPLIED
Type NMTOKEN #IMPLIED
Number NMTOKEN #REQUIRED
Protocols NMTOKENS #IMPLIED
Verification NMTOKEN #IMPLIED
Issuer NMTOKEN #IMPLIED >
<!ELEMENT Loyalty (ExpDate?, ValidDate?) >
<!ATTLIST Loyalty
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Name CDATA #IMPLIED
Type NMTOKEN #IMPLIED
Number NMTOKEN #REQUIRED
Verification NMTOKEN #IMPLIED >
<!ELEMENT ExpDate EMPTY >
<!ATTLIST ExpDate
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Day NMTOKEN #IMPLIED
Month NMTOKEN #REQUIRED
Year NMTOKEN #REQUIRED >
<!ELEMENT ValidDate EMPTY >
<!ATTLIST ValidDate
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Day NMTOKEN #IMPLIED
Month NMTOKEN #IMPLIED
Year NMTOKEN #REQUIRED >
<!ELEMENT User ( #PCDATA | UserID | Password )* >
<!ATTLIST User
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
CertificateURL CDATA #IMPLIED
DataCountry NMTOKEN #IMPLIED
DataLanguage CDATA #IMPLIED >
<!ELEMENT UserID (#PCDATA) >
<!ATTLIST UserID
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Password (#PCDATA) >
<!ATTLIST Password
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Merchant (Terminal) >
<!ATTLIST Merchant
Mode (Query|Assert) #IMPLIED
id ID #IMPLIED >
<!ELEMENT Terminal EMPTY >
<!ATTLIST Terminal
Id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Data CDATA #IMPLIED >
<!ELEMENT Transaction ( #PCDATA | Id | Code | Date | Data |
Inquiry | Signature )* >
<!ATTLIST Transaction
Amount CDATA #IMPLIED
Currency NMTOKEN #IMPLIED
Mode (Query|Assert) #IMPLIED
Type NMTOKEN #IMPLIED >
<!ELEMENT Id EMPTY >
<!ATTLIST Id
Id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
CID NMTOKEN #IMPLIED
Reference NMTOKEN #IMPLIED
Acquire NMTOKEN #IMPLIED
Forward NMTOKEN #IMPLIED >
<!ELEMENT Code EMPTY >
<!ATTLIST Code
Mode (Query|Assert) #IMPLIED
Processing CDATA #IMPLIED
Approval NMTOKEN #IMPLIED
Retrieval NMTOKEN #IMPLIED
Action NMTOKEN #IMPLIED
Reason NMTOKEN #IMPLIED
POS NMTOKEN #IMPLIED >
<!ELEMENT Date (Effective?, Settle?, Capture?) >
<!ATTLIST Date
Mode (Query|Assert) #IMPLIED
id ID #IMPLIED >
<!ELEMENT Effective EMPTY >
<!ATTLIST Effective
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Day NMTOKEN #REQUIRED
Month NMTOKEN #REQUIRED
Year NMTOKEN #REQUIRED >
<!ELEMENT Settle EMPTY >
<!ATTLIST Settle
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Day NMTOKEN #REQUIRED
Month NMTOKEN #REQUIRED
Year NMTOKEN #REQUIRED >
<!ELEMENT Capture EMPTY >
<!ATTLIST Capture
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED
Day NMTOKEN #REQUIRED
Month NMTOKEN #REQUIRED
Year NMTOKEN #REQUIRED >
<!ELEMENT Data (#PCDATA | Trace | PrivateUse | Response |
AAV | Track1 | Track2 )* >
<!ATTLIST Data
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Trace (#PCDATA) >
<!ATTLIST Trade
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT PrivateUse (#PCDATA) >
<!ATTLIST PrivateUse
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Response (#PCDATA) >
<!ATTLIST Response
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT AAV (#PCDATA) >
<!ATTLIST AAV
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Track1 (#PCDATA) >
<!ATTLIST Track1
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Track2 (#PCDATA) >
<!ATTLIST Track2
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Inquiry (#PCDATA) >
<!ATTLIST Inquiry
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT Signature (#PCDATA) >
<!ATTLIST Signature
id ID #IMPLIED
Mode (Query|Assert) #IMPLIED >
<!ELEMENT TransactionComplete EMPTY >
2.2.2. ECML v2 XML Schema
The following is an XML Schema for ECML v2.
<?xml version="1.0" encoding="utf-8"?>
<!-- Electronic Commerce Modeling Language v2 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:attribute name="Mode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Query"/>
<xs:enumeration value="Assert"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="id" type="xs:ID"/>
<xs:complexType name="EcomSimpleText">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="Mode" use="optional"/>
<xs:attribute ref="id" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="Ecom">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ShipTo"/>
<xs:element ref="BillTo"/>
<xs:element ref="ReceiptTo"/>
<xs:element ref="Payment"/>
<xs:element ref="Loyalty"/>
<xs:element ref="User"/>
<xs:element ref="Merchant"/>
<xs:element ref="Transaction"/>
<xs:element ref="TransactionComplete"/>
</xs:choice>
<xs:attribute ref="Mode" use="optional"/>
<xs:attribute ref="id" use="optional"/>
<xs:attribute name="ConsumerOrderID" use="optional"/>
<xs:attribute name="Merchant" use="optional"/>
<xs:attribute name="Processor" use="optional"/>
<xs:attribute name="SchemaVersion" type="xs:string"
fixed="urn:ietf:params:ecml:v2.0"/>
<xs:attribute name="WalletID" use="optional"/>
<xs:attribute name="WalletLocation" type="xs:anyURI"
use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="ShipTo">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">