W3CWD-EC-Micropayment-990302


Micropayment Markup

W3C Working Draft 02-March-1999


This version:
http://www.w3.org/ECommerce/Micropayments/Group/draft/markupdraft-public.html
Previous versions:
    http://www.w3.org/ECommerce/Micropayments/Group/draft/markupdraft.html
Editor: Thierry Michel (W3C) tmichel@w3.org


Status of this document

This is a W3C Working Draft for review by W3C members and other interested parties. It is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". A list of current W3C working drafts can be found at http://www.w3.org/TR.
Note: Since working drafts are subject to frequent change, you are advised to reference the above URL, rather than the URLs for working drafts themselves.
This work is part of the W3C Micropayment Activity

Note:
Text with yellow background was last modified


Abstract

This specification provides an extensible way to embed in a Web page all the information necessary to initialize a micropayment (amounts and currencies, payment systems, etc).
This embedding allows different micropayment electronic wallet to coexist in a interoperable manner.


Micropayment Markup Version 1.0

Table of Contents

  1. Introduction
    1. Origin and Goals
    2. Relationship to Existing Payment Systems
    3. Principles and Parties
  2. Architecture
    1. Basic architecture
  3. Requirements
    1. Embedding Requirements
    2. Conformance Requirements
  4. Required fields
    1. Merchant Identifier
    2. Client Buy
    3. Client Request
    4. Text and Image to be linked
    5. Price field
    6. Text field
    7. Duration
    8. Expiration date
    9. Specific field
  5. Embedding information in HTML pages
    1. Encoding  for Plug in or Applet
    2. Encoding  for RDF
  6. Appendices
    1. References (Normative)
    2. Other References
    3. W3C Micropayment Markup Working Group


1. Introduction

1.a Origin and Goals

Currently, there is no clear definition of a "Web micropayment" that encompasses all systems claiming to be micropayment systems.
Though disparate, they all share the goal of minimizing the cost overhead of a single transaction.
Micropayments provide an alternative source of revenues beyond advertising and subscriptions for content providers (initially text and pictures, presumably later multimedia streams). They may also provide revenue streams for service providers  (database lookup, proxy services etc.).

Most of these micropayment systems try to save costs, both monetary (bank and transactions) and network (packet round trips). To do so, systems embed vital information in Web pages hyperlinks, using proprietary encodings.

This document proposes an extensible and interoperable way to embed in a Web page all the information necessary to initialize a micropayment.

1.b Relationship to Existing Payment systems

One requirement common to all micropayment system is to attach payment information to transaction(e.g. pricing), be they based on :

Today, a merchant willing to support multiple payment system needs to embed in Web page all these specific payment information, using for each system proprietary encodings .
These proprietary encodings introduce redundancy of information and over work  for Merchant to author Web pages.
The need for a common markup to support multiple payment system is crucial.

Today all the above systems are all in various stages between final design, pilots and early adopter phase.
Therefore,  specifying a common markup for multiple payment system will not bother the market, while no huge installed base is to migrate. This rapid market development is likely to close this window of opportunity by the end of the year 2000 with the growth of the installed user base.

Obviously, the time for developing a common markup supporting multiple payment system appears well chosen.

1.c Principles and Parties

Micropayment usually involves three parties, a customer C who makes the payment, a Merchant M who receives the payment and a broker B who keeps accounts for the parties concerned.

This document will mainly consider the two parties Customer (Client) C and Merchant (Server) M, as they are the only ones to be involved in the initialization of a micropayment.

2. Architecture

Parties involved in this specification architecture are Client and Merchant.

The Client initiates the micropayment when requesting information from the server.

2.a Basic architecture

The basic architecture consist of :

  1. On the Client side :
  2. On the Merchant side :

basic architecture :Server,PFLH,Wallet,Browser,
  [1] Merchant HTTP Server to Per Fee Link Handler flow
  [2] Per Fee Link Handler to Wallet and Wallet to Per Fee Link Handler flow
s

This document focuses on the Merchant server to Per Fee Link Handler-Browser flow and specifies the payment markup information.

This document does not handle :

The API from Per Fee Link Handler (PFLH) to Wallet  will be addressed in another specific API Working Draft.
The PFLH functionalities will also be addressed in another specific PFLH Working Draft.

3 Requirements

This document specifies requirements for  interoperability among micropayment systems.

3.1 Embedding requirements :

Requirements for embedding micropayment information in Web pages are :

3.2 Conformance requirements :

The following key words are used throughout the document and should be read as interoperability requirements. The words are used as defined in RFC2119  [KEY] for defining the significance of each particular requirement.
These words are:

MUST
This word or the adjective "required" means that the item is an absolute requirement of the specification.

SHOULD
This word or the adjective "recommended" means that there may exist valid reasons in particular circumstances to ignore this item, but the full implications should be understood and the case carefully weighed before choosing a different course for an implementation.

MAY
This word or the adjective "optional" means that this item is truly optional. One merchant may choose to include the item because a particular micropayment system requires it.

An implementation is not compliant and interoperable with any other micropayment system if it fails to satisfy one or more of the MUST requirements it implements.

4. Required fields

All the following parameters MUST be provided for conformance.

4.a Merchant Identifier

Name  : merchantID
Type: URI.
Definition: This parameter identifies the merchant site where the purchase is to occur.

4.b Client Buy

These two parameters buyurl and buycode are mandatory .

Name  : buyurl
Type: URI.
Definition: This parameter identifies what the client is buying. It does not mention the site of the merchant.

Name  : buycode
Type: Character string.
Definition: This parameter allows a code naming a product code designation.

4.c Client Request

Name  : requesturl
Type: URI.
Definition: This parameter identifies what the client is actually requesting. It does not mention the site of the merchant.

requesturl can be identical to the buyurl parameter. But it can be different  if  for example the client bought a collection of pages, he can request only one of these pages, and in this case buyurl is larger than requesturl parameter.

4.d Text or Image to be linked

One of these two parameters textlink and imagelink  is mandatory ; a text and/or an image MUST be provided.

Name  : textlink
Type: Character string.
Definition: This parameter specifies the linked text to be displayed to the Custumer.

Name  : imagelink
Type: URI.
Definition: This parameter identifies the linked  image to be displayed to the Custumer.

When linking an  image with the imagelink parameter, an image alternative text MUST be provided to insure accessibility.

Name  : imagealt
Type: Character string.
Definition: This parameter describes the linked image for accessibility.

4.e Price field

A price must be provided by the merchant in order to be displayed to the Custumer.

Name  : price
Type: Character string.
Definition: This parameter MUST include amount and currency, encoded as character strings consisting of a number followed by a currency code :

4.f Text field

Name  : text
Type: Character string
Definition: This parameter describes content of what the client is buying for display.

4.g Duration

Name  : duration
Type: Integer. This number is a quantity of minutes.
Definition: This parameter indicates the time after purchase any URI can be retrieved with payment.

4.h Expiration date field

Name  : expiration
Type: Date.
Definition: This parameter indicates a date until which the offer from the merchant is valid. After this given date offer is out of date.

The current specification uses one of the formats described in the profile [DATETIME] for its definition of legal date/time strings. The date format is as follows, the components shown here must be present, with exactly this punctuation.
Complete date plus hours, minutes and seconds:

YYYY-MM-DDThh:mm:ssTZD (e.g. 1999-07-16T19:20:30+01:00)

where:

  YYYY = four-digit year
MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) TZD = time zone designator (Z or +hh:mm or -hh:mm)

Note that the "T" appears literally in the string, to indicate the beginning of the time element, as specified in ISO 8601.

This profile defines two ways of handling time zone offsets:

  1. Times are expressed in UTC (Coordinated Universal Time), with a special UTC designator ("Z").
  2. Times are expressed in local time, together with a time zone offset in hours and minutes. A time zone offset of "+hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes ahead of UTC. A time zone offset of "-hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes behind UTC.

4.i Specific field

For coexistence issues among the different payment systems, there is a need for a specific field to handle each payment specific information.

Name  : URI identifying  uniquely the payment system name
Type: Character string.
Definition: This specific field specifies the payment system name, identified by a URI and provides all the required information needed by this  payment system.

5. Embedding information in HTML pages

Due to Requirements expressed above, embedding micropayment information has to be compliant to all browsers.

We will cite as example embedding using Resource Description Framework  [RDF] for RDF compliant browsers and embedding using Plug in or JAVA Applet for current non-RDF-aware browsers.

5.a Encoding  for Plug in or Applet

All requested information needed to start micropayment must be present in the HTML page sent from the merchant server.
For  [RDF] non compliant Browser, embedding information in HTML pages can be done using a Per Fee Link Handler possibly  a Plug in or JAVA Applet.

In order to allows the Per Fee Link Handler to process these information, it will be stored in an <<OBJECT>> element.
For User agents that do not  support the <<OBJECT>> element and for reasons of backward compatibility, authors can use the <APPLET> or <EMBED> element.

In general, authors should use the <OBJECT> element.

5.a.1 <OBJECT> element

HTML 4.0 introduces the <OBJECT> element, which allows HTML authors to specify everything required by an <OBJECT> for its presentation by a user agent: source code, initial values, and run-time data. The term "<OBJECT>" is used to describe applets, plug-ins, media handlers, etc.

<<OBJECT> codetype="application/java" 
classid="http://www.miamachina.org/applet/micropayment.class">
<PARAM name="duration" value="60" valuetype="data">
A Per Fee Link that needs an applet for rendering
</<OBJECT>>

Attribute definitions:

classid = URL
This attribute may be used to specify the location of an <OBJECT>'s implementation via a URL. It may be used together with, or as an alternative to the data attribute, depending on the type of <OBJECT> involved.

codetype = content-type
This attribute specifies the content type of data expected when downloading the <OBJECT> specified by classid. This attribute is optional but recommended when classid is specified since it allows the user agent to avoid loading information for unsupported content types.

PARAM elements within <OBJECT> element will be used to pass named parameters required by the <OBJECT> at run-time.
name = applet parameter name
value = parameter value

5.a.2 APPLET element

For User agents that do not  support the <OBJECT> element and for reasons of backward compatibility, authors can use the APPLET element.

HTML 3.2 has introduces the APPLET element to allow designers to embed a Java applet in an HTML document. It is supported by all Java-enabled browsers, but has been deprecated in HTML 4.0 in favor of the <OBJECT> element.

<APPLET codebase="http://www.miamachina.org/applet/" code="micropayment.class" 
archive="myclasses.jar,myaudio.jar">
<PARAM name="duration" value="60" valuetype="data">
A Per Fee Link that needs an applet for rendering.
</APPLET>

Attribute definitions:

codebase = codebaseURL
This optional attribute specifies the base URL of the applet -- the directory or folder that contains the applet's code. If this attribute is not specified, then the document's URL is used.

code = appletFile
This required attribute specifies the name of the file that contains the applet's compiled Applet subclass. This file is relative to the base URL of the applet. It cannot be absolute.

archive = uri-list  
It is a new attribute introduced in JDK1.1 Its value is a comma seperated list of archives containing classes and other resources.
The classes in the archives are preloaded relative to the applet's codebase. It allows to load a signed (trusted) code like a PFLH for instance.

PARAM elements within APPLET element will be used to pass named parameters required by the applet at run-time. Applets read user-specified values for parameters with the get Parameter() method.
name = applet parameter name
value = parameter value

5.a.3 EMBED element

For User agents that do not  support the <OBJECT> element and for reasons of backward compatibility, authors can use EMBED element.

This EMBED element, supported by all Plugin-enabled browsers, allows designers to embed a Plugin in an HTML document.
EMBED element is not a standard HTML element, it was introduced by Netscape. HTML 4.0 introduces the <OBJECT> element to replace this element.

<EMBED SRC="http://www.miamachina.org/applet/micropayment.class" duration="60">
A Per Fee Link that needs a plugin for rendering.
</EMBED>

Optional parameters within EMBED element will be used to pass required information  by the plugin at run-time.

PARAMETER_NAME=PARAMETER_VALUE

5.a.4 Per Fee Link Handler for <OBJECT>, APPLET and EMBED element.

The PFL Handler is a module that can either be a Plug-in or a Java Applet.
It could be implemented in Java 1.2  allowing signed JAVA applets in browsers supporting it, and otherwise as a plugin.

The Per Fee Link Handler (PFLH) functionalities will be addressed in a specific Working Draft.

5.a.5 Example of embedded Fee Link using <OBJECT>, APPLET and EMBED element.

The merchantID data field :

for <OBJECT> and APPLET element :
<PARAM name="merchantID" value="http://www.merchant.org/shop"
valuetype="ref">

for EMBED element :

merchantID="http://www.merchant.org/shop"

The ClientBuy data field :

for <OBJECT> and APPLET element :

<PARAM name="buyurl" value="catalog.html" valuetype="ref">
<PARAM name="buycode" value="a254df10" valuetype="data">

for EMBED element :

buyurl="catalog.html"
buycode="a254df10"

The ClientRequest data field :

for <OBJECT> and APPLET element :

<PARAM name="requesturl" value="page.html"
valuetype="ref">


for EMBED element :

requesturl="page.html"

The Textlink and imagelink data field :

for <OBJECT> and APPLET element :

<PARAM name="textlink" value="click here to by the product"
valuetype="data">
<PARAM name="imagelink" value="http://www.merchant.org/product.gif"
valuetype="ref">
<PARAM name="imagealt" value="text description of the image"
valuetype="data">

for EMBED element :

textlink="click here to by the product"
imagelink="http://www.merchant.org/product.gif"
imagealt="text description of the image"

The Price data field :

for <OBJECT> and APPLET element :

<PARAM name="price" value="0.01USD" valuetype="data">
statement for one cent of a US dollar.
for EMBED element :
price="1E-2FRF"
statement for one cent of a french franc.

The Text data field :

for <OBJECT> and APPLET element :

<PARAM name="text" value="this is what you are actually buying"
  valuetype="data">

for EMBED element :

text="this is what you are actually buying"

The Duration data field

for <OBJECT> and APPLET element :

<PARAM name="duration" value="60" valuetype="data">

for EMBED element :

duration="60"

The Expiration date data field :

for <OBJECT> and APPLET element :

<PARAM name="expiration" value="1999-11-05T08:15:30-05:00 "
valuetype="data">
corresponds to November 5, 1999, 8:15:30 am, US Eastern Standard Time.

for <EMBED> element :

expiration="1999-11-05T13:15:30Z"
corresponds to the same instant as above.

The Specific data field :

for <OBJECT> and <APPLET> element :

<PARAM name="http://www.foo.it/micropay1" value="xxxxxxxxxxxxxxxxxx"
valuetype="data">
<PARAM name="http://www.foo.it/micropay2" value="yyyyyyyyyyyyyyyyyy" valuetype="data">

for <EMBED> element :

P1-name="http://www.foo.it/micropay1"
P1-value="xxxxxxxxxxxxxxxxxx"
P2-name="http://www.foo.it/micropay2"
P2-value="yyyyyyyyyyyyyyyyyy"

5.b Encoding  using RDF

5.b.1 Benefits with RDF encoding :

For RDF compliant browsers, micropayment information can be embedded in HTML pages using RDF.
Micropayment information are statements that are properly expressed according to the Resource Description Framework (RDF) Model and Syntax Specification, now a W3C Recommendation.

The arguments for using RDF as data format for micropayments result obviously from the generic benefits of RDF.
In particular, they are :

The information for micropayments can therewith become part of the World Wide Web itself, through being meta-data.

5.b.2 RDF Transport:

In order to fully exploit these benefits, it is suggested that the necessary parameters for micropayments are encoded in RDF and shipped by either or more of the following ways:

  1. External from the content, linked (in the case of HTML files) with an <LINK> element. The recommended relation type for this purpose is REL="meta"; e.g. <LINK rel="meta" href="Micropayment-links.RDF">
  2. Included in the content of a Web in the <HEAD> section of the HTML document.
  3. Together with the content in the HTTP headers.

These parameters can then be read by a standard RDF engine and passed on to the API to the electronic wallet (to be defined by the Micropayments API Working Draft).

The recommended technique for embedding RDF expressions in an HTML document is simply to insert the RDF in-line. This will make the resulting document non-conformant to HTML specifications up to and including HTML 4.0 but the W3C expects that the HTML specification will evolve to support this.

Note: Transition to full integration :
In order to transit from the existing software population of the Web to one where micropayments and RDF are day-to-day data formats, an interim implementation should be foreseen. An interim implementation can be provided through a proxy until the API is available from the browser directly.
Therefore API Working Draft should consider the assumption of a browser API in the future.

5.b.2 Same Example (5.a.5) as above of Fee Link using RDF encoding :

Linking text to a fee Web page :
The Fee Link is specified with the <A> element the from HTML 4.0.

The textlink parameter is in this case the content of the <A> element.
The ID attribute is used to assign a unique identifier to the <A> element  and the HREF attribute is used to provide the source anchor.

<BODY>
<A href="http://www.miamachina.org/page.html" id="myfeelink">
Buy the page through this link</A>
</BODY>


Following RDF statements describing this Fee link are mentioned in the <HEAD> section of the HTML document as following:

<HEAD>
<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-rdf-syntax#" xmlns:rdfs="http://www.w3.org/TR/PR-rdf-schema#" xmlns:mp="http://www.w3.org/schema/micropay#"> <rdf:Description about="#myfeelink">   <mp:Price>1E-2FRF</mp:Price>  <mp:merchantID ressource="http://www.merchant.org/shop"/>   <mp:buyurl ressource="catalog.html"/>   <mp:buycode>a254df10</mp:buycode>   <mp:requesturl ressource="page.html"/>   <mp:text>this is what you are actually buying</mp:text>
<mp:duration>60</mp:duration>  <mp:expiration>1999-11-05T13:15:30Z</mp:expiration>   <mp:Paymentsystem>     <rdf:Alt>        <rdf:li> <mp:Paymentoption system="http://www.foo.it/micropay1" value="xxxxxxxxxxxxxxxxxx"/> </rdf:li> <rdf:li> <mp:Paymentoption system="http://www.foo.it/micropay2" value="yyyyyyyyyyyyyyyyyy"/> </rdf:li>     </rdf:Alt>   </mp:Paymentsystem> </rdf:Description> </rdf:RDF> </HEAD>

If  these RDF statements were embedded into an HTML document then the default behavior of a non-RDF-aware browser would display the values of the properties.

To distinguish this Fee link from a free link, Cascading Style Sheets [CSS1] can be used to add a particular layout to this fee link.
e.g.
This fee link is enclosed into a green box

<HEAD>
<STYLE TYPE="text/css"> 
#myfeelink { border-width: 1 ; background: green}
</STYLE> </HEAD> <BODY> <A href="http://www.miamachina.org/page.html" id="myfeelink"> Buy the page through this fee link</A> </BODY>
</HTML>

Note : A user personal Style Sheet may override this given Fee link layout.

Linking an image to a fee Web page :

The Fee Link is specified using the <A> and the <IMG> element from HTML 4.0.

The imagelink parameter is the value of the SRC attribute element.
The imagealt parameter is the value of the ALT attribute element.

<BODY>
<A href="http://www.miamachina.org/page.html">
<IMG src="http://www.merchant.org/product.gif"
alt="description of the image" </A> </BODY>

The RDF statements describing this image Fee link are mentioned in the <HEAD> of the HTML document, same as mentioned above.

5.c Embedding micropayment information in XML.

5.c.1 The Embedding of micropayment information in XML will be addressed soon.

5.c.2 Same Example (5.a.5) as above of Fee Link using XML encoding :

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE micropayment SYSTEM  "/XML/micropayment.dtd">

..........


6. Appendices

6.a References (Normative)

[RDF]
O. Lassila, R. Swick. "Resource Description Framework (RDF) Model and Syntax Specification."  World Wide Web Consortium, Recommendation 22 February 1999.
[DATETIME]
"Date and Time Formats", W3C Note, M. Wolf and C. Wicksteed, 15 September 1997.
[IANA]
"Assigned Numbers", STD 2, RFC 1700, USC/ISI, J. Reynolds and J. Postel, October 1994.
[CSS1]
"Cascading Style Sheets, level 1", H. W. Lie and B. Bos, 17 December 1996.
[ISO3166]
"ISO3166: Codes for The Representation of Names of Countries." International Organization for Standardization.
[KEY]
S. Bradner. "RFC2119 -- Key words for use in RFCs to Indicate Requirement Levels." March 1997.
[URI]
T. Berners-Lee, R. Fielding, and L. Masinter. "Uniform Resource Identifiers (URI): Generic Syntax and Semantics." 1997. (Work in progress; see updates to RFC1738.).
[HTML 4.0]
Hypertext Markup Language (HTML) 4.0 Specification, World Wide Web Consortium, Recommendation, revised on 24-Apr-1998"
[XML]
Dave Raggett, Arnaud Le Hors, Ian Jacobs. "Extensible Markup Language (XML) 1.0 Specification." World Wide Web Consortium, Recommendation. 10-February-1998.
[XML-Name]
T. Bray, D. Hollander, A. Layman. "Namespaces in XML." World Wide Web Consortium, Working Draft. 16-September-1998.

6.b Others References

[RDF-Micropayment]
Josef Dietl, Thierry Michel "RDF for Micropayments"  Working Group internal Draft 14-Aug-1998.

6.c  W3C Micropayment Markup Working Group

This specification was prepared and approved for publication by the W3C Micropayment Markup Working Group (WG). WG approval of this specification does not necessarily imply that all WG members voted for its approval. The current and former members of the Micropayment Markup WG are:

Amir Herzberg, IBM (Co-Chair); Mark Manase, Compaq (Co-Chair); Jean Claudes Pailles, France Telecom ; Thierry Michel, W3C (Editor);  Phillipe Michon, France Telecom; Jon Ziegler, Sun; Liza Ezrol,citibank.


Copyright ©  1998 W3C (MIT, INRIA, Keio ), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.