diff options
Diffstat (limited to 'doc/rfc/rfc3867.txt')
-rw-r--r-- | doc/rfc/rfc3867.txt | 5939 |
1 files changed, 5939 insertions, 0 deletions
diff --git a/doc/rfc/rfc3867.txt b/doc/rfc/rfc3867.txt new file mode 100644 index 0000000..05195ce --- /dev/null +++ b/doc/rfc/rfc3867.txt @@ -0,0 +1,5939 @@ + + + + + + +Network Working Group Y. Kawatsura +Request for Comments: 3867 Hitachi +Category: Informational M. Hiroya + Technoinfo Service + H. Beykirch + Atos Origin + November 2004 + + + Payment Application Programmers Interface (API) for v1.0 + Internet Open Trading Protocol (IOTP) + +Status of this Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2004). + +Abstract + + The Internet Open Trading Protocol (IOTP) provides a data exchange + format for trading purposes while integrating existing pure payment + protocols seamlessly. This motivates the multiple layered system + architecture which consists of at least some generic IOTP application + core and multiple specific payment modules. + + This document addresses a common interface between the IOTP + application core and the payment modules, enabling the + interoperability between these kinds of modules. Furthermore, such + an interface provides the foundations for a plug-in-mechanism in + actual implementations of IOTP application cores. + + Such interfaces exist at the Consumers', the Merchants' and the + Payment Handlers' installations connecting the IOTP application core + and the payment software components/legacy systems. + + + + + + + + + + + + +Hans, et al. Informational [Page 1] + +RFC 3867 Payment API for IOTP November 2004 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.1. General payment phases . . . . . . . . . . . . . . . . . 5 + 1.2. Assumptions. . . . . . . . . . . . . . . . . . . . . . . 6 + 2. Message Flow . . . . . . . . . . . . . . . . . . . . . . . . . 12 + 2.1. Authentication Documentation Exchange. . . . . . . . . . 15 + 2.2. Brand Compilation. . . . . . . . . . . . . . . . . . . . 17 + 2.3. Brand Selection. . . . . . . . . . . . . . . . . . . . . 21 + 2.4. Successful Payment . . . . . . . . . . . . . . . . . . . 24 + 2.5. Payment Inquiry. . . . . . . . . . . . . . . . . . . . . 29 + 2.6. Abnormal Transaction Processing. . . . . . . . . . . . . 30 + 2.6.1. Failures and Cancellations . . . . . . . . . . . 30 + 2.6.2. Resumption . . . . . . . . . . . . . . . . . . . 32 + 2.7. IOTP Wallet Initialization . . . . . . . . . . . . . . . 33 + 2.8. Payment Software Management. . . . . . . . . . . . . . . 34 + 3. Mutuality. . . . . . . . . . . . . . . . . . . . . . . . . . . 34 + 3.1. Error Codes. . . . . . . . . . . . . . . . . . . . . . . 38 + 3.2. Attributes and Elements. . . . . . . . . . . . . . . . . 48 + 3.3. Process States . . . . . . . . . . . . . . . . . . . . . 61 + 3.3.1. Merchant . . . . . . . . . . . . . . . . . . . . 61 + 3.3.2. Consumer . . . . . . . . . . . . . . . . . . . . 63 + 3.3.3. Payment Handler. . . . . . . . . . . . . . . . . 65 + 4. Payment API Calls. . . . . . . . . . . . . . . . . . . . . . . 66 + 4.1. Brand Compilation Related API Calls. . . . . . . . . . . 66 + 4.1.1. Find Accepted Payment Brand. . . . . . . . . . . 66 + 4.1.2. Find Accepted Payment Protocol . . . . . . . . . 68 + 4.1.3. Get Payment Initialization Data. . . . . . . . . 70 + 4.1.4. Inquire Authentication Challenge . . . . . . . . 72 + 4.1.5. Authenticate . . . . . . . . . . . . . . . . . . 73 + 4.1.6. Check Authentication Response. . . . . . . . . . 74 + 4.2. Brand Selection Related API Calls. . . . . . . . . . . . 76 + 4.2.1. Find Payment Instrument. . . . . . . . . . . . . 76 + 4.2.2. Check Payment Possibility. . . . . . . . . . . . 78 + 4.3. Payment Transaction Related API calls. . . . . . . . . . 80 + 4.3.1. Start Payment Consumer . . . . . . . . . . . . . 80 + 4.3.2. Start Payment Payment Handler. . . . . . . . . . 82 + 4.3.3. Resume Payment Consumer. . . . . . . . . . . . . 84 + 4.3.4. Resume Payment Payment Handler . . . . . . . . . 85 + 4.3.5. Continue Process . . . . . . . . . . . . . . . . 86 + 4.3.6. Change Process State . . . . . . . . . . . . . . 88 + 4.4. General Inquiry API Calls. . . . . . . . . . . . . . . . 89 + 4.4.1. Remove Payment Log . . . . . . . . . . . . . . . 90 + 4.4.2. Payment Instrument Inquiry . . . . . . . . . . . 90 + 4.4.3. Inquire Pending Payment. . . . . . . . . . . . . 92 + 4.5. Payment Related Inquiry API Calls. . . . . . . . . . . . 93 + 4.5.1. Check Payment Receipt. . . . . . . . . . . . . . 93 + 4.5.2. Expand Payment Receipt . . . . . . . . . . . . . 94 + + + +Hans, et al. Informational [Page 2] + +RFC 3867 Payment API for IOTP November 2004 + + + 4.5.3. Inquire Process State. . . . . . . . . . . . . . 96 + 4.5.4. Start Payment Inquiry. . . . . . . . . . . . . . 97 + 4.5.5. Inquire Payment Status . . . . . . . . . . . . . 98 + 4.6. Other API Calls. . . . . . . . . . . . . . . . . . . . . 99 + 4.6.1. Manage Payment Software. . . . . . . . . . . . . 99 + 5. Call Back Function . . . . . . . . . . . . . . . . . . . . . .101 + 6. Security Considerations. . . . . . . . . . . . . . . . . . . .103 + 7. References . . . . . . . . . . . . . . . . . . . . . . . . . .103 + 7.1. Normative References . . . . . . . . . . . . . . . . . .103 + 7.2. Informative References . . . . . . . . . . . . . . . . .104 + Acknowledgement. . . . . . . . . . . . . . . . . . . . . . . . . .105 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .105 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .106 + +1. Introduction + + Common network technologies are based on standardized and established + Internet technologies. The Internet technologies provide mechanisms + and tools for presentation, application development, network + infrastructure, security, and basic data exchange. + + Due to the presence of already installed trading roles' systems with + their own interfaces (Internet shop, order management, payment, + billing, and delivery management systems, or financial institute's + legacy systems), IOTP has been limited to the common external + interface over the Internet. However, some of these internal + interfaces might be also standardized for better integration of IOTP + aware components with of the existing infrastructure and its cost + effective reuse. For more information on IOTP, see [IOTP] and + [IOTPBOOK]. + + The typical Payment Handlers (i.e., financial institutes or near-bank + organizations) as well as Merchants require an IOTP aware application + that easily fits into their existing financial infrastructure. The + Payment Handler might even insist on the reuse of special in-house + solutions for some subtasks of the IOTP aware application, e.g., + reflecting their cryptography modules, gateway interfaces, or + physical environment. Therefore, their IOTP aware implementation + really requires such clear internal interfaces. + + More important, consumers demand modularization and clear internal + interfaces: Their IOTP application aims at the support of multiple + payment methods. Consumers prefer the flexible use of different + seamless integrating payment methods within one trading application + with nearly identical behavior and user interface. The existence of + a well-defined interface enables payment software developers to bolt + on their components to other developer's general IOTP Application + Core. + + + +Hans, et al. Informational [Page 3] + +RFC 3867 Payment API for IOTP November 2004 + + + Initially, this consideration leads to the two-level layered view of + the IOTP software for each role, consisting of: + + o some generic IOTP system component, the so-called IOTP application + core - providing IOTP based gateway services and generic business + logic and + + o the trading roles' specific back-end systems implementing the + specific trading transaction types' functionality. + + In order to isolate the changes on the infrastructure, the IOTP + trading application has been three-layered: + + o the IOTP Application Core processes the generic parts of the IOTP + transaction and holds the connection to the Internet, + + o the Existing Legacy System or Existing Payment Software which + processes the actual transaction type, and particular payment + transaction, and + + o the IOTP Middle-ware or IOTP Payment Bridge which glues the other + two possibly incompatible components. It brokers between the + specific interface of the Existing Legacy System and the + standardized interfaces of the IOTP Application Core. + + As IOTP extends payment schemes to a trading scheme, primarily, this + document focuses on payment modules, i.e., the interface between the + IOTP Payment Bridge and the IOTP Application Core. It provides a + standard method for exchanging payment protocol messages between the + parties involved in a payment. But, it does not specify any + interface for order or delivery processing. + + Such a Payment Application Programmers Interface (API) must suit for + a broad range of payment methods: (1) software based like Credit Card + SET or CyberCoin, (2) chip card based like Mondex or GeldKarte, and + (3) mimicries of typical and traditional payment methods like money + transfer, direct debit, deposit, withdrawal, money exchange and value + points. It should support both payments with explicit consumer + acknowledge and automatic repeated payments, which have been consumer + approved in advance. For more information on SET, see [SET]. + + The following discussion focuses on the Consumer's point of view and + uses the associated terminology. When switching to Merchants' or + Delivery Handlers' IOTP aware applications, the payment related + components should be implicitly renamed by Existing Legacy Systems to + the IOTP Middle-ware. + + + + + +Hans, et al. Informational [Page 4] + +RFC 3867 Payment API for IOTP November 2004 + + + The next two sub-sections describe the general payment scenario and + several assumptions about the coarsely sketched software components. + + Section 2 illustrates the payment transaction progress and message + flow of different kinds of transaction behavior. Sections 3 to 4 + provide the details of the API functions and Section 5 elaborates the + call back interface. + +1.1. General payment phases + + The following table sketches the four logical steps of many payment + schemes. The preceding agreements about the goods, payment method, + purchase amount, or delivery rules are omitted. + + Payment State Party Example Behavior + ------------- ----- ---------------- + + Mutual Payment Handler Generation of identification + Authentication request, solvency request, or + and some nonce + Initialization Consumer Responses to the requests and + generation of own nonce + + Authorization Payment Handler Generation of the authorization + request (for consumer) + Consumer Agreement to payment (by + reservation of the Consumer's + e-money) + Payment Handler Acceptance or rejection of the + agreement (consumer's + authorization response), + generation of the authorization + request (for issuer/acquirer), + and processing of its response + + Capture Generation of the capture + request (for issuer/acquirer) + Consumer Is charged + Payment Handler Acceptance or rejection of the + e-money, close of the payment + transaction + + Reversal On rejection (online/delayed): + generation of the reversal data + Consumer Receipt of the refund + + + + + + +Hans, et al. Informational [Page 5] + +RFC 3867 Payment API for IOTP November 2004 + + + However, some payment schemes: + + o limit themselves to one-sided authentication, + o perform off-line authorization without any referral to any + issuer/acquirer, + o apply capture processing in batch mode, or + o do not distinguish between authorization and capture, + o lack an inbound mechanism for reversals or implement a limited + variant. + + This model applies not only to payments at the typical points of + sales but extends to refunds, deposits, withdrawals, electronic + cheques, direct debits, and money transfers. + +1.2. Assumptions + + In outline, the IOTP Payment Bridge processes some input sequence of + payment protocol messages being forwarded by the IOTP Application + Core. It (1) disassembles the messages, (2) maps them onto the + formats of the Existing Payment Software, (3) assembles its + responses, and (4) returns another sequence of payment protocol + messages that is mostly intended for transparent transmission by the + IOTP Application Core to some IOTP aware remote party. Normally, + this process continues between the two parties until the Payment + Handler's Payment API signals the payment termination. + Exceptionally, each system component may signal failures. + + The relationship between the aforementioned components is illustrated + in the following figure. These components might be related to each + other in a flexible n-to-m-manner: + + o One IOTP Application Core may manage multiple IOTP Payment Bridges + and the latter might be shared between multiple IOTP Application + Cores. + o Each Payment Bridge may manage multiple Existing Payment Software + modules and the latter might be shared between multiple Payment + Bridges. + o Each Existing Payment Software may manage multiple payment schemes + (e.g., SET) and the latter might be supported by multiple Existing + Payment Software modules. For more information on SET see [SET]. + + o Each payment scheme may support multiple payment instruments + (e.g., particular card) or methods (e.g., Visa via SET) and the + latter might be shared by multiple Existing Payment Software + Components. + + + + + + +Hans, et al. Informational [Page 6] + +RFC 3867 Payment API for IOTP November 2004 + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + IOTP client (consumer) <---------------> IOTP server (merchant) + ( contains Internet ( contains + IOTP Application Core) IOTP Application Core) + ^ ^ + | IOTP Payment | IOTP Payment + | API | API + v v + IOTP Payment Bridge IOTP Payment Bridge + ^ ^ + | Existing Payment APIs, e.g., | + | SET, Mondex, etc. | + v v + Existing Payment Software Existing Payment Software + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 1: Relationship of the Components + + The Payment API considers the following transaction types of Baseline + IOTP: + + o Baseline Purchase, + o Baseline Refund, + o Baseline Value Exchange, + o Baseline Withdrawal, and + o Baseline (Payment) Inquiry. + + For more information on Baseline IOTP, see [IOTP] and [IOTPBOOK]. + + First, the authors' vision of the IOTP aware application's and its + main components' capabilities are clarified: On the one hand, the + Payment API should be quite powerful and flexible for sufficient + connection of the generic and specific components. On the other + hand, the Payment API should not be overloaded with nice-to-haves + being unsupported by Existing Payment Software. + + Despite the strong similarities on the processing of successful + payments, failure resolution and inquiry capabilities differ + extremely among different payment schemes. These aspects may even + vary between different payment instrument using the same payment + schemes. Additionally, the specific requirements of Consumers, + Merchants and Payment Handlers add variance and complexity. + Therefore, it is envisioned that the IOTP Application Core provides + only very basic inquiry mechanisms while complex and payment scheme + specific inquiries, failure analysis, and failure resolution are + fully deferred to the actual Existing Payment Software - including + the user interface. + + + + +Hans, et al. Informational [Page 7] + +RFC 3867 Payment API for IOTP November 2004 + + + The IOTP Application Core processes payments transparently, i.e., it + forwards the wrapped payment scheme specific messages to the + associated IOTP Payment Bridge/Existing Payment Software. The + Existing Payment Software might even use these messages for inbound + failure resolution. It reports only the final payment status to the + IOTP Application Core or some intermediate - might be also final - + status on abnormal interruption. + + The IOTP Application Core implements the generic and payment scheme + independent part of the IOTP transaction processing and provides the + suitable user interface. Focusing on payment related tasks, it + + o manages the registered IOTP Payment Bridges and provides a + mechanism for their registration - the latter is omitted by this + document. + + o assumes that any IOTP Payment Bridge is a passive component, i.e., + it strictly awaits input data and generates one response to each + request, + + o supports the payment negotiation (Consumer: selection of the + actual payment instrument or method; Merchant: selection of the + payment methods being offered to the Consumer) preceding the + payment request, + + o requests additional payment specific support from the Existing + Payment Software via the selected and registered the IOTP Payment + Bridge, + + o initializes and terminates the Existing Payment Software via the + IOTP Payment Bridge, + + o inquires authentication data (for subsequent request or response) + from the Existing Payment Software, specific authentication + component - omitted in this document - or Consumer (by a suitable + user interface), + + o supervises the online transaction process and traces its progress, + + o stores the transaction data being exchanged over the IOTP wire - + payment scheme specific data is handled transparently, + + o relates each payment transaction with multiple payment parameters + (IOTP Transaction Identifier, Trading Protocol Options, Payment + Instrument/Method, Offer Response, IOTP Payment Bridge, and Wallet + Identifier, associated remote Parties). The relation might be + + + + + +Hans, et al. Informational [Page 8] + +RFC 3867 Payment API for IOTP November 2004 + + + lowered to the party's Payment Identifier, IOTP Payment Bridge, + Wallet Identifier, and the remote parties when the actual payment + transaction has been successfully started. + + o implements a payment transaction progress indicator, + + o enables the inquiry of pending and completed payment transactions, + + o implements generic dialogs, e.g., brand selection, payment + acknowledge, payment suspension / cancellation, receipt + visualization, basic transaction inquiry, balance inquiry, or + receipt validation, + + o defers payment specific processing, supervision, validation, and + error resolution to the Existing Payment Software. It is + expected, that the Existing Payment Software will try to resolve + many errors first by the extended exchange of Payment Exchange + messages. The most significant and visible failures arise from + sudden unavailability or lapses of the local or opposing payment + component. + + o supports the invocation of any Existing Payment Software in an + interactive mode, which might be used (1) for the payment scheme + specific post-processing of a (set of) payment transactions, (2) + for the analysis of a payment instrument, (3) for the registration + of a new payment instrument/scheme, or (4) re-configuration of a + payment instrument/scheme. + + o exports call back functions for use by the IOTP Payment Bridge or + Existing Payment Software for progress indication. + + In addition, the IOTP Application Core + + o manages the IOTP message components and IOTP message blocks + exchanged during the transaction which may be referenced and + accessed during the processing of subsequent messages, e.g., for + signature verification. In particular, it stores named Packaged + Content elements exchanged during payments. + + o manages several kinds of identifiers, i.e., transaction, message, + component, and block identifiers, + + o implements a message caching mechanism, + + o detects time-outs at the protocol and API level reflecting the + communication with both the IOTP aware remote party and the + Payment API aware local periphery, e.g., chip card (reader) may + raise time-outs. + + + +Hans, et al. Informational [Page 9] + +RFC 3867 Payment API for IOTP November 2004 + + + However, the IOTP Payment Bridge and Existing Payment Software do not + have to rely on all of these IOTP Application Core's capabilities. + E.g., some Consumer's Existing Payment Software may refuse the + disclosure of specific payment instruments at brand selection time + and may delay this selection to the "Check Payment Possibility" + invocation using its own user interface. + + The IOTP Payment Bridge's capabilities do not only deal with actual + payments between the Consumer and the Payment Handler but extend to + the following: + + o translation and (dis)assemblage of messages between the formats of + the IOTP Payment API and those of the Existing Payment Software. + Payment API requests and response are strictly 1-to-1 related. + + o Consumer's payment instrument selection by the means of an + unsecured/public export of the relationship of payment brands, + payment protocols, and payment instruments (identifiers). + Generally, this includes not just the brand (Mondex, GeldKarte, + etc.) but also which specific instance of the instrument and + currency to use (e.g., which specific Mondex card and which + currency of all those available). + + However, some Existing Payment Software may defer the selection of + the payment instrument to the actual payment carrying-out or it may + even lack any management of payment instruments. E.g., chip card + based payment methods may offer - Point of Sale like - implicit + selection of the payment instrument by simple insertion of the chip + card into the chip card reader or it interrogates the inserted card + and requests an acknowledge (or selection) of the detected payment + instrument(s). + + o payment progress checks, e.g., is there enough funds available to + carry out the purchase, or enough funds left for the refund, + + o IOTP Payment Receipt checks which might be performed over its + Packaged Content or by other means. + + o recoding of payment scheme specific receipts into a format which + can be displayed to the user or printed, + + o cancellation of payment, even though it is not complete, + + o suspension and resumption of payment transactions. Two kinds of + failures the Existing Payment Software might deal with are (1) the + time-out of the network connection and (2) lack of funds. For + resolution, the IOTP Application Core may try the suspension with + a view to later possible resumption. + + + +Hans, et al. Informational [Page 10] + +RFC 3867 Payment API for IOTP November 2004 + + + o recording the payment progress and status on a database. E.g., + information about pending payments might be used to assist their + continuation when the next payment protocol message is received. + + o payment transaction status inquiry, so that the inquirer - IOTP + Application Core or User - can determine the appropriate next + step. + + o balance inquiry or transaction history, e.g., consumers may + interrogate their chip card based payment instrument or remotely + administer some account in advance of a payment transaction + acknowledge, + + o inquiry on abnormal interrupted payment transactions, which might + be used by the IOTP Application Core to resolve these pending + transactions at startup (after power failure). + + o payment progress indication. This could be used to inform the end + user of details on what is happening with the payment. + + o payment method specific authentication methods. + + Existing Payment Software may not provide full support of these + capabilities. E.g., some payment schemes may not support or may even + prevent the explicit transaction cancellation at arbitrary phases of + the payment process. In this case, the IOTP Payment Bridge has to + implement at least skeletons that signal such lack of support by the + use of specific error codes (see below). + + The Existing Payment Software's capabilities vary extremely. It + + o supports payment scheme specific processing, supervision, + validation, and error resolution. It is expected, that many + errors are tried to be resolved first by the extended exchange of + Payment Exchange messages. + + o provides hints for out-of-band failure resolution on failed + inbound resolution - inbound resolution is invisible to the IOTP + Application Core. + + o may implement arbitrary transaction data management and inquiry + mechanisms ranging from no transaction recording, last transaction + recording, chip card deferred transaction recording, simple + transaction history to sophisticated persistent data management + with flexible user inquiry capabilities. The latter is required + by Payment Handlers for easy and cost effective failure + resolution. + + + + +Hans, et al. Informational [Page 11] + +RFC 3867 Payment API for IOTP November 2004 + + + o implements the payment scheme specific dialog boxes. + + Even the generic dialog boxes of the IOTP Application Core might be + unsuitable: Particular (business or scheme) rules may require some + dedicated appearance / structure / content or the dialog boxes, may + prohibit the unsecured export of payment instruments, or may + prescribe the pass phrase input under its own control. + +2. Message Flow + + The following lists all functions of the IOTP Payment API: + + o Brand Compilation Related API Functions + + "Find Accepted Payment Brand" identifies the accepted payment brands + for any indicated currency amount. + + "Find Accepted Payment Protocol" identifies the accepted payment + protocols for any indicated currency amount (and brand) and returns + payment scheme specific packaged content for brand selection + purposes. + + This function might be used in conjunction with the aforementioned + function or called without any brand identifier. + + "Get Payment Initialization Data" returns additional payment scheme + specific packaged content for payment processing by the payment + handler. + + "Inquire Authentication Challenge" returns the payment scheme + specific authentication challenge value. + + "Check Authentication Response" verifies the returned payment scheme + specific authentication response value. + + "Change Process State" is used (here only) for abnormal termination. + (cf. Payment Processing Related API Functions). + + o Brand Selection Related API Functions + + "Find Payment Instrument" identifies which instances of a payment + instrument of a particular payment brand are available for use in a + payment. + + "Check Payment Possibility" checks whether a specific payment + instrument is able to perform a payment. + + + + + +Hans, et al. Informational [Page 12] + +RFC 3867 Payment API for IOTP November 2004 + + + "Authenticate" forwards any payment scheme specific authentication + data to the IOTP Payment Bridge for processing. + + "Change Process State" is used (here only) for abnormal termination. + (cf. Payment Processing Related API Functions). + + o Payment Processing Related API Functions + + "Start or Resume Payment Consumer/Payment Handler" initiate or resume + a payment transaction. There exist specific API functions for the + two trading roles Consumer and Payment Handler. + + "Continue Process" forwards payment scheme specific data to the + Existing Payment Software and returns more payment scheme specific + data for transmission to the counter party. + + "Change Process State" changes the current status of payment + transactions. Typically, this call is used for termination or + suspension without success. + + o General Inquiry API Functions + + "Remove Payment Log" notifies the IOTP Payment Bridge that a + particular entry has been removed from the Payment Log of the IOTP + Application Core. + + "Payment Instrument Inquiry" retrieves the properties of Payment + Instruments. + + "Inquire Pending Payment" reports any abnormal interrupted payment + transaction known by the IOTP Payment Bridge. + + Payment Processing Related Inquiry API Functions + + "Check Payment Receipt" checks the consistency and validity of IOTP + Payment Receipts, received from the Payment Handler or returned by + "Inquire Process State" API calls. Typically, this function is + called by the Consumer during the final processing of payment + transactions. Nevertheless, this check might be advantageous both + for Consumers and Payment Handlers on failure resolution. + + "Expand Payment Receipt" expands the Packaged Content of IOTP Payment + Receipts as well as payment scheme specific payment receipts into a + form which can be used for display or printing purposes. + + "Inquire Process State" responds with the payment state and the IOTP + Payment Receipt Component. Normally, this function is called by the + Payment Handler for final processing of the payment transaction. + + + +Hans, et al. Informational [Page 13] + +RFC 3867 Payment API for IOTP November 2004 + + + "Start Payment Inquiry" prepares the remote inquiry of the payment + transaction status and responds with payment scheme specific data + that might be needed by the Payment Handler for the Consumer + initiated inquiry processing. + + "Inquire Payment Status" is called by the Payment Handler on Consumer + initiated inquiry requests. This function returns the payment scheme + specific content of the Inquiry Response Block. + + "Continue Process" and "Change Process State" (cf. Payment Processing + Related API Calls) + + o Other API Functions + + "Manage Payment Software" enables the immediate activation of the + Existing Payment Software. Further user input is under control of + the Existing Payment Software. + + "Call Back" provides a general interface for the visualization of + transaction progress by the IOTP Application Core. + + The following table shows which API functions must (+), should (#), + or might (?) be implemented by which Trading Roles. + + API function Consumer Payment Handler Merchant + ------------ -------- --------------- -------- + + Find Accepted Payment Brand + + Find Accepted Payment Protocol # + Find Payment Instrument + + + Get Payment Initialization Data + + Check Payment Possibility + + + Start Payment Consumer + + Start Payment Payment Handler + + Resume Payment Consumer # + Resume Payment Payment Handler # + + Continue Process + + + Inquire Process State + + ? + Change Process State + + ? + Check Payment Receipt + ? + Expand Payment Receipt # ? + + Remove Payment Log ? ? ? + + Inquire Authentication Challenge ? + + + +Hans, et al. Informational [Page 14] + +RFC 3867 Payment API for IOTP November 2004 + + + Authenticate + + Check Authentication Response ? + + Payment Instrument Inquiry ? + Inquire Pending Payment # # + Start Payment Inquiry ? + Inquire Payment Status ? + + Manage Payment Software # ? ? + + Call Back # + + Table 1: Requirements on API Functions by the Trading Roles + + The next sections sketch the relationships and the dependencies + between the API functions. They provide the informal description of + the progress alternatives and depict the communication and + synchronization between the general IOTP Application Core and the + payment scheme specific modules. + +2.1. Authentication Documentation Exchange + + This section describes how the functions in this document are used + together to process authentication. + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Authenticator Inquire Authentication Challenge(Alg1*) -> IPB + Inq. Auth. Challenge Response(Alg1,Ch1) <- IPB + . . . + Inquire Authentication Challenge(Algn*) -> IPB + Inq. Auth. Challenge Response(Algn,Chn) <- IPB + Create and transmit Authentication Request Block + Authenticatee Authenticate(Alg1, Ch1) -> IPB + AuthenticateResponse(...) <- IPB + . . . + Authenticate(Algm, Chm) -> IPB + AuthenticateResponse(Res) <- IPB + Create and transmit Authentication Response Block + Authenticator Check Authentication Response(Algm,Chm,Res)->IPB + Check Auth. Response() <-IPB + Create and transmit Authentication Status Block + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 2. Authentication Message Flows + + + + + + + +Hans, et al. Informational [Page 15] + +RFC 3867 Payment API for IOTP November 2004 + + + 1. (Authenticator Process) None, one or multiple IOTP Payment Bridges + (IPB) are requested for one or multiple authentication challenge + values ("Inquire Authentication Challenge"). Each value is + encapsulated in an IOTP Authentication Request Component. In + addition, the IOTP Application Core may add payment scheme + independent authentication methods. All of them form the final + IOTP Authentication Request Block, which describes the set of + authentication methods being supported by the authenticator and + from which the Authenticatee has to choose one method. + + Note that the interface of the API function is limited to the + response of exactly one algorithm per call. If the IOTP + Application Core provides a choice of algorithms for input, this + choice should be reduced successively by the returned algorithm + ({Alg(i+1)*} is subset of {Algi*}). + + During the registration of new Payment Instruments, the IOTP + Payment Bridge notifies the IOTP Application Core about the + supported authentication algorithms. + + 2. On the presence of an IOTP Authentication Block within the + received IOTP message, the Authenticatee's IOTP Application Core + checks whether the IOTP transaction type in the current phase + actually supports the authentication process. + + For each provided Authentication Request Component, the IOTP + Application Core analyzes the algorithms' names, the transaction + context, and optionally user preferences in order to determine the + system components which are capable to process the authentication + request items. Such system components might be the IOTP + Application Core itself or any of the registered IOTP Payment + Bridges. + + Subsequently, the IOTP Application Core requests the responses to + the supplied challenges from the determined system components in + any order. The authentication trials stop with the first + successful response, which is included in the IOTP Authentication + Response Block. + + Alternatively, the IOTP Application might ask for a user + selection. This might be appropriate, if two or more + authentication algorithms are received that require explicit user + interaction, like PIN or chip card insertion. + + The Authenticatee's organizational data is requested by an IOTP + Authentication Request Block without any content element. On + failure, the authentication (sequence) might be retried, or the + whole transaction might be suspended or cancelled. + + + +Hans, et al. Informational [Page 16] + +RFC 3867 Payment API for IOTP November 2004 + + + 3. (Authenticator Process) The IOTP Application Core checks the + presence of the IOTP Authentication Response Component in the + Authentication Response Block and forwards its content to the + generator of the associated authentication challenge for + verification ("Check Authentication Response"). + + On sole organizational data request, its presence is checked. + + Any verification must succeed in order to proceed with the + transaction. + +2.2. Brand Compilation + + The following shows how the API functions are used together so that + the Merchant can (1) compile the Brand List Component, (2) generate + the Payment Component, and (3) adjust the Order Component with + payment scheme specific packaged content. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Hans, et al. Informational [Page 17] + +RFC 3867 Payment API for IOTP November 2004 + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Merchant For each registered IOTP Payment Bridge + | Find Accepted Payment Brand() -> IPB + | Find Accepted Payment Brand Response (B*) <- IPB + | Find Accepted Payment Protocol(B1) -> IPB + | Find Accepted Payment Protocol Res.(P1*) <- IPB + | . . . + | Find Accepted Payment Protocol(Bn) -> IPB + | Find Accepted Payment Protocol Res.(Pn*) <- IPB + Create one Brand List Component, ideally sharing + common Brand, Protocol Amount, Currency Amount, + and Pay Protocol Elements + Create Trading Protocol Options Block + On brand independent transactions + | Create Brand Selection Component, implicitly + | Get Payment Initialization Data(B1,P1) -> IPB + | Get Payment Initialization Data Res.() <- IPB + | Optionally + | | Inquire Process State() -> IPB + | | Inquire Process State Response(State) <- IPB + | Create Offer Response Block + Transmit newly created Block(s) + Consumer Consumer selects Brand (Bi)/Currency/Protocol (Pj) + from those that will work and generates Brand + Selection Component - at least logically + On brand dependent transaction + | Transmit Brand Selection Component + Merchant On brand dependent transaction + | Get Payment Initialization Data(Bi,Pj) -> IPB + | Get Payment Initialization Data Res.() <- IPB + | Optionally + | | Inquire Process State() -> IPB + | | Inquire Process State Response(State) <- IPB + | Create Offer Response Block + | Transmit newly created Block + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 3. Brand Compilation Message Flows + + 1. The Merchant's commerce server controls the shopping dialog with + its own mechanisms until the Consumer checks out the shopping + cart and indicates the payment intention. The notion shopping + subsumes any non-IOTP based visit of the Merchant Trading Role's + (which subsumes Financial Institutes) web site in order to + negotiate the content of the IOTP Order Component. The + subsequent processing switches to the IOTP based form by the + activation of the Merchant's IOTP aware application. + + + + +Hans, et al. Informational [Page 18] + +RFC 3867 Payment API for IOTP November 2004 + + + 2. The IOTP Application Core inquires for the IOTP level trading + parameters (Consumer's shopping identifier, payment direction, + initial currency amounts, discount rates, Merchant's and Delivery + Handler's Net Locations, Non-Payment Handler's Organizational + Data, initial order information, ....). + + 3. The registered IOTP Payment Bridges are inquired by the IOTP + Application Core about the accepted payment brands ("Find + Accepted Payment Brand"). Their responses provide most of the + attribute values for the compilation of the Brand List + Component's Brand Elements. The IOTP Application Core might + optionally match the returned payment brands with Merchant's + general preferences. + + The IOTP Application Core must provide any wallet identifiers, if + they are required by the IOTP Payment Bridges which signal their + need by specific error codes (see below). Any signaled error + that could not be immediately solved by the IOTP Application Core + should be logged - this applies also to the subsequent API calls + of this section. In this case, the IOTP Application Core creates + an IOTP Error Block (hard error), transmits it to the Consumer, + and terminates the current transaction. + + 4. The IOTP Application Core interrogates the IOTP Payment Bridges + for each accepted payment brand about the supported payment + protocols ("Find Accepted Payment Protocol"). These responses + provide the remaining attribute values of the Brand Elements as + well as all attribute values for the compilation of the Brand + List Component's Protocol Amount and Pay Protocol Elements. + + Furthermore, the organisational data about the Payment Handler is + returned. The IOTP Application Core might optionally match the + returned payment brands with Merchant's general preferences. + + Alternatively, the IOTP Application Core might skip the calls of + "Find Accepted Payment Brands" (cf. Step 3) and issue the "Find + Accepted Payment Protocol" call without any Brand given on the + input parameter list. In this case, the IOTP Payment Bridge + responds to the latter call with the whole set of payment schemes + supported w.r.t. the other input parameters. + + 5. The steps 3 and 4 are repeated during IOTP Value Exchange + transactions - these steps are omitted in the previous figure. + + 6. The IOTP Application Core compiles the Brand List Component(s) + and the IOTP Trading Protocol Options Block. It is recommended + that the "equal" items returned by IOTP Payment Bridge function + calls are shared due to the extensive linking capabilities within + + + +Hans, et al. Informational [Page 19] + +RFC 3867 Payment API for IOTP November 2004 + + + the Brand List Component. However, the compilation must consider + several aspects in order to prevent conflicts - sharing detection + might be textual matching (after normalization): + + o Packaged Content Elements contained in the Brand List Component + (and subsequently generated Payment and Order Components) might + be payment scheme specific and might depend on each other. + + o Currently, IOTP lacks precise rules for the content of the + Packaged Content Element. Therefore, transaction / brand / + protocol / currency amount (in)dependent data might share the + same Packaged Content Element or might spread across multiple + Packaged Content Elements. + + o The Consumer's IOTP Application Core transparently passes the + Packaged Content Elements to the IOTP Payment Bridges which + might not be able to handle payment scheme data of other + payment schemes, accurately. + + The rules and mechanisms of how this could be accomplished are + out of the scope of this document. Furthermore, this document + does not define any further restriction to the IOTP + specification. + + 7. The IOTP Application Core determines whether the IOTP message can + be enriched with an Offer Response Block. This is valid under + the following conditions: + + o All payment alternatives share the attribute values and + Packaged Content Elements of the subsequently generated IOTP + Payment and Order Components. + + o The subsequently generated data does not depend on any IOTP + BrandSelInfo Elements that might be reported by the consumer + within the TPO Selection Block in the brand dependent variant. + + If both conditions are fulfilled, the IOTP Application Core might + request the remaining payment scheme specific payment + initialization data from the IOTP Payment Bridge ("Get Payment + Initialization Data") and compile the IOTP Offer Response Block. + + Optionally, the IOTP Application Core might request the current + process state from the IOTP Payment Bridge and add the inferred + order status to the IOTP Offer Response Block. Alternatively, + IOTP Application might determine the order status on its own. + + As in step 6, the rules and mechanisms of how this could be + accomplished are out of the scope of this document. + + + +Hans, et al. Informational [Page 20] + +RFC 3867 Payment API for IOTP November 2004 + + + 8. The IOTP Application Core compiles the IOTP TPO Message including + all compiled IOTP Blocks and transmits the message to the + Consumer. The IOTP Application Core terminates if an IOTP Offer + Response Block has been created. + + 9. The Consumer performs the Brand Selection Steps (cf. Section 2.3) + and responds with a TPO Selection Block if no IOTP Offer Response + Block has been received. Otherwise, the following step is + skipped. + + 10. On brand dependent transactions, the IOTP Application Core + requests the remaining payment scheme specific payment + initialization data from the IOTP Payment Bridge ("Get Payment + Initialization Data"), compiles the IOTP Offer Response Block, + transmits it to the Consumer, and terminates. Like Step 7, the + IOTP Application Core might access the current process state of + the IOTP Payment Bridge for the compilation of the order status. + + Any error during this process raises an IOTP Error Block. + +2.3. Brand Selection + + This section describes the steps that happen mainly after the + Merchant's Brand Compilation (in a brand independent transaction). + However, these steps might partially interlace the previous process + (in a brand dependent transaction). + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Merchant Merchant generates Brand List(s) containing + Brands, Payment Protocols and Currency Amounts + On brand independent transactions + | Merchant generates Offer Response Block + Consumer Compile set(s) of Brands B/Protocols P + for each set + | Find Payment Instrument(B, P, C) -> IPB + | Find Payment Instrument Response (PI*) <- IPB + Consumer selects Brand/Currency/Payment Instrument + from those that will work and generates Brand + Selection Component + For the Selection + | Get Payment Initialization Data(B,C,PI,P) -> IPB + | Get Payment Initialization Data Response()<- IPB + On brand dependent transaction + | Generate and transmit TPO Selection Block + Merchant On brand dependent transaction + | Merchant checks Brand Selection and generates + | and transmits Offer Response Block + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + + +Hans, et al. Informational [Page 21] + +RFC 3867 Payment API for IOTP November 2004 + + + Figure 4. Brand Selection Message Flows + + 1. The Merchant's commerce server controls the shopping dialog with + its own mechanisms until the Consumer checks out the shopping cart + and indicates his payment intention. The subsequent processing + switches to the IOTP based form by the activation of the + Merchant's IOTP aware application. + + 2. The IOTP Application Core compiles the IOTP Trading Protocol + Options Block which contains the IOTP Brand List Component(s) + enumerating Merchant's accepted payment brands and payment + protocols and initiates the Brand Selection process. + + 3. This first IOTP message activates the Consumer's IOTP aware + application, e.g., the Web browser invokes a helper application + (e.g., Java applet or external application). Its IOTP Application + Core + + o infers the accepted payment brands, payment protocols, payment + direction, currencies, payment amounts, any descriptions etc., + and their relationships from the IOTP message, + + o determines the registered IOTP Payment Bridges, + + o compiles one or multiple sets of brand and protocol such that + the join of all sets describes exactly the payment alternatives + being offered by the Merchant. + + o inquires payment (protocol) support and the known payment + instruments from each registered IOTP Payment Bridge for each + compiled set ("Find Payment Instrument"). However, some IOTP + Payment Bridges may refuse payment instrument distinction. + + The payment protocol support may differ between payment + instruments if the IOTP Payment Bridge supports payment instrument + distinction. + + These API calls are used to infer the payment alternatives at the + startup of any payment transaction (without user unfriendly + explicit user interaction). + + The IOTP Application Core must provide wallet identifiers, if they + are requested by the IOTP Payment Bridges which signal their need + by specific error codes (see below). + + It is recommended that the IOTP Application Core manages wallet + identifiers. But for security reasons, it should store pass + phrases in plain text only in runtime memory. Developers of IOTP + + + +Hans, et al. Informational [Page 22] + +RFC 3867 Payment API for IOTP November 2004 + + + Payment Bridges and payment software modules should provide a thin + and fast implementation - without lengthy initialization processes + - for this initial inquiry step. + + 4. The IOTP Application Core verifies the Consumer's payment + capabilities with the Merchant's accepted payment brands and + currencies, + + o displays the valid payment instruments and payment instrument + independent payment brands (brand and protocol) together with + their purchase parameters (payment direction, currency, + amount), and + + o requests the Consumer's choice or derives it automatically from + any configured preferences. Any selection ties one IOTP + Payment Bridge with the following payment transaction. + + The handling and resolution of unavailable IOTP Payment Bridges + during the inquiry in Step 3 is up to the IOTP Application Core. + It may skip these IOTP Payment Bridges or may allow user supported + resolution. + + Furthermore, it may offer the registration of new payment + instruments when the Consumer is asked for payment instrument + selection. + + 5. The IOTP Application Core interrogates the fixed IOTP Payment + Bridge whether the payment might complete with success ("Check + Payment Possibility"). At this step, the IOTP Payment Bridge may + issue several signals, e.g., + + o payment can proceed immediately, + o required peripheral inclusive of some required physical payment + instrument (chip card) is unavailable, + o (non-IOTP) remote party (e.g., issuer, server wallet) is not + available, + o wallet identifier or pass phrase is required, + o expired payment instrument (or certificate), insufficient + funds, or + o physical payment instrument unreadable. + + In any erroneous case, the user should be notified and offered + accurate alternatives. Most probably, the user might be offered + + o to resolve the problem, e.g., to insert another payment + instrument or to verify the periphery, + o to proceed (assuming its success), + o to cancel the whole transaction, or + + + +Hans, et al. Informational [Page 23] + +RFC 3867 Payment API for IOTP November 2004 + + + o to suspend the transaction, e.g., initiating a nested + transaction for uploading an electronic purse. + + If the payment software implements payment instrument selection on + its own, it may request the Consumer's choice at this step. + + If the check succeeds, it returns several IOTP Brand Selection + Info Elements. + + 6. The Steps 2 to 5 are repeated and possibly interlaced for the + selection of the second payment instrument during IOTP Value + Exchange transactions - this is omitted in the figure above. + + 7. The IOTP Brand Selection Component is generated and enriched with + the Brand Selection Info elements. This component is transmitted + to the Merchant inside a TPO Selection Block if the received IOTP + message lacks the IOTP Offer Response Block. The Merchant will + then respond with an IOTP Offer Response Block (following the + aforementioned compilation rules). + +2.4. Successful Payment + + An example of how the functions in this document are used together to + effect a successful payment is illustrated in the Figure 5. In the + figure 5, PS0, PS1, ..., and PSn indicate the nth PayScheme Packaged + Content data, and [ ] indicates optional. + + (Technically, two payments happen during IOTP Value Exchange + transactions.) + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Consumer Start Payment Consumer(Amount,[PS0]...) -> IPB + Start Payment Cons. Res.([PS1], CS=Cont.) <- IPB + Create and transmit Payment Request Block + Payment Handler Start Payment Pay. Handler(Amount, [PS1]) -> IPB + Start Payment PH Response(PS2, CS=Cont.) <- IPB + Create and transmit Payment Exchange Block + Consumer Continue Process(PS2) -> IPB + Continue Process Response(PS3, CS=Cont.) <- IPB + + ... CONTINUE SWAPPING PAYMENT EXCHANGES UNTIL ... + + Payment Handler Continue Process Response([PSn], CS=End) <- IPB + Request any local payment receipt + | Inquire Process State() -> IPB + | Inquire Proc. State Resp.(State, [Rcp.])<- IPB + Create and transmit Payment Response Block + Terminate transaction, actively + + + +Hans, et al. Informational [Page 24] + +RFC 3867 Payment API for IOTP November 2004 + + + | Change Process State(State) -> IPB + | Change PS Response(State=CompletedOK) <- IPB + Consumer On receipt of final payment scheme data + | Continue Process(PSn) -> IPB + | Continue Process Response(CS=End) <- IPB + Check Payment Receipt(Receipt) -> IPB + Check Payment Receipt Response() <- IPB + Request any local payment receipt + | Inquire Process State() -> IPB + | Inquire Proc. State Resp.(State, [Rcp.])<- IPB + Terminate transaction, actively + | Change Process State(State) -> IPB + | Change PS Response(State=CompletedOk) <- IPB + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 5. Example Payment Message Flows + + 1. After Brand Selection and receipt of the IOTP Offer Response + Block, the Consumer switches from communicating with the Merchant + to communicating with the Payment Handler. + + This might be a milestone requiring the renewed Consumer's + agreement about the payment transaction's continuation. + Particularly, this is a good moment for payment suspension (and + even cancellation), which will be most probably supported by all + payment schemes. Simply, because the actual payment legacy + systems have not yet been involved in the current transaction. + + Such an agreement might be explicit per transaction or automatic + based on configured preferences, e.g., early acknowledgments for + specific payment limits. + + It is assumed, that the transaction proceeds with minimal user + (Consumer and Payment Handler) interaction and that its progress + is controlled by the IOTP Application Core and IOTP Payment + Bridge. + + 2. In order to open the actual payment transaction, the IOTP + Application Core issues the "Start Payment Consumer" request + towards the IOTP Payment Bridge. This request carries the whole + initialization data of the payment transaction being referred to + by the IOTP Payment Bridge for subsequent consistency checks: + + o payment brand and its description from the selected Brand + Element of the IOTP Brand List Component, + o payment instrument from preceding inquiry step, + + + + + +Hans, et al. Informational [Page 25] + +RFC 3867 Payment API for IOTP November 2004 + + + o further payment parameters (currency, amount, direction, + expiration) from the selected Currency Amount element, Brand + List Component, and Payment Component of the IOTP Offer + Response Block, + o payment protocol from the selected IOTP Pay Protocol Element, + o order details contained in the IOTP Order Component which might + be payment scheme specific, + o payment scheme specific data inclusive of the payment protocol + descriptions from the IOTP Protocol Amount Element, and IOTP + Pay Protocol Element, and + o payment scheme specific data inclusive of the payment protocol + descriptions, in which the name attribute includes the prefix + as "Payment:" from the Trading Role Data Component. + + Generally, the called API function re-does most checks of the + "Check Payment Possibility" call due to lack of strong + dependencies between both requests: There might be a significant + delay between both API requests. + + The called API function may return further payment scheme specific + data being considered as payment specific initialization data for + the Payment Handler's IOTP Payment Bridge. + + If the fixed Existing Payment Software implements payment + instrument selection on its own, it may request the Consumer's + choice at this step. + + The IOTP Payment Bridge reports lack of capability quite similarly + to the "Check Payment Possibility" request to the IOTP Application + Core. The Consumer may decide to resolve the problem, to suspend, + or to cancel the transaction, but this function call must succeed + in order to proceed with the transaction. + + Developers of payment modules may decide to omit payment + instrument related checks like expiration date or refunds + sufficiency, if such checks are part of the specific payment + protocol. + + If the IOTP Payment Bridge requests wallet identifiers or pass + phrases anywhere during the payment process, they should be + requested by this API function, too. It is recommended that the + IOTP Application Core stores plain text pass phrases only in + runtime memory. + + Finally, the IOTP Application Core generates the IOTP Payment + Request Block, inserts any returned payment scheme data, and + submits it to the Payment Handler's system. + + + + +Hans, et al. Informational [Page 26] + +RFC 3867 Payment API for IOTP November 2004 + + + 3. The Payment Handler's IOTP Application Core opens the payment + transaction calling the "Start Payment Payment Handler" API + function. The payment brand, its description, payment protocol, + payment specific data, payment direction, currency and payment + amount are determined quite similar to the Consumer's IOTP + Application Core. Furthermore, the content of the IOTP Payment + Scheme Component and the IOTP Brand Selection Info Elements are + passed to this function. + + On success, the Payment Handler's IOTP Payment Bridge responds + with payment scheme specific data. On failures, this non- + interactive server application has to resolve any problems on its + own or to give up aborting the payment transaction. However, the + Consumer may restart the whole payment transaction. Anyway, the + payment log file should reflect any trials of payments. + + Eventually, the Payment Handler informs the Consumer about the + current IOTP Process State using the IOTP Payment Response or IOTP + Error Block. + + Note that the "Start Payment Payment Handler" call might return + the Continuation Status "End" such that payment processing + proceeds with Step 7. + + 4. The IOTP Application Core verifies the presence of the Payment + Exchange Block in the IOTP message and passes the contained + payment scheme specific data to the fixed IOTP Payment Bridge + ("Continue Process") which returns the next IOTP Payment Scheme + Component. + + This Payment Scheme Component is encapsulated in an IOTP Payment + Exchange Block and transmitted to the Payment Handler. + + 5. The Payment Handler's IOTP Application Core verifies the presence + of the Payment Exchange Block and passes the contained payment + scheme specific data to the fixed IOTP Payment Bridge ("Continue + Process") which returns the next IOTP Payment Scheme Component for + encapsulation and transmission to the Consumer. + + 6. The payment process continues with IOTP Payment Exchange Block + exchanges, carrying the payment scheme specific data. Each party + (1) submits the embedded payment scheme specific data + transparently to the appropriate IOTP Payment Bridge calling the + "Continue Process" API function, (2) wraps the returned payment + scheme specific data into an IOTP Payment Exchange Block, and (3) + transmits this block to the counter party. + + + + + +Hans, et al. Informational [Page 27] + +RFC 3867 Payment API for IOTP November 2004 + + + However, the processing of the payment scheme specific data may + fail for several reasons. These are signaled by specific error + codes which are transformed to IOTP Payment Response Blocks + (generated by Payment Handler) or IOTP Error Blocks (both parties + may generate them) and transmitted to the counter party. + + 7. Eventually, the Payment Handler's IOTP Payment Bridge recognizes + the termination of the payment transaction and reports this by the + continuation status "End" on the output parameter of "Continue + Process" (or "Start Payment Payment Handler"). Then, the IOTP + Application Core issues the "Inquire Process State" API call and + verifies whether an IOTP Payment Receipt Component has been + returned. The IOTP Application Core wraps the payment receipt, + the status response, and the optional payment scheme specific data + in an IOTP Payment Response Block and transmits this block to the + Consumer. + + However, any of these API calls may fail or any response might be + incomplete (e.g., lack of payment receipt). Then, the Consumer + has to be notified about the failed processing by an IOTP Error + Block. + + Finally, the Payment Handler terminates the payment transaction + with the "Change Process State" API call without awaiting any + further response from the Consumer. Further failures are not + reported to the Consumer. + + Note that it might be possible that the Consumer's IOTP Payment + Bridge has returned the previous payment scheme specific data with + the continuation status "End". Even in the absence of this + knowledge - this status is not exchanged between the Consumer and + the Payment Handler - the Payment Handler must not supply any + further payment scheme specific data. Such data will be rejected + by the Consumer's IOTP Payment Bridge. + + 8. The Consumer passes the optional payment scheme specific data and + the payment receipt to the fixed IOTP Payment Bridge by "Continue + Process" and "Check Payment Receipt" API calls. + + Afterwards, the IOTP Application Core issues the "Inquire Process + State" API call and verifies whether extensions to the payment + receipt have been returned. + + Finally, the transaction is terminated by calling the "Change + Process State" API function which verifies and synchronizes the + reported payment status with the local one and signals any + inconsistencies. Any Inconsistency and returned status text + should be displayed to the Consumer. + + + +Hans, et al. Informational [Page 28] + +RFC 3867 Payment API for IOTP November 2004 + + + At this point, the payment transaction has already been closed by + the Payment Handler. Therefore, any failure has to be resolved + locally or out-of-band. + +2.5. Payment Inquiry + + In Baseline IOTP, Payment inquiries are initiated by the Consumer in + order to verify the current payment progress and process state at the + remote Payment Handler. In the figure 6, PS1 and PS2 indicate the + first and second PayScheme Packaged Content data, and [ ] indicates + optional. + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Consumer Start Payment Inquiry() -> IPB + Start Payment Inquiry Response([PS1]) <- IPB + Create and transmit Inquiry Request Trading Block + Payment Handler Inquire Payment Status([PS1]) -> IPB + Inquire Payment Status Res.(State, [PS2]) -> IPB + Create and transmit Inquiry Response Trading + Block + Consumer If Payment Scheme Data present + | Continue Process(PS2) -> IPB + | Continue Process Response(CS=End) <- IPB + Change Process State(State) -> IPB + Change Process State Response(State) <- IPB + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 6. Remote Process State Inquiry + + 1. The Consumer might initiate a payment inquiry once the payment + transaction has been opened by the IOTP Application Core, i.e., at + any time after the initial submission of the IOTP Payment Request + Block. The IOTP Application Core requests any additional specific + payment scheme data from the IOTP Payment Bridge which has been + fixed during brand selection (cf. Section 2.3) using the "Start + Payment Inquiry" API request. + + Erroneous API responses should be reported to the Consumer and + valid alternatives (typically retry and cancellation) should be + presented by the IOTP Application Core. + + This request might perform the complete initialization, e.g., + availability check of periphery or pass phrase supplement, and the + IOTP Payment Bridge reports lack of capability quite similarly to + the "Check Payment Possibility" request to the IOTP Application + Core. + + + + + +Hans, et al. Informational [Page 29] + +RFC 3867 Payment API for IOTP November 2004 + + + If the IOTP Payment Bridge requests wallet identifiers or pass + phrases anywhere during the payment process, they should be + requested by this API function, too. It is recommended that the + IOTP Application Core store plain text pass phrases only in + runtime memory. + + The IOTP Application Core encapsulates any Payment Scheme + Component in an IOTP Inquiry Request Block and submits the block + to the Payment Handler. + + 2. The Payment Handler analyses the IOTP Inquire Request Block, maps + the Transaction Identifier to payment related attributes (brand, + consumer and payment identifiers), determines the appropriate IOTP + Payment Bridge, and forwards the request to the this IOTP Payment + Bridge ("Inquire Payment Status"). The IOTP Application Core + transforms the response to an IOTP Inquiry Response Block and + transmits it to the Consumer. + + 3. On receipt of the respective IOTP Inquiry Response Block the + Consumer's IOTP Application Core submits any encapsulated payment + scheme specific data to the IOTP Payment Bridge for verification + ("Continue Process"). + + 4. The IOTP Application Core passes the reported payment status + (except textual descriptions) to the IOTP Payment Bridge ("Change + Process State") for verification purposes and payment status + change. The IOTP Payment Bridge reports any inconsistencies as + well as the final payment status to the IOTP Application Core. + + Any additional information that might be of interest to the + Consumer has to be displayed by the IOTP Payment Bridge or + Existing Payment Software on their own. + +2.6. Abnormal Transaction Processing + +2.6.1. Failures and Cancellations + + The IOTP specification distinguishes between several classes of + failures: + + o Business and technical errors + o Error depths of transport, message and block level + o Transient errors, warnings, and hard errors. + + Any IOTP Payment API has to deal with the receipt of failure + notifications by and failure responses. This proposal has borrowed + the basic mechanisms for error reporting between the IOTP Application + Core and the IOTP Payment Bridge from the actual protocol: Business + + + +Hans, et al. Informational [Page 30] + +RFC 3867 Payment API for IOTP November 2004 + + + errors are reported by Status Components within IOTP Response Blocks + while technical errors are signaled by Error Components within IOTP + Error Blocks. + + Cancellations are mimicked as specific business errors which might be + initiated by each trading party. + + Preferring slim interfaces, this IOTP Payment API introduces one + additional Error Code value for business error indication - errors + can be raised on every API call. On receipt of this value, the IOTP + Application Core has to infer further details by the issuance of the + API function call "Inquire Process State". + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Any Party Issue some API request -> IPB + Error Response(Error Code) <- IPB + On "Business Error" response + | Inquire Process State() -> IPB + | Inquire P.S. Resp.(State, Receipt) <- IPB + Analyze local process state and try to resolve + with optional user interaction + If Process State Change needed + | Change Process State (State) -> IPB + | Change Process State Response(State) <- IPB + If counter party's notification required + | Create Error or Cancel Block (, add to next + | message, ) and transmit it to counter party + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 7. Error Response from IPB + + The specific Completion Codes "ConsCancelled", "MerchCancelled", and + "PaymCancelled" - returned by "Inquire Process State" - determine + that the IOTP Cancel Block has to be created instead of an IOTP Error + Block. + + The rules for determining the required behavior of the IOTP + Application Core are given in the IOTP specification. + + Note that any payment (intermediate) termination, i.e., failures, + cancellations, and even successes are always reported to the IOTP + Payment Bridge by the API function "Change Process State". This API + function does both status changes and consistency checking / + synchronization. Any suspicion of inconsistency should be reported + by the IOTP Payment Bridge for display by the IOTP Application Core. + + + + + + +Hans, et al. Informational [Page 31] + +RFC 3867 Payment API for IOTP November 2004 + + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + Any Party Error Block or Cancel Block Received + If Change Process State required + | Change Process State (State) -> IPB + | Change Process State Response(State) <- IPB + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 8. Error Notification from counter party + + Not every failure might be visible at the IOTP layer, e.g., the + processing of payment transactions might temporarily be hampered by + intermediate failures at the payment scheme or protocol transport + layer which might be resolved by the actual components. + + However, final failures or cancellations have to be reported at the + IOTP layer. E.g., communication time-outs and heavily faulty + communication channels may disable the transaction. + + Any system component may implement time-out recognition and use the + aforementioned API mechanisms for the notification of process state + changes. But, time-outs may happens while communicating with both + the counter party and local system components, like chip card readers + or IOTP Payment Bridges. Anyway, the Consumer's IOTP Application + Core should notify the Consumer about the resolution alternatives, + i.e., retry, suspension, and cancellation. + +2.6.2. Resumption + + Payment transaction resumption may apply at different steps of a + payment transaction: + + o The Consumer's and Payment Handler's view of the transaction might + not be synchronized: Due to different time-out values the payment + transaction may not have been suspended by the counter party. + + Any "Resume Payment ..." API function responds with an Error Code + on non-suspended payment transaction that signals a business + error. Afterwards the IOTP Application Core has to issue the + "Inquire Process State" API call for further analysis of the + process state. + + o One IOTP message sent by one party might not be processed + successfully or even received by the counter party. This needs to + be handled by the actual payment scheme. It is expected that the + IOTP Application Core will not recognize anything. + + + + + + +Hans, et al. Informational [Page 32] + +RFC 3867 Payment API for IOTP November 2004 + + + o IOTP does not provide any specific signal for payment resumption. + On receipt of every IOTP Payment Exchange Block, the IOTP + Application Core has to decide whether this Block belongs to a + pending transaction or to a suspended transaction that should be + resumed. The IOTP Application Core might call the "Inquire + Process State" API function to update any lack of knowledge. + + Any "Resume Payment" API function responds with an Error Code on + non-suspended payment transaction that signals a business error. + Similar, the "Continue Process" API function should report + business errors on non-pending payment transactions. + + o The payment transaction may not have been created at the Payment + Handler (early suspension and failed data transmission). In that + case, the IOTP Application Core should respond with a business + error that signals the repetition of the payment transaction (by + the Consumer). + + Any "Resume Payment", "Continue Process" or "Inquire Process + State" API function should return with an Error Code + "AttValIllegal" on non-existent payment transaction whereby the + further Error Attribute "Names" denote the payment identifier. + + o The IOTP Application Core should always request fresh payment + scheme specific data on resumption - for synchronization purposes + with the Existing Payment Software. Old data in the cache that + has not been sent to the counter party should not be accessed. + + If the Consumer does not reconnect within an acceptable amount of + time, the Payment Handler's system may perform local failure + resolution in order to close the transaction and to retain resources + for other transactions ("Change Process State"). If the Consumer + reconnect afterwards, an IOTP Payment Response or IOTP Error Block + could be generated. + +2.7. IOTP Wallet Initialization + + At startup or on explicit user request the IOTP Application Core + should check its IOTP Payment Bridges' internal status by searching + for pending payment transactions. + + 1. The IOTP Application Core interrogates the registered IOTP Payment + Bridges about pending payment transactions. The IOTP Application + Core may store indicators for pending transactions and use them + for driving any subsequent inquiry ("Inquire Pending Payment"). + + + + + + +Hans, et al. Informational [Page 33] + +RFC 3867 Payment API for IOTP November 2004 + + + 2. If one or more IOTP Payment Bridges report the presence of pending + transactions, the IOTP Application Core may try to suspend + ("Change Process State") or resume (only Consumer: "Resume Payment + Consumer") the pending transactions (on user request). + + The IOTP Payment Bridge may deny the processing of any new payment + transactions until the pending transactions have been processed. + Such denials are signaled by the error code "Business Error". + +2.8. Payment Software Management + + The IOTP Application Core provides only a simple and generic + interface for the registration of new payment methods / instruments + ("Manage Payment Software"). It receives the initial user request + and defers the actual registration to the corresponding IOTP Payment + Bridge. + + The IOTP Application Core may also activate the Existing Payment + Software for further payment instrument and wallet administration. + +3. Mutuality + + The Payment API is formalized using the eXtensible Markup Language + (XML). It defines wrapper elements for both the input parameters and + the API function's response. In particular, the response wrapper + provides common locations for Error Codes and Error Descriptions. + + It is anticipated that this description reflects the logical + structure of the API parameter and might be used to derive + implementation language specific API definitions. + + XML definition: + + <!ELEMENT IotpPaymentApiRequest ( + FindAcceptedPaymentBrand | + FindAcceptedPaymentProtocol | + GetPaymentInitializationData | + FindPaymentInstrument | + CheckPaymentPossiblity | + StartPaymentConsumer | + StartPaymentPaymentHandler | + ResumePaymentConsumer | + ResumePaymentPaymentHandler | + ContinueProcess | + InquireProcessState | + ChangeProcessState | + InquireAuthChallenge | + Authenticate | + + + +Hans, et al. Informational [Page 34] + +RFC 3867 Payment API for IOTP November 2004 + + + CheckAuthResponse | + CheckPaymentReceipt | + ExpandPaymentReceipt | + RemovePaymentLog | + PaymentInstrumentInquiry | + InquirePendingPayment | + ManagePaymentSoftware | + StartPaymentInquiry | + InquirePaymentStatus | + CallBack )> + + <!ATTLIST IotpPaymentApi + xml:lang NMTOKEN #IMPLIED + ContentSoftwareID CDATA #IMPLIED + xmlns CDATA #FIXED + "http://www.iotp.org/2000/08/PaymentAPI" > + + <!ELEMENT IotpPaymentApiResponse (ErrorResponse?, ( + FindAcceptedPaymentBrandResponse | + FindAcceptedPaymentProtocolResponse | + GetPaymentInitializationDataResponse | + FindPaymentInstrumentResponse | + CheckPaymentPossiblityResponse | + StartPaymentConsumerResponse | + StartPaymentPaymentHandlerResponse | + ResumePaymentConsumerResponse | + ResumePaymentPaymentHandlerResponse | + ContinueProcessResponse | + InquireProcessStateResponse | + ChangeProcessStateResponse | + InquireAuthChallengeResponse | + AuthenticateResponse | + CheckAuthResponseResponse | + CheckPaymentReceiptResponse | + ExpandPaymentReceiptResponse | + RemovePaymentLogResponse | + PaymentInstrumentInquiryResponse | + InquirePendingPaymentResponse | + ManagePaymentSoftwareResponse | + StartPaymentInquiryResponse | + InquirePaymentStatusResponse | + CallBackResponse )?)> + + <!ATTLIST IotpPaymentApiResponse + xml:lang NMTOKEN #IMPLIED + ContentSoftwareID CDATA #IMPLIED + xmlns CDATA #FIXED + "http://www.iotp.org/2000/08/PaymentAPI" > + + + +Hans, et al. Informational [Page 35] + +RFC 3867 Payment API for IOTP November 2004 + + + <!ELEMENT ErrorResponse (ErrorLocation+,PaySchemePackagedContent*) > + <!ATTLIST ErrorResponse + xml:lang NMTOKEN #IMPLIED + ErrorCode NMTOKEN #REQUIRED + ErrorDesc CDATA #REQUIRED + Severity(Warning | + TransientError | + HardError) #REQUIRED + MinRetrySecs CDATA #IMPLIED + SwVendorErrorRef CDATA #IMPLIED > + + Most of the attribute items are intended for immediate insertion in + the IOTP Error Block. The attribute values of the Error Location + elements attribute have to enriched and transformed into Error + Location Elements of the Error Component (cf. IOTP Specification). + + Attributes (cf. IOTP Specification): + + xml:lang Defines the language used by attributes or + child elements within this component, unless + overridden by an xml:lang attribute on a child + element. + + ContentSoftwareId Contains information which identifies the + software that generated the content of the + element. Its purpose is to help resolve + interoperability problems that might occur as + a result of incompatibilities between messages + produced by different software. It is a single + text string in the language defined by + "xml:lang". It must contain, as a minimum + problems that might occur as a result of + + o the name of the software manufacturer, + o the name of the software, + o the version of the software, and + o the build of the software. + + ErrorCode Contains an error code which indicates the + nature of the error in the message in error. + Valid values for the Error Code are given in + the following section. This mnemonic enables + the automatic failure resolution of the IOTP + Application Core which analyzes the error code + value in order to determine the continuation + alternatives. + + + + + +Hans, et al. Informational [Page 36] + +RFC 3867 Payment API for IOTP November 2004 + + + ErrorDesc Contains a description of the error in the + language defined by xml:lang. The content of + this attribute is defined by the + vendor/developer of the software that + generated the Error Response Element. + It is intended for user display and provides + detailed explanations about the failure and + its (out-of-band) resolution alternatives. + + Severity Indicates the severity of the error. Valid + values are: + + o Warning. This indicates that although there + is a message in error the IOTP Transaction + can still continue. + + o TransientError. This indicates that the + error in the message in error may be + recovered if the message in error that is + referred to by the "Names" attribute is + resent. + + o HardError. This indicates that there is an + unrecoverable error in the message in error + and the IOTP Transaction must stop. + + MinRetrySecs This attribute should be present if "Severity" + is set to "TransientError". It is the minimum + number of whole seconds which the IOTP aware + application which received the message + reporting the error should wait before + resending the message in error identified by + the "ErrorLocation" attribute. + + If Severity is not set to + "TransientError" then the value of this + attribute is ignored. + + SwVendorErrorRef This attribute is a reference whose value is + set by the vendor/developer of the software + that generated the Error Element. It should + contain data that enables the vendor to + identify the precise location in their + software and the set of circumstances that + caused the software to generate a message + reporting the error. + + + + + +Hans, et al. Informational [Page 37] + +RFC 3867 Payment API for IOTP November 2004 + + + Content: + + ErrorLocation This identifies, where possible, the + element and attribute in the message + in error that caused the Error + Element to be generated. If the + "Severity" of the error is not + "TransientError", more that one + "ErrorLocation" may be specified as + appropriate depending on the nature + of the error and at the discretion of + the vendor/developer of the IOTP + Payment Bridge. + + Its definition coincides with the + IOTP specification whereby the + attributes "IotpMsgRef", "BlkRef" and + "CompRef" are left blank, + intentionally. + + PaySchemePackagedContent cf. Table 5 + +3.1. Error Codes + + The following table lists the valid values for the ErrorCode + attribute of the Error Response Element. The first sentence of the + error description contains the default text that can be used to + describe the error when displayed or otherwise reported. Individual + implementations may translate this into alternative languages at + their discretion. However, not every error code may apply to every + API call. An Error Code must not be more than 14 characters long. + The Error Codes have been taken from the IOTP Specification and + extended by some additional codes which are highlighted by a + preceding asterisk. + + Generally, if the corrupt values have been user supplied, the IOTP + Application Core might prompt for their correction. If the renewal + fails or if the IOTP Application Core skips any renewals and some + notification has to be send to the counter-party, the error code is + encapsulated within an IOTP Error Block. + + However, the IOTP server application reports business errors - + visible at the IOTP layer - in the Status Component of the respective + Response Block. + + The IOTP Application Core may add the attributes (and values) within + the ErrorLocation elements that are omitted by the IOTP Payment + Bridge. + + + +Hans, et al. Informational [Page 38] + +RFC 3867 Payment API for IOTP November 2004 + + + The following table mentions any modification from this general + processing for particular error values. Furthermore, it contains + hints for developers of IOTP Application Core software components + about the processing of error codes. Conversely, developers of IOTP + Payment Bridges get impressions about the expected behavior of the + IOTP Application Core. + + The IOTP Payment API assumes that the IOTP Application Core + implements the dialog boxes needed for error resolution. But it does + not assume, that the IOTP Payment Bridge actually relies on them. + Instead, the IOTP Payment Bridge may try resolution on its own, may + implement specific dialog boxes, and may signal only final failures. + + Note: This abstract document assumes that the API parameters are + exchanged XML encoded. Therefore, several error values might + disappear in lower level language specific derivations. + + Error Value Error Description + ----------- ----------------- + + Reserved Reserved. This error is reserved by the + vendor/developer of the software. Contact + the vendor/developer of the software for + more information (see the SoftwareId + attribute of the Message Id element in the + Transaction Reference Block [IOTP]). + + XmlNotWellFrmd XML not well formed. The XML document is not + well formed. See [XML] for the meaning of + "well formed". + + XmlNotValid XML not valid. The XML document is well + formed but the document is not valid. See + [XML] for the meaning of "valid". + Specifically: + + o the XML document does not comply with the + constraints defined in the IOTP document + type declaration, and + o the XML document does not comply with the + constraints defined in the document type + declaration of any additional [XML-NS] + that are declared. + + The Names attribute might refer some + attributes and elements of the input + parameter list. + + + + +Hans, et al. Informational [Page 39] + +RFC 3867 Payment API for IOTP November 2004 + + + (*)ElNotValid Element not valid. Invalid element in terms + of prescribed syntactical characteristics. + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + elements (if they have ID attributes). + + The IOTP Application Core has to replace the + error code with "XmlNotValid" before + transmission to the counterparty. + + ElUnexpected Unexpected element. Although the XML + document is well formed and valid, an + element is present that is not expected in + the particular context according to the + rules and constraints contained in this + specification. + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + elements (if they have ID attributes). + + ElNotSupp Element not supported. Although the document + is well formed and valid, an element is + present that + + o is consistent with the rules and + constraints contained in this + specification, but + o is not supported by the IOTP Aware + Application which is processing the IOTP + Message. + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + elements (if they have ID attributes). + + ElMissing Element missing. Although the document is + well formed and valid, an element is missing + that should have been present if the rules + and constraints contained in this + specification are followed. + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + elements (if they have ID attributes). + + + + + +Hans, et al. Informational [Page 40] + +RFC 3867 Payment API for IOTP November 2004 + + + ElContIllegal Element content illegal. Although the + document is well formed and valid, the + element contains values which do not conform + the rules and constraints contained in this + specification. + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + element (if they have ID attributes). + + The IOTP Application Core has to replace the + Error Code with "ElNotSupp" before + transmission to the counter party, if the + ErrorLocation elements refer to + non-PackagedContent element. + + EncapProtErr Encapsulated protocol error. Although the + document is well formed and valid, the + Packaged Content of an element contains data + from an encapsulated protocol which contains + errors. + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + element (if they have ID attributes). + + AttUnexpected Unexpected attribute. Although the XML + document is well formed and valid, the + presence of the attribute is not expected in + the particular context according to the + rules and constraints contained in this + specification. + + The AttName attributes of ErrorLocation + elements might refer to the corresponding + attribute tags. + + (*)AttNotValid Attribute not valid. Invalid attribute value + in terms of prescribed syntactical + characteristics. + + The AttName attributes of ErrorLocation + elements might refer to the corresponding + attribute tags. + + The IOTP Application Core has to replace the + error code with "XmlNotValid" before + transmission to the counter party. + + + +Hans, et al. Informational [Page 41] + +RFC 3867 Payment API for IOTP November 2004 + + + AttNotSupp Attribute not supported. Although the XML + document is well formed and valid, and the + presence of the attribute in an element is + consistent with the rules and constraints + contained in this specification, it is not + supported by the IOTP Aware Application + which is processing the IOTP Message. + + AttMissing Attribute missing. Although the document is + well formed and valid, an attribute is + missing that should have been present if the + rules and constraints contained in this + specification are followed. + + The AttName attributes of ErrorLocation + elements might refer to the corresponding + attribute tags. + + If the attribute is required by the IOTP + Document Type Declaration (#REQUIRED) the + hints for non-valid attributes should be + adopted, otherwise these for illegal + attribute values. + + AttValIllegal Attribute value illegal. The attribute + contains a value which does not conform to + the rules and constraints contained in this + specification. + + The AttName attributes of ErrorLocation + elements might refer to the corresponding + attribute tags - valid values are: + + BrandId: illegal/unknown Brand Identifier - + If the brand is not recognized/known by any + IOTP Payment Bridge, the IOTP Application + Core may offer the registration of a new + Payment Instrument. + + PaymentInstrumentId: illegal/unknown + Payment Instrument Identifier - This + indicates a serious communication problem if + the attribute value has been reported by the + same "wallet" on a previous inquiry + requests. The IOTP Application Core has to + replace the error code with + "UnknownError" before transmission to the + counter party. + + + +Hans, et al. Informational [Page 42] + +RFC 3867 Payment API for IOTP November 2004 + + + WalletId: illegal/unknown Wallet Identifier + - It is assumed that the wallet identifier + is checked before the pass phrase. On + invalid wallet identifiers, the IOTP + Application Core may open the dialog in + order to request the correct wallet + identifier. In addition, any pass phrase may + be supplied by the user. The dialog should + indicate the respective payment brand(s). + The IOTP Application Core has to replace the + error code with "UnknownError" before + transmission to the counter party. + + Passphrase: illegal/unknown Pass Phrase - + The IOTP Application Core may open the + dialog in order to request the correct pass + phrase. If the pass phrase is wallet + identifier specific the dialog should + display the wallet identifier. The IOTP + Application Core has to replace the error + code with "TransportError" before + transmission to the counter party. + + Action: illegal / unknown / unsupported + Action + + PropertyTypeList: lists contains illegal / + unknown / unsupported Property Types - The + IOTP Application Core tries only the local + resolution but does never transmit any IOTP + Error Block to the counter party. + + CurrCode: illegal/unknown/unsupported + Currency Code + + CurrCodeType: illegal/unknown/unsupported + Currency Code Type + + Amount: illegal/unknown/unsupported Payment + Amount + + PayDirection: illegal/unknown/unsupported + Payment Direction + + ProtocolId: illegal/unknown/unsupported + Protocol Identifier + + + + + +Hans, et al. Informational [Page 43] + +RFC 3867 Payment API for IOTP November 2004 + + + OkFrom: illegal/unknown/unsupported OkFrom + Timestamp + + OkTo: illegal/unknown/unsupported OkTo + Timestamp + + ConsumerPayId: illegal/unknown Consumer + Payment Identifier + + PaymentHandlerPayId: illegal/unknown Payment + Handler Payment Identifier + + PayId: illegal/unknown Payment Identifier + + AttValNotRecog Attribute Value Not Recognized. The + attribute contains a value which the IOTP + Aware Application generating the message + reporting the error could not recognize. + + The AttName attributes of ErrorLocation + elements might refer to the corresponding + attribute tags. + + MsgTooLarge Message too large. The message is too large + to be processed by the IOTP Payment Bridge + (or IOTP Application Core). + + ElTooLarge Element too large. The element is too large + to be processed by the IOTP Payment Bridge + (or IOTP Application Core). + + The ElementRef attributes of ErrorLocation + elements might refer to the corresponding + elements. + + ValueTooSmall Value too small or early. The value of all + or part of an element content or an + attribute, although valid, is too small. + + The ErrorLocation elements might refer to + the corresponding attribute tags or + elements. + + ValueTooLarge Value too large or in the future. The value + of all or part of an element content or an + attribute, although valid, is too large. + + + + + +Hans, et al. Informational [Page 44] + +RFC 3867 Payment API for IOTP November 2004 + + + The ErrorLocation elements might refer to + the corresponding attribute tags or + elements. + + ElInconsistent Element Inconsistent. Although the document + is well formed and valid, according to the + rules and constraints contained in this + specification: + + o the content of an element is inconsistent + with the content of other elements or + their attributes, or + + o the value of an attribute is inconsistent + with the value of one or more other + attributes. + + The Error Description may contain further + explanations. + + The ErrorLocation elements might refer to + the corresponding attribute tags or elements + that are inconsistent. + + TransportError Transport Error. This error code is used to + indicate that there is a problem with the + transport mechanism that is preventing the + message from being received. It is typically + associated with a "Transient Error". + + The connection to some periphery or the + counter party could not be established, + is erroneous, or has been lost. + + The Error Description may contain further + narrative explanations, e.g., "chip card + does not respond", "remote account manager + unreachable", "Internet connection to xyz + lost", "no Internet connection available", + "no modem connected", or "serial port to + modem used by another application". This + text should be shown to the end user. If + timeout has occurred at the Consumer this + text should be shown and the Consumer may + decide how to proceed - alternatives are + retry, payment transaction suspension, and + cancellation. + + + + +Hans, et al. Informational [Page 45] + +RFC 3867 Payment API for IOTP November 2004 + + + MsgBeingProc Message Being Processed. This error code is + only used with a Severity of Transient + Error. It indicates that the previous + message, which may be an exchange message or + a request message, is being processed and, + if no response is received by the time + indicated by the "MinRetrySecs" attribute, + then the original message should be resent. + + SystemBusy System Busy. This error code is only used + with a Severity of Transient Error. It + indicates that the IOTP Payment Bridge or + Existing Payment Software that received the + API request is currently too busy to handle + it. If no response is received by the time + indicated by the "MinRetrySecs" attribute, + then the original message should be resent. + + The Error Description may provide further + explanations, e.g., "wallet / chip card + reader is unavailable or locked by another + payment transaction", "payment gateway is + overloaded", "unknown chip card reader", or + "unrecognized chip card inserted, change + chip card". + + The Consumer's IOTP Application Core may + display the error description and ask the + Consumer about the continuation - + alternatives are retry, payment transaction + suspension, and cancellation. + + UnknownError Unknown Error. Indicates that the + transaction cannot complete for some reason + that is not covered explicitly by any of the + other errors. The Error description + attribute should be used to indicate the + nature of the problem. + + The ErrorLocation elements might refer to + the corresponding attribute tags or elements + that are inconsistent. + + (*)SyntaxError Syntax Error. An (unknown) syntax error has + occurred. + + + + + + +Hans, et al. Informational [Page 46] + +RFC 3867 Payment API for IOTP November 2004 + + + The ErrorLocation elements might refer to + the corresponding attribute tags or elements + that are inconsistent. + + The IOTP Application Core has to replace the + error code with "XmlNotValid" or + "UnknownError" before transmission to the + counter party. + + (*)ReqRefused Request refused. The API request is + (currently) refused by the IOTP Payment + Bridge. The error description may provide + further explanations, e.g., "wallet / chip + card reader is unavailable or locked by + another payment transaction", "payment + gateway is overloaded", "unknown chip card + reader", or "unrecognized chip card + inserted, change chip card". + + The Consumer's IOTP Application Core may + display the error description and ask the + Consumer about the continuation - + alternatives are retry, payment transaction + suspension, and cancellation. Denials due to + invalid Process States should be signaled by + "BusinessError". Typically, this kind of + error is not passed to the counter party's + IOTP Application Core. Otherwise, it maps to + "TransportError" or "UnknownError". + + (*)ReqNotSupp Request not supported. The API + function(ality) has not been implemented in + the IOTP Payment Bridge. Typically, this + kind of error is not passed to the + counter party's IOTP Application Core. + Otherwise, it maps to "TransportError" or + "UnknownError". + + (*)BusError Business Error. The API request has been + rejected because some payment transaction + has an illegal payment status. + Particularly, this error code is used to + signal any raise of payment business layered + failures. + + The ErrorLocation elements may refer to + payment transactions using the party's + Payment Identifier - it defaults to the + + + +Hans, et al. Informational [Page 47] + +RFC 3867 Payment API for IOTP November 2004 + + + current transaction or might contain the + current payment transaction party's Payment + Identifier - identified by the ElementRef + attribute while the AttName attribute is + fixed with "PayId". + + The IOTP Application Core must inquire the + IOTP Payment Bridge about the actual Process + State which actually encodes the business + error ("Inquire Process State"). + This error code must not be + passed to the counter party's IOTP + Application Core. + + Table 2: Common Error Codes + + The IOTP Payment Bridge may also use the error description in order + to notify the Consumer about further necessary steps for failure + resolution, e.g., "Sorry, your payment transaction failed. + Unfortunately, you have been charged, please contact your issuer." + +3.2. Attributes and Elements + + The following table explains the XML attributes in alphabetical order + - any parenthesized number after the attribute tag is a recommended + maximal length of the attribute value in characters: + + Attribute Description + --------- ----------- + + Amount (11) Indicates the payment amount to be paid in + AmountFrom(11) whole and fractional units of the currency. + AmountTo (11) For example $245.35 would be expressed + "245.35". Note that values smaller than the + smallest denomination are allowed. For + example one tenth of a cent would be + "0.001". + + AuthenticationId An identifier specified by the + authenticator which, if returned by the + organization that receives the + authentication request, will enable the + authenticator to identify which + authentication is being referred to. + + + + + + + +Hans, et al. Informational [Page 48] + +RFC 3867 Payment API for IOTP November 2004 + + + BrandId (128) This contains a unique identifier for the + brand (or promotional brand). It is used to + match against a list of Payment Instruments + which the Consumer holds to determine + whether or not the Consumer can pay with the + Brand. + + Values of BrandId are managed under + procedure being described in the IOTP + protocol specification. + + BrandLogoNetLocn The net location which can be used to + download the logo for the organization (cf. + IOTP Specification). + + The content of this attribute must conform + to [URL]. + + BrandName This contains the name of the brand, for + example "MasterCard Credit". This is the + description of the Brand which is displayed + to the consumer in the Consumer's language + defined by "xml:lang". For example it might + be "American Airlines Advantage Visa". Note + that this attribute is not used for matching + against the payment instruments held by the + Consumer. + + BrandNarrative This optional attribute is + used by the Merchant to indicate some + special conditions or benefit which would + apply if the Consumer selected that brand. + For example "5% discount", "free shipping + and handling", "free breakage insurance for + 1 year", "double air miles apply", etc. + + CallBackFunction A function which is called whenever there is + a change of Process State or payment + progress, e.g., for display updates. However, + the IOTP Payment Bridge may use its own + mechanisms and dialog boxes. + + CallBackLanguageList + A list of language codes which contain, in + order of preference, the languages in which + the text passed to the Call Back function + will be encoded. + + + + +Hans, et al. Informational [Page 49] + +RFC 3867 Payment API for IOTP November 2004 + + + CompletionCode (14) Indicates how the process completed. + It is required if ProcessState is set to + "Failed" otherwise it is ignored. Valid + values as well as recovery options are given + in the IOTP specification. + + The IOTP Payment Bridge may also use the + Status Description to notify the Consumer + about further necessary steps in order to + resolve some kind of business failures, + e.g., + + o "sorry, your payment transaction failed. + Unfortunately, you have been charged, + please contact your issuer." + o "insufficient capacity left (on your + stored value card) for refund", + o "payment failed/chip card error/internal + error, please contact your payment + instrument's issuer" + + ConsumerDesc A narrative description of the Consumer. + + ConsumerPayId (14) An unique identifier specified by the + Consumer that, if returned by the Payment + Handler in another Payment Scheme Component + or by other means, enables the Consumer to + identify which payment is being referred to. + + This unique identifier is generated by the + IOTP Application Core and submitted to the + IOTP Payment Bridge on every API call. It + may equal the Payment Handler Payment + Identifiers but need not necessarily be so. + + The uniqueness extends to multiple payment + instruments, payment brands, payment + protocols, wallet identifiers, and even + multiple IOTP Payment Bridges. + + ContStatus During payment progress, this status value + indicates whether the payment needs to be + continued with further IOTP Payment Scheme + Component exchanges with the remote party. + "End" indicates that the reported payment + scheme data is the last data to be exchanged + with the counter party. + + + + +Hans, et al. Informational [Page 50] + +RFC 3867 Payment API for IOTP November 2004 + + + ContentSoftwareId This contains information that identifies + the software that generated the content of + the element. Its purpose is to help resolve + interoperability problems that might occur + as a result of incompatibilities between + messages produced by different software. It + is a single text string in the language + defined by xml:lang. It must contain, as a + minimum: + + o the name of the software manufacturer, + o the name of the software, + o the version of the software, and + o the build of the software. + + CurrCodeType (14) Indicates the domain of the CurrCode. This + attribute is included so that the currency + code may support nonstandard currencies + such as frequent flyer point, trading + stamps, etc. Its values may be + + o ISO-4217-A, the default, indicates the + currency code is the three-letter + alphabetic code that conform to ISO-4217 + [ISO4217]. + o IOTP indicates that the values of + CurrCode are managed under the procedure + described in [IOTP]. + + CurrCode (14) A code which identifies the currency to be + used in the payment. The domain of valid + currency codes is defined by "CurrCodeType" + + MerchantPayId (14) An private identifier specified by the + Merchant which will enable the Merchant to + identify which payment is being referred to. + It is a pure private item and is never sent + to any other party. It is provided by the + IOTP Payment Bridge on payment preparation + during brand compilation. + + Cf. To "ConsumerPayId" for note about + uniqueness. + + + + + + + + +Hans, et al. Informational [Page 51] + +RFC 3867 Payment API for IOTP November 2004 + + + MerchantOrgId (64) A local item that might refer to some + specific shop in a multi shop environment. + This item is optional and might enrich the + Wallet Identifier which itself can be used + for the same purpose. + + Name Distinguishes between multiple occurrences + of Packaged Content Elements at the same + point in IOTP. For example: + + <ABCD> + <PackagedContent Name='FirstPiece'> + snroasdfnas934k + </PackagedContent> + <PackagedContent Name='SecondPiece'> + dvdsjnl5poidsdsflkjnw45 + </PackagedContent> + </ABCD> + + The "Name" attribute may be omitted, for + example if there is only one Packaged + Content element. + + OkFrom (30) The date and time in UTC Format range + OkTo (30) indicated by the merchant in which the + Payment Handler may accept the payment. + For more information, see [UTC]. + + Passphrase (32) Payment wallets may use pass phrase + protection for transaction data and payment + instruments' data. However, it is assumed + that there exists a public and customizable + payment instrument identifier such that + these identifiers together with their + relationship to payment brands, payment + protocols, payment directions, and currency + amounts can be queried by the IOTP + application without any pass phrase + knowledge. + + PayDirection Indicates the direction in which the + payment for which a Brand is being selected + is to be made. Its values may be: + + o Debit: The sender of the Payment Request + Block (e.g., the Consumer) to which this + Brand List relates will make the payment + to the Payment Handler, or + + + +Hans, et al. Informational [Page 52] + +RFC 3867 Payment API for IOTP November 2004 + + + o Credit: The sender of the Payment Request + Block to which this Brand List relates + will receive a payment from the Payment + Handler. + + PayId (14) This attribute is introduced for API + simplification: + + o The Consumer has to identify PayId and + ConsumerPayId. + + o The Merchant has to identify PayId and + MerchantPayId. + + o The Payment Handler has to identify PayId + and Payment Handler Pay Id. + + + PayInstId This contains the unique identifier used + internally by the IOTP Payment + Bridge/Existing Payment Software. + + PayInstName This contains the user-defined name of the + payment instrument. There exist no + (technical) constraints like uniqueness. The + "xml:lang" attribute denotes the language + encoding of its value. + + PaymentHandlerDesc A narrative description of the Payment + Handler. + + PaymentHandlerPayId An unique identifier specified by the + (14) Payment Handler that, if returned by the + Consumer in another Payment Scheme Component + or by other means, enables the Payment + Handler to identify which payment is being + referred to. It is required whenever it is + known. + + Cf. To "ConsumerPayId" for note about + uniqueness. + + PaymentInstrumentId An identifier for a specific payment + (32) instrument, e.g., "credit card", "Mondex card + for English Pounds". This identifier is + fully customizable. It is assumed, that it + does not contain confidential information or + even an indication of it. The payment + + + +Hans, et al. Informational [Page 53] + +RFC 3867 Payment API for IOTP November 2004 + + + instrument identifier is unique within each + payment brand. It is displayed to the + Consumer during brand selection. + + PayReceiptNameRefs Optionally contains element references to + (32) other elements (containing payment scheme + specific data) that together make up the + receipt. Note that each payment scheme + defines in its supplement the elements that + must be referenced + + The IOTP Application Core should save all + the components referenced so that the + payment receipt can be reconstructed when + required. + + PayReqNetLocn The Net Location indicating where an + unsecured Payment Request message should be + sent if this protocol choice is used. + + The content of this attribute must conform + to [URL] and depends on the Transport + Mechanism. + + PercentComplete (3) A number between 0 and 100 which indicates + the progress of the payment transaction. The + values range between 0 and 99 for pending + and suspended transactions. + + ProcessState Contains a Process State Code that + indicates the current state of the process + being carried out. Valid values are: + + o NotYetStarted. The Payment Request Block + has been received but processing of the + Payment Request has not yet started + + o InProgress. The payment transaction is + pending. The processing of the (Payment) + Request Block has started but it is not + yet complete. + + o (*)Suspended: The payment transaction has + been suspended and can be resumed. + + This process state is mapped to + "InProgress", if it is passed to the + counter party's IOTP Application Core. + + + +Hans, et al. Informational [Page 54] + +RFC 3867 Payment API for IOTP November 2004 + + + o CompletedOk. The processing of the (Payment) + Request Block and any following Payment + Exchange Blocks has completed successfully. + + o Failed. The payment processing has finally + failed for a Business Error. + + o ProcessError. This value is only used + when the Status Component is being used in + connection with an Inquiry Request Trading + Block. It indicates there was a Technical + Error in the Request Block which is being + processed or some internal processing + error. Each party's IOTP Payment Bridge + uses this value in order to notify the + IOTP Application Core about the presence + of technical errors. + + PropertyType (14) The property type defines codes used for + interrogation of specific properties about a + payment instrument. They are unique for each + payment brand. The predefined property "all" + is used on general inquiries. However, these + property types are not used during normal + payment processing. E.g., they may apply to + payment brand specific transactions or + out-of-band failure resolution. + + PropertyDesc The property description carries the + respective human readable property (value)'s + description. + + PropertyValue The actual property value intends automatic + post processing. + + ProtocolBrandId (64)This is an identifier to be used with a + particular payment protocol. For example, + SET and EMV have their own well defined, yet + different, values for the Brand identifier + to be used with each protocol. The valid values + of this attribute are defined in the + supplement for the payment protocol + identified by "ProtocolId" that describes + how the payment protocol works with IOTP. + Identifier maps to at most one Protocol + Brand Identifier. + + + + + +Hans, et al. Informational [Page 55] + +RFC 3867 Payment API for IOTP November 2004 + + + ProtocolId (64) An identifier for a specific payment + protocol and version, e.g., "SETv1.0", + "ecash". Valid values are defined by + supplements to the IOTP specification and + they are unique within each payment brand. + + ProtocolIds A sequence of Protocol Identifiers + + ProtocolName A narrative description of the payment + protocol and its version in the language + identified by "xml:lang". For example + "Secure Electronic Transaction Version 1.0". + Its purpose is to help provide information + on the payment protocol being used if + problems arise. + + SecPayReqNetLocn The Net Location indicating where a secured + Payment Request message should be sent if + this protocol choice is used. + + A secured payment involves the use of a + secure channel such as [TLS] in order + to communicate with the Payment Handler. + + The content of this attribute must conform + to [URL]. + + ReceiverOrgId The Organization Identification which + receives the payment bridge processing + Trading Role Data PackagedContent. + + StatusDesc (256) An optional textual description of the + current process state in the language + identified by "xml:lang" that should be + displayed to the Consumer. The usage of this + attribute is defined in the payment + supplement for the payment method being + used. Particularly, it provides hints for + out-of-band failure resolution. Its length + is limited to 256 characters. + + StyleSheetNetLocn This contains the net location to a style + sheet with visualisation rules for XML + encoded data. + + TimeStamp (30) The date and time in UTC Format when the + payment transaction has been started. + For more information on UTC, see [UTC]. + + + +Hans, et al. Informational [Page 56] + +RFC 3867 Payment API for IOTP November 2004 + + + WalletId (32) Many existing payment wallet software are + multiple wallet capable. The Wallet + Identifier selects the actual wallet. It is + assumed, that the wallet identifier is a + public item, that might be stored by the + IOTP Application Core. + + xml:lang Defines the language used by the Process + State Description attribute (cf. IOTP + Specification) + + Table 3: Attributes + + The following table explains the XML elements in alphabetical order: + + Element Description + ------- ----------- + + Algorithm This contains information which describes + an Algorithm that may be used to generate + the Authentication response. + + The algorithm that may be used is + identified by the Name attribute (cf. IOTP + Specification). + + AuthReqPackagedContent The Authentication Request Packaged + Content originates from a Authentication + (Data/Response) Component's content + whereby the outermost element tags are + prefixed with "AuthReq". Its declaration + coincides with the Packaged Content's + declaration (cf. IOTP Specification). It + encapsulates the authentication challenge + value. The content of this information is + defined in the supplement for a payment + protocol. + + AuthResPackagedContent The Authentication Response Packaged + Content originates from a Authentication + Response Component's content whereby the + outermost element tags are prefixed with + "AuthRes". + + Its declaration coincides with the + Packaged Content's declaration (cf. IOTP + Specification). It encapsulates the + + + + +Hans, et al. Informational [Page 57] + +RFC 3867 Payment API for IOTP November 2004 + + + authentication response value. The + content of this information is defined in + the supplement for a payment protocol. + + BrandPackagedContent Container for further payment brand + description. Its content originates from + a Brand Element content whose outermost + element tags are prefixed with "Brand". + Its declaration coincides with the + Packaged Content's declaration (cf. IOTP + Specification). + + BrandSelBrandInfoPackagedContent + This contains any additional data that + may be required by a particular payment + brand. It forms the content of the Brand + Selection Brand Info Element. + + BrandSelProtocolAmountInfoPackagedContent + This contains any additional data that + may be required by a particular payment + brand in the format. It forms the content + of the Brand Selection Protocol Amount + Info Element. + + BrandSelCurrencyAmountInfoPackagedContent + This contains any additional data that is + payment brand and currency specific in + the format. It forms the content of the + Brand Selection Currency Amount Info + Element. + + MerchantData Any merchant related data that might be + used by the IOTP Payment Bridge for + different purposes, e.g., it might + contain IDs to access some mall data, + but not cryptographic keys. Its Packaged + declaration coincides with the Content's + declaration (cf. IOTP Specification). + + PackagedContent Generic Container for non-IOTP data (cf. + IOTP Specification). + + PayProtocolPackagedContent + The Pay Protocol Packaged Content + originates from a Pay Protocol + Element's content whereby the outermost + element tags are prefixed with + + + +Hans, et al. Informational [Page 58] + +RFC 3867 Payment API for IOTP November 2004 + + + "PayProtocol". It contains information + about the protocol which is used by + the payment protocol. The content of + this information is defined in the + supplement for a payment protocol. Its + declaration coincides with the Packaged + Content's declaration (cf. IOTP + Specification). + + PaySchemePackagedContent + The PayScheme Packaged Content originates + from a Payment Scheme Component's content + whereby the outermost element tags are + prefixed with "PayScheme". Its + declaration coincides with the Packaged + Content's declaration (cf. IOTP + Specification). It carries the payment + specific data. The content of this + information is defined in the supplement + for a payment protocol. + + ProtocolAmountPackagedContent + The Protocol Amount Packaged Content + originates from a Protocol Amount + Element's content whereby the outermost + element tags are prefixed with "Amount". + Its declaration coincides with the + Packaged Content's declaration (cf. IOTP + Specification). It contains information + about the protocol which is used by the + payment protocol. The content of this + information is defined in the supplement + for a payment protocol. + + ProtocolBrandPackagedContent + The Protocol Brand Packaged Content + originates from a Protocol Brand + Element's content whereby the outermost + element tags are prefixed with + "ProtocolBrand". Its declaration + coincides with the Packaged Content's + declaration (cf. IOTP Specification). It + contains information about the brand + which might be used by the payment + protocol. The content of this information + is defined in the supplement for a + payment protocol. + + + + +Hans, et al. Informational [Page 59] + +RFC 3867 Payment API for IOTP November 2004 + + + ResponsePackagedContent + Container for authentication response + data. Its content originates from a + Authentication Response Component's + Packaged Content whose outermost element + tags are prefixed with "Response". Its + declaration coincides with the Packaged + Content's declaration (cf. IOTP + Specification). + + TradingRoleDataPackagedContent + The TradingRoleData Packaged Content + originates from a TradingRoleData + Component's content whereby the outermost + element tags are prefixed with + "TradingRoleData". Its declaration + coincides with the Packaged Content's + declaration (cf. IOTP Specification). It + contains information from Merchant to + Payment Handler via Consumer about the + protocol which is used by the payment. + The content of this information is + defined in the supplement for a payment + protocol. The Name attribute in this + packaged contents must include prefix as + "Payment:" to indicate that the payment + bridge processes this, for example + "Payment:SET-OD". See [SET/IOTP] for + more information. + + The element's declaration coincides with + the Packaged Content's declaration (cf. + IOTP Specification). + + Table 4: Elements + + XML definition: + + <!ENTITY % AuthReqPackagedContent "PackagedContent"> + <!ENTITY % AuthResPackagedContent "PackagedContent"> + + <!ENTITY % BrandPackagedContent "PackagedContent"> + <!ENTITY % BrandSelInfoPackagedContent "PackagedContent"> + <!ENTITY % BrandSelProtocolAmountPackagedContent + "PackagedContent"> + <!ENTITY % BrandSelCurrencyAmountPackagedContent + "PackagedContent"> + <!ENTITY % ProtocolAmountPackagedContent + + + +Hans, et al. Informational [Page 60] + +RFC 3867 Payment API for IOTP November 2004 + + + "PackagedContent"> + <!ENTITY % PayProtocolPackagedContent "PackagedContent"> + <!ENTITY % TradingRoleDataPackagedContent "PackagedContent"> + <!ENTITY % MerchantData "PackagedContent"> + <!ENTITY % PaySchemePackagedContent "PackagedContent"> + +3.3. Process States + + The IOTP Payment API supports six different attribute values that + encode the transaction status from the IOTP's point of view, i.e., + the appropriate point of view at the interface between the IOTP + Application Core and IOTP Payment Bridge. This point of view does + not completely mimic the more detailed view on the actual payment by + the actual Existing Payment Software or IOTP Payment Bridge. + + The following three tables distinguish between the Merchant's, + Consumer's, and Payment Handlers' environment. They extend the + aforementioned explanations towards the mapping between IOTP process + states and the internal payment scheme related states of the Existing + Payment Software/IOTP Payment Bridge. + +3.3.1. Merchant + + The Merchant's point of view of payment is limited to the local + payment initiation being interlaced with order processing because + IOTP assigns the actual payment processing to the Payment Handler. + + ProcessState Description + ------------ ----------- + + NotYetStarted The Payment Transaction exists within the + IOTP Application Core, i.e., the + Merchant's shop has already signaled to + the IOTP Application Core that an IOTP + transaction has been initiated by the + Consumer. + + However, neither any API call has been + issued to the IOTP Payment Bridge nor has + the IOTP Order Request has been created. + + InProgress The IOTP Application changes the process + state to this value when it issues the + first API call to the Payment Bridge + during Brand List compilation. + + + + + + +Hans, et al. Informational [Page 61] + +RFC 3867 Payment API for IOTP November 2004 + + + This value indicates that the Payment + Bridge might have some knowledge about + the expected payment or might have + performed some preparatory tasks (even + with the Payment Handler out-of-band to + IOTP). + + However, this value does not indicate + that any IOTP Order Request has been + created and transmitted to the Consumer. + + Suspended The IOTP transaction has been suspended + before the order request block has been + transmitted to the Consumer. + + Implicitly, the payment is also deferred. + + CompletedOk The IOTP Order Request has been + successfully created and transmitted to + the Consumer. Actually, this process + state indicates only that the order + processing has been finished. + + But it contains no indication about the + status of the actual payment, which is + accepted by the Payment Handler. + + However, successful order processing + signals the IOTP Application Core that a + payment with some specific parameters is + expected within the near future. And this + signal might be used by the Existing + Payment Software for similar purposes. + This attribute might be interpreted as + successful preparation of the payment + system. + + Particularly, it is expected that the + Existing Payment Software maps this IOTP + status value to some other internal + value, e.g., "NotYetStarted", that is more + accurate from its point of view. + + As IOTP provides no communication channel + between the Merchant and Payment Handler, + any change of payment process state will + + + + + +Hans, et al. Informational [Page 62] + +RFC 3867 Payment API for IOTP November 2004 + + + be initiated out-of-band to IOTP, e.g., by + electronic statements of account or + payment scheme specific mechanisms. + + Failed The IOTP transaction, i.e., order + processing, has failed for some + (business) reason and it is known that no + payment will occur. + + This indication might be used to clear + all data about this transaction within + the Existing Payment Bridge (by + "RemovePaymentLog" or + "ChangeProcessState") or to reverse any + preparation (with the Payment Handler + out-of-band to IOTP). + + However, the ideal point of view of IOTP + suspects that the actual payment + transaction has been neither started nor + initiated. + + ProcessError The IOTP transaction, i.e., order + processing, has failed for some + (technical) reason and it is known that + no payment will occur. + + This indication might be used to clear + all data about this transaction within + the Existing Payment Bridge (by + "RemovePaymentLog" or + "ChangeProcessState") or to reverse any + preparation (with the Payment Handler + out-of-band to IOTP). + + However, the ideal point of view of IOTP + suspects that the actual payment + transaction has been neither started nor + initiated. + + Table 5: Merchant + +3.3.2. Consumer + + The Consumer's IOTP Application Core restricts its point of view to + the payment transaction. It is assumed that the IOTP Payment Bridge + handles the preceding brand selection process in a stateless manner. + + + + +Hans, et al. Informational [Page 63] + +RFC 3867 Payment API for IOTP November 2004 + + + ProcessState Description + ------------ ----------- + + NotYetStarted This encodes the initial process state of + any IOTP payment transaction. This value + is set during brand selection but it + normally will not change during the whole brand + selection process. + + InProgress With the issuance of the Start Payment + Consumer API call, the IOTP Application + Core changes the process state to this + value. + + Suspended The payment transaction has been + suspended. Suspension may occur anywhere + during brand selection (with the + Merchant) or payment processing (with the + Payment Handler). On resumption, the IOTP + Application Core and the IOTP Payment + Bridge have to use other internal data to + decide whether brand selection or actual + payment processing needs to be continued, + i.e., whether the process state needs to + be reset to "NotYetStarted" or + "InProgress". + + Note that the Payment API assumes + stateless brand selection by the IOTP + Payment Bridge. Typically, any suspension + during brand selection requires the + repetition of the whole process. Hereby, + the IOTP Application Core might need to + consider any already negotiated + conditions in a brand depended purchase + (brand, protocol). + + CompletedOk The successful payment has been + acknowledged by the Payment Handler, i.e., + the successful IOTP Payment Response has + been received. + + Implicitly, this implies successful order + processing. + + + + + + + +Hans, et al. Informational [Page 64] + +RFC 3867 Payment API for IOTP November 2004 + + + Failed The IOTP transaction, i.e., order or + payment processing, has failed for some + (business) reason. In either case it is + known that the payment will not succeed. + + ProcessError The IOTP transaction, i.e., order or + payment processing, has failed for some + (technical) reason. + + However, the local process state might be + different from that of Payment Handler. + + Table 6: Consumer + +3.3.3. Payment Handler + + The Payment Handler is responsible for the actual payment processing. + New payment transactions are reported by the Consumer with the + transmission of new IOTP Payment Request Blocks. IOTP Payment + Exchange Block are send by the Consumer for payment transaction + continuation and resumption. + + ProcessState Description + ------------ ----------- + + NotYetStarted This encodes the initial process state of + any payment transaction. Typically, this + value will last for a short amount of + time. + + InProgress The IOTP Application Core changes the + process state changes to "InProgress" + when the Payment Handler starts with the + actual processing of the IOTP Payment + Request Block. + + Note that this does not assume that the + "StartPaymentPaymentHandler" API function + has been called. + + Suspended The payment transaction has been + suspended. + + CompletedOk The payment has been processed, + successfully, i.e., the IOTP Payment + Response Block was created and + transmitted to the Consumer. + + + + +Hans, et al. Informational [Page 65] + +RFC 3867 Payment API for IOTP November 2004 + + + Failed The payment transaction, has finally + failed for some (business) reason. + + Note that this value encodes the payment + state reported by the IOTP Payment Bridge + on "InquireProcessState". It neither + reflects whether the payment receipt has + been inquired nor whether the IOTP + Payment Response Block has been created + and submitted to the Consumer. + + ProcessError The payment transaction, has finally + failed for some (technical) reason. + + Note that this value encodes the payment + state reported by the IOTP Payment + Bridge. It does not reflect whether some + IOTP Error Block has been created and + submitted to the Consumer. + + Table 7: Consumer + +4. Payment API Calls + +4.1. Brand Compilation Related API Calls + +4.1.1. Find Accepted Payment Brand + + This API function determines the payment brands being accepted by the + Payment Handler on behalf of the Merchant. + + Input Parameters + + o Payment Direction - provided by the IOTP Application Core + o Currency Code and Currency - provided by the IOTP Application + Core + o Payment Amount - provided by the IOTP Application Core + o Merchant Payment Identifier - Merchant's unique private + reference to the payment transaction + o Merchant Organisation Identifier - used for distinction between + multiple merchants that share the some IOTP merchant system + o Wallet Identifier - managed by the IOTP Application Core + o Merchant Data - specific data used by the IOTP Payment Bridge + which is managed in the IOTP Application Core. + + + + + + + +Hans, et al. Informational [Page 66] + +RFC 3867 Payment API for IOTP November 2004 + + + XML definition: + + <!ELEMENT FindAcceptedPaymentBrand (MerchantData*) > + <!ATTLIST FindAcceptedPaymentBrand + PayDirection (Debit|Credit) #REQUIRED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + MerchantPayId CDATA #REQUIRED + MerchantOrgId CDATA #IMPLIED + WalletID CDATA #IMPLIED > + + Output Parameters + + o Payment Brand Identifier - for insertion in the Brand List + Component's Brand Element + o Payment Brand Name and language annotation - for insertion in + the Brand List Component's Brand Element + o Payment Brand Logo Net Location - for insertion in the Brand + List Component's Brand Element + o Payment Brand Narrative Description - for insertion in the + Brand List Component's Brand Element + o (Brand) Packaged Content - further payment brand description + for insertion in the Brand List Component's Brand Element + + The Existing Payment Software returns an empty list of brand items, + if it does not support any payment brand/payment protocol combination + for the given payment parameters. + + XML definition: + + <!ELEMENT FindAcceptedPaymentBrandResponse (BrandItem*) > + <!ELEMENT BrandItem (BrandPackagedContent*) > + <!ATTLIST BrandItem + BrandId CDATA #REQUIRED + xml:lang NMTOKEN #IMPLIED + BrandName CDATA #REQUIRED + BrandLogoNetLocn CDATA #REQUIRED + BrandNarrative CDATA #IMPLIED > + + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + + + + + + + + +Hans, et al. Informational [Page 67] + +RFC 3867 Payment API for IOTP November 2004 + + +4.1.2. Find Accepted Payment Protocol + + This API function determines the instances of payment protocols (and + optionally the payment brands) being accepted by the Payment Handler + on behalf of the Merchant. The function might be called in two + variants: + + o With the Brand Identifier set on the input parameter list: The + function responds with the payment protocols that fits to the + submitted brand. + + o Without any Brand Identifier - that allows the omission of the + "Find Accepted Payment Brand" API call (cf. Section 4.1.1): This + function responds with both the supported brand identifiers and + the payment protocols being specified by the Brand Elements. + + Input Parameters + + o Brand Identifier - returned by "Find Accepted Payment Brand" + o Payment Direction + o Currency Code and Currency + o Payment Amount + o Merchant Payment Identifier - Merchant's unique private + reference to the payment transaction + o Merchant Organisation Identifier - used for distinction between + multiple merchants that share the some IOTP merchant system + o Wallet Identifier - managed by the IOTP Application Core + o (Brand) Packaged Content - further payment brand description; + returned by "Find Accepted Payment Brand"; this elements are + only provided if the Brand Identifier is set + o Merchant Data - specific data used by the IOTP Payment Bridge + which is managed in the IOTP Application Core. + + XML definition: + + <!ELEMENT FindAcceptedPaymentProtocol (BrandPackagedContent*, + MerchantData?) > + <!ATTLIST FindAcceptedPaymentProtocol + BrandId CDATA #IMPLIED + PayDirection (Debit|Credit) #REQUIRED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + MerchantPayId CDATA #REQUIRED + MerchantOrgId CDATA #IMPLIED + WalletID CDATA #IMPLIED > + + + + + +Hans, et al. Informational [Page 68] + +RFC 3867 Payment API for IOTP November 2004 + + + Output Parameters + + o Payment Protocol Identifier - for insertion in the Brand List + Component's Pay Protocol Element + o Protocol Brand Identifier - for insertion in the Protocol Brand + Element of the Brand List Component's Brand Element + o Payment Protocol Name and language annotation- for insertion in + the Brand List Component's Pay Protocol Element + o Payment Request Net Location - for insertion in the Brand List + Component's Pay Protocol Element + o Secured Payment Request Net Location - for insertion in the + Brand List Component's Pay Protocol Element + o Brand Item List (cf. Section 4.1.1) - there must be at least + one element if no brand identifier has been provided on the + input parameter list. + o (Protocol Amount) Packaged Content - for insertion in the Brand + List Component's Protocol Amount Element + o (Pay Protocol) Packaged Content - for insertion in the Brand + List Component's Pay Protocol Element + o Currency Amount element - quite similar to the definition in + [IOTP], that contain + - refined Currency Code and Currency - for insertion in the + Brand List Component's Currency Amount Element + - refined Payment Amount - for insertion in the Brand List + Component's Currency Amount Element + o Brand - there must be at least one element in each Protocol + Item if no brand identifier has been provided on the input + parameter list. + + XML definition: + + <!ELEMENT FindAcceptedPaymentProtocolResponse (ProtocolItem+, + BrandItem*) > + <!ELEMENT ProtocolItem (ProtocolAmountPackagedContent*, + PayProtocolPackagedContent* + CurrencyAmount+, Brand*,ProtocolBrand*)> + <!ATTLIST ProtocolItem + ProtocolId CDATA #REQUIRED + ProtocolBrandId CDATA #IMPLIED + xml:lang NMTOKEN #IMPLIED + ProtocolName CDATA #REQUIRED + PayReqNetLocn CDATA #IMPLIED + SecPayReqNetLocn CDATA #IMPLIED > + + <!ELEMENT Brand EMPTY > + <!ATTLIST Brand + BrandId CDATA #REQUIRED > + + + + +Hans, et al. Informational [Page 69] + +RFC 3867 Payment API for IOTP November 2004 + + + <!ELEMENT CurrencyAmount EMPTY > + <!ATTLIST CurrencyAmount + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #IMPLIED + Amount CDATA #IMPLIED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.1.3. Get Payment Initialization Data + + This API function provides the remaining initialization data being + required by the Consumer's or Payment Handler's Existing Payment + Software. This function might be called both for "brand dependent" + and "brand independent" transaction types. In either case, this + function is called with one particular brand. + + Input Parameters + + o Brand Identifier - returned by "Find Accepted Payment Brand" + o Merchant Payment Identifier - Merchant's unique private + reference to the payment transaction + o Payment Direction + o Currency Code and Currency - from the Brand List Component's + Currency Amount Element + o Payment Amount - from the Brand List Component's Currency + Amount Element + o Payment Protocol Identifier - from the Brand List Component's + Pay Protocol Element + o Protocol Brand Identifier - from the Protocol Brand Element + which relates to the selected Brand Element, if any + o (TradingRoleData) Receiver Organization Identifier + o OkFrom, OkTo - identical to the entries of the Order Component + + Merchant Payment Identifier + + o Merchant Organisation Identifier - used for distinction between + multiple merchants that share the some IOTP merchant system + o Wallet Identifier and/or Pass Phrase + + Protocol Brand Element + + o (Brand) Packaged Content - further payment brand description, + from the Brand List Component's Brand Element + o (Protocol Amount) Packaged Content - further payment protocol + description, from the Brand List Component's Protocol Amount + Element + + + + +Hans, et al. Informational [Page 70] + +RFC 3867 Payment API for IOTP November 2004 + + + o (Pay Protocol) Packaged Content - further payment protocol + description, from the Brand List Component's Pay Protocol + Element + o (Protocol Brand) Packaged Content - further brand information, + from the Protocol Brand Element of the Brand List Component + which relates to the selected Brand Element, if any + o (Order) Packaged Content - further order description, from the + Order Element + o three Brand Selection Info Packaged Content elements - copied + from the Brand Selection Component on brand dependent purchases + o Brand - additional data about the payment brand + o Protocol Amount - additional data about the payment protocol + o Currency Amount - additional payment brand and currency + specific data + o Merchant Data - specific data used by the IOTP Payment Bridge + which is managed in the IOTP Application Core. + + XML definition: + + <!ELEMENT GetPaymentInitializationData (ProtocolBrand? + BrandPackagedContent* + ProtocolAmountPackagedContent*, + PayProtocolPackagedContent*, + OrderPackagedContent*, + BrandSelBrandInfoPackagedContent*, + BrandSelProtocolAmountInfoPackagedContent*, + BrandSelCurrencyAmountInfoPackagedContent*, + MerchantData*) > + <!ATTLIST GetPaymentInitializationData + BrandId CDATA #REQUIRED + MerchantPayId CDATA #REQUIRED + PayDirection (Debit|Credit) #REQUIRED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + ProtocolId CDATA #REQUIRED + OkFrom CDATA #REQUIRED + OkTo CDATA #REQUIRED + ReceiverOrgId CDATA #IMPLIED + MerchantOrgId CDATA #IMPLIED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + + + + + + + + +Hans, et al. Informational [Page 71] + +RFC 3867 Payment API for IOTP November 2004 + + + Output Parameters + + o OkFrom, OkTo - for insertion in the Payment Component + o (TradingRoleData) Packaged Content - further payment protocol + description; the Name Attribute of the packaged Content + element must include "Payment:" as the prefix, + for example "Payment:SET-OD". For more information, see + [SET/IOTP]. + o (Order) Packaged Content - defaults to the supplied order + packaged content if omitted. + + XML definition: + + <!ELEMENT GetPaymentInitializationDataResponse + (OrderPackagedContent*, + TradingRoleDataPackagedContent*) > + <!ATTLIST GetPaymentInitializationDataResponse + OkFrom CDATA #IMPLIED + OkTo CDATA #IMPLIED> + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.1.4. Inquire Authentication Challenge + + This API function inquires any payment protocol specific + authentication challenge value from the IOTP Payment Bridge. In + Baseline IOTP this API function is called by the Merchant (or + Financial Institution). The IOTP Application Core may propose a + choice of algorithms to the IOTP Payment Bridge. However, the IOTP + Payment Bridge may ignore the proposal and select some other + algorithm. + + The inquiry is assumed to be stateless. E.g., the IOTP Application + Core may check the returned algorithm and stop transaction processing + without notifying the IOTP Payment Bridge. + + The IOTP Application Core may issue several API calls to the IOTP + Payment Bridge to build up the IOTP Authentication Request Block. + Any subsequently submitted choice of algorithms should be constrained + by the accepted algorithms from earlier API responses. + + The IOTP Payment Bridge responds with the Business Error Code if it + does not provide any (more) authentication algorithms and challenges. + + + + + + + +Hans, et al. Informational [Page 72] + +RFC 3867 Payment API for IOTP November 2004 + + + Input Parameters + + o Authentication Identifier - the authenticator may provide its + payment identifier, i.e., Payment Handler or Merchant Payment + Identifier. + o Wallet Identifier and/or Pass Phrase + o set of pre-selected algorithms for authentication + + XML definition: + + <!ELEMENT InquireAuthChallenge (Algorithm*) > + <!ATTLIST InquireAuthChallenge + AuthenticationId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o list of Authentication Challenge Packaged Contents - for + insertion into the IOTP Authentication Request Component + o Algorithm Element - for insertion into the IOTP Authentication + Request Component + + XML definition: + + <!ELEMENT InquireAuthChallengeResponse (AuthReqPackagedContent*, + Algorithm) > + +4.1.5. Authenticate + + The Consumer's IOTP Application Core defers payment protocol specific + authentication processing and the current challenge value to the + active IOTP Payment Bridge. Alternative authentication algorithms + might be tried sequentially or offered to the user for selection. + + Note that the IOTP Application Core has to consider both the current + context and the algorithm in order to determine the responsible IOTP + Payment Bridge. + + Failed authentication is reported by the Business Error Code which + might trigger the inquiry of the details ("Inquire Process State"). + Final failures might be encoded by the process state "Failed". + + + + + + + + + +Hans, et al. Informational [Page 73] + +RFC 3867 Payment API for IOTP November 2004 + + + Input Parameters + + o Authentication Identifier + o Wallet Identifier and/or Pass Phrase + o Authentication Challenge Packaged Content - copied from the + IOTP Authentication Request Component + o Algorithm Element - copied from the IOTP Authentication Request + Component + + XML definition: + + <!ELEMENT Authenticate (Algorithm, AuthReqPackagedContent*) > + <!ATTLIST Authenticate + AuthenticationId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Authentication Response Packaged Content - for insertion into + the IOTP Authentication Response Component + + XML definition: + + <!ELEMENT AuthenticateResponse (AuthResPackagedContent*) > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.1.6. Check Authentication Response + + This API function verifies the Consumer's payment protocol specific + authentication response. In Baseline IOTP this API function is + called by the Merchant (or the Financial Institution). It is called + only if the counter party has responded with an IOTP Authentication + Response Component within the Authentication Response Block. Of + course, the IOTP Application Core traces the need of such an + response. + + Due to the authentication's statelessness, all parameters (algorithm, + challenge and response) are submitted to the IOTP Payment Bridge. + Authentication failure is reported by a Process State different from + "CompletedOK". + + + + + + + + +Hans, et al. Informational [Page 74] + +RFC 3867 Payment API for IOTP November 2004 + + + Input Parameters + + o Authentication Identifier + o Wallet Identifier and/or Pass Phrase + o Authentication Challenge Packaged Content - generated by + previous "Inquire Authentication Challenge" API call + o Algorithm Element + o Authentication Response Packaged Content - copied from the + Authentication Response Component + + XML definition: + + <!ELEMENT CheckAuthResponse (Algorithm, AuthReqPackagedContent*, + AuthResPackagedContent*) > + <!ATTLIST CheckAuthResponse + AuthenticationId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Current Process (Authentication) State + o Completion Code + o Status Description and its language annotation + + XML definition: + + <!ELEMENT CheckAuthResponseResponse EMPTY > + <!ATTLIST CheckAuthResponseResponse + ProcessState (NotYetStarted | + InProgress | + Suspended | + CompletedOk | + Failed | + ProcessError)#REQUIRED + CompletionCode NMTOKEN #IMPLIED + xml:lang NMTOKEN #IMPLIED + StatusDesc CDATA #IMPLIED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + + + + + + + + + + +Hans, et al. Informational [Page 75] + +RFC 3867 Payment API for IOTP November 2004 + + +4.2. Brand Selection Related API Calls + +4.2.1. Find Payment Instrument + + This API function determines which instances of a Payment Brand, + e.g., two Mondex cards, are present. The same physical card may even + represent multiple payment instruments. + + The IOTP Application Core supplies possible payment brand and payment + protocol to the IOTP Payment Bridge that has to be considered when + the IOTP Payment Bridge searches for appropriate payment instruments. + This set represents the (sub)set of payment alternatives being + supported by the Merchant. If the IOTP Application Cote has multiple + possible payment brand/protocol, it can call this function in turn. + + The Existing Payment Software responds with PayInstrument Elements + with empty PayInstId attributes if it does not distinguish between + different payment instruments for the particular payment + alternatives. + + Note that the Payment API assumes that the values of the attributes + BrandId, ProtocolId, ProtocolBrandId and the currency amount suffice + for the determination of the appropriate Packaged Content Element + that will be transmitted to the Payment Handler later on. + + Input Parameters + + o Brand Identifier - copied from the Brand List Component's Brand + Element + o Payment Protocol Identifier and associated Protocol Brand + Identifier + o Payment Direction - copied from the Brand List Component + o Currency Code and Currency - copied from the Currency Amount + Element + o Payment Amount - copied from the Currency Amount Element + o Consumer Payment Identifier - Consumer's unique reference to + the current payment transaction + o Wallet Identifier - managed by the IOTP Application Core + o (Brand) Packaged Content - further payment brand description; + copied from the Brand List Component's Brand Element + o (Protocol Brand) Element - further information; copied from the + Protocol Brand Element of the Brand List Component which + relates to the Consumer selected Brand Element, if any. + o (Protocol Amount) Packaged Content - further payment protocol + description, copied from the Brand List Component's Protocol + Amount Element + + + + + +Hans, et al. Informational [Page 76] + +RFC 3867 Payment API for IOTP November 2004 + + + o Element (Protocol) Packaged Content - further payment protocol + description, copied from the Brand List Component's Pay + Protocol Element + + XML definition: + + <!ELEMENT FindPaymentInstrument (BrandPackagedContent*, + ProtocolBrand?, + PayProtocolPackagedContent*, + ProtocolAmountPackagedContent*) > + <!ATTLIST FindPaymentInstrument + BrandId CDATA #REQUIRED + ProtocolId CDATA #REQUIRED + PayDirection (Debit|Credit) #REQUIRED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + ConsumerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED > + + Output Parameters + + o The known Payment Instrument Identifiers, these are internal + values + o The user-defined names of the payment instrument and their + language encoding + + The Existing Payment Software responds with an empty list of + identifiers, either if it does not distinguish between different + payment instruments or if there are no registered payment + instruments available despite brand support for at least one + (unspecified) payment protocol. In the latter case, the IOTP + Payment Bridge has to request the registration of a suitable + payment instrument at a subsequent step of the payment process. + + XML definition: + + <!ELEMENT FindPaymentInstrumentResponse (PayInstrument*) > + <!ELEMENT PayInstrument EMPTY > + <!ATTLIST PayInstrument + Id CDATA #REQUIRED + xml:lang NMTOKEN #IMPLIED + PayInstName CDATA #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + + + + + +Hans, et al. Informational [Page 77] + +RFC 3867 Payment API for IOTP November 2004 + + +4.2.2. Check Payment Possibility + + This API function checks whether a payment (both debit and credit) + can go ahead. It can be used, for example, to check + + o if there are sufficient funds available in a particular currency + for an electronic cash payment brand, + o whether there is sufficient value space left on the payment + instrument for payment refund, + o whether required system resources are available and properly + configured, e.g., serial ports or baud rate, + o whether environment requirements are fulfilled, e.g., chip card + reader presence or Internet connection. + + If the payment method is based on external components, e.g., magnetic + stripe or chip cards, and the check accesses the medium, the existing + payment method should not mutually exclusive lock system resources, + e.g., serial port or modem, that may also be required by other + Existing Payment Software, e.g., multiple payment software components + may share the same card reader. If this happens for API internal + request processing, the function has to unlock these components prior + to return. Otherwise, the payment may not proceed if the Consumer + cancels immediately and decides to use another payment instrument. + In this event the previous IOTP Payment Bridge is not notified about + the change. + + This function call happens immediately after the Consumer's payment + instrument selection. For example, if the payment instrument is a + chip card, that is not inserted in the chip card reader, the Consumer + may be prompted for its insertion. However, the Consumer should be + able to hit some 'skip' button, if the payment check is part of the + actual payment protocol, too. Finally, the IOTP Payment Bridge may + provide only a subset of these capabilities or may even directly + generate a successful response without any checks. + + Input Parameters + + o Brand Identifier - user selection + o Payment Instrument Identifier - user selection + o Currency Code and Currency Code Type - copied from the selected + Currency Amount Element + o Payment Amount - copied from the selected Currency Amount Element + o Payment Direction - copied from the selected Trading Protocol + Option Block + o Protocol Identifier - copied from the selected Pay Protocol + Element + + + + + +Hans, et al. Informational [Page 78] + +RFC 3867 Payment API for IOTP November 2004 + + + o Protocol Brand Identifier - copied from the selected Protocol + Brand Element of the Brand List Component which relates to the + selected Brand Element, if any + o Consumer Payment Identifier - Consumer's unique reference to the + current payment transaction + o Wallet Identifier and/or Pass Phrase + o (Brand) Packaged Content - copied from the selected Brand Element + o (Protocol Amount) Packaged Content - copied from the selected + Protocol Amount Element + o (Protocol) Packaged Content - copied from the selected Pay + Protocol Element + o (Protocol Brand) Packaged Content - copied from the selected + Protocol Brand Element of the Brand List Component which relates + to the selected Brand Element, if any + + XML definition: + + <!ELEMENT CheckPaymentPossibility (BrandPackagedContent*, + ProtocolBrand? + ProtocolAmountPackagedContent*, + PayProtocolPackagedContent*> + <!ATTLIST CheckPaymentPossibility + BrandId CDATA #REQUIRED + PaymentInstrumentId CDATA #IMPLIED + PayDirection (Debit|Credit) #REQUIRED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + ProtocolId CDATA #REQUIRED + ConsumerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o three Brand Selection Info Packaged Content elements - for + insertion into the Brand Selection component + o Brand - additional data about the payment brand + o Protocol Amount - additional data about the payment protocol + o Currency Amount - additional payment brand and currency specific + data + + + + + + + + + + +Hans, et al. Informational [Page 79] + +RFC 3867 Payment API for IOTP November 2004 + + + XML definition: + + <!ELEMENT CheckPaymentPossibilityResponse + (BrandSelBrandInfoPackagedContent*, + BrandSelProtocolAmountInfoPackagedContent*, + BrandSelCurrencyAmountInfoPackagedContent*) > + <!ATTLIST CheckPaymentPossibilityResponse > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.3. Payment Transaction Related API calls + + These Payment API calls may be made either by the Consumer's or + Payment Handler's IOTP Application Core. + +4.3.1. Start Payment Consumer + + This API function initiates the actual payment transaction at the + Consumer side. The IOTP Payment Bridge and the Existing Payment + Software perform all necessary initialization and preparation for + payment transaction processing. This includes the reservation of + external periphery. E.g., 1) the Consumer's chip card reader needs + to be protected against access from other software components, 2) the + insertion of the chip card may be requested, 3) the Internet + connection may be re-established, or 4) the Payment Handler may open + a mutual exclusive session to the security hardware. + + The IOTP Payment Bridge monitors the payment progress and stores the + current payment states such that resumption - even after power + failures - remains possible. Note that the IOTP Application Core + supplies only a subset of the following input parameter to the + associated resumption API function and refers to the payment + transaction through the party's payment identifier. + + Input Parameters + + o Brand Identifier - copied from the selected Brand Element + o Payment Instrument Identifier - the user selection + o Currency Code and Currency - copied from the selected Currency + Amount Element + o Payment Amount - copied from the selected Currency Amount + Element + o Payment Direction - copied from the Brand List Component + o Protocol Identifier - copied from the selected Payment Protocol + Element + + + + + +Hans, et al. Informational [Page 80] + +RFC 3867 Payment API for IOTP November 2004 + + + o Protocol Brand Element - further information; copied from the + Protocol Brand Element of the Brand List Component which + relates to the selected Brand Element, if any + o OkFrom, OkTo - copied from the Payment Component + o Consumer Payment Identifier - Consumer's unique reference to + the current payment transaction + o Wallet Identifier and/or Pass Phrase + o Call Back Function - used for end user notification/logging + purposes + o Call Back Language List. This list is required if the Call Back + Function is set + o (Brand) Packaged Content - further payment brand description; + copied from the selected Brand Element's content + o (Protocol Amount) Packaged Content - further payment protocol + description; copied from the selected Protocol Amount Element's + content + o (Payment Protocol) Packaged Content - further payment protocol + description; copied from the selected Pay Protocol Element's + content + o (Order) Packaged Content - further order description, copied + from the Order Component + + XML definition: + + <!ELEMENT StartPaymentConsumer (BrandPackagedContent*, + ProtocolBrand? + ProtocolAmountPackagedContent*, + PayProtocolPackagedContent*, + OrderPackagedContent*) > + <!ATTLIST StartPaymentConsumer + BrandId CDATA #REQUIRED + PaymentInstrumentId CDATA #IMPLIED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + PayDirection (Debit|Credit) #REQUIRED + ProtocolId CDATA #REQUIRED + ProtocolBrandId CDATA #IMPLIED + OkFrom CDATA #REQUIRED + OkTo CDATA #REQUIRED + ConsumerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED + CallBackFunction CDATA #IMPLIED + CallBackLanguageList NMTOKENS #IMPLIED > + + + + + + +Hans, et al. Informational [Page 81] + +RFC 3867 Payment API for IOTP November 2004 + + + Output Parameters + + o Continuation Status + o (Payment Scheme) Packaged Content - for insertion into the + Payment Scheme Component of the IOTP Payment Request Block + + The IOTP Application Core is allowed to reissue this request several + times on failed analyses of the response. + + XML definition: + + <!ELEMENT StartPaymentConsumerResponse + (PaySchemePackagedContent*) > + <!ATTLIST StartPaymentConsumerResponse + ContStatus (End|Continue) #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.3.2. Start Payment Payment Handler + + This API function initializes the Consumer initiated payment + transaction at the Payment Handler's side. Similar to the Consumer's + system, the IOTP Payment Bridge and the Existing Payment Software + perform all necessary initialization and preparation for payment + transaction processing. + + Input Parameters + + o Brand Identifier - copied from the Consumer selected Brand + Element + o Consumer Payment Identifier - copied from the Payment Scheme + Component + o Currency Code and Currency - copied from the Consumer selected + Currency Amount Element + o Payment Amount - copied from the Consumer selected Currency + Amount Element + o Payment Direction - copied from the Brand List Component + o Protocol Identifier - copied from the Consumer selected + Payment Protocol Element + o Protocol Brand Identifier - copied from the Brand Protocol + Element of the Brand List Component which relates to the + Consumer selected Brand Element, if any + o OkFrom, OkTo - copied from the Payment Component + o Payment Handler Payment Identifier - Payment Handler's unique + reference to the current payment transaction + o Merchant Organisation Identifier - copied from the Merchant's + Organisation Element + + + +Hans, et al. Informational [Page 82] + +RFC 3867 Payment API for IOTP November 2004 + + + o Wallet Identifier - renaming to till identifier neglected - + and/or Pass Phrase + o Call Back Function - used for end user notification/logging + purposes + o Call Back Language List. This list is required if the call + back function is set + o (Brand) Packaged Content - further payment brand description; + copied from the Consumer selected Brand Element's content + o (Protocol Brand) Packaged Content - further information; copied + from the Protocol Brand Element of the Brand List Component + which relates to the Consumer selected Brand Element, if any. + o (Protocol Amount) Packaged Content - further payment protocol + description; copied from the Consumer selected Protocol Amount + Element's content + o (Protocol) Packaged Content - further payment protocol + description; copied from the Consumer selected Pay Protocol + Element's content + o (TradingRoleData) Packaged Content - further payment protocol + description; the Name Attribute of the packaged contents must + include "Payment:" as the prefix, for example "Payment:SET-OD". + For more information, see [SET/IOTP]. + o Three Brand Selection Info Packaged Content Elements - copied + from the Brand Selection Component + o Brand - additional data about the payment brand + o Protocol Amount - additional data about the payment protocol + o Currency Amount - additional payment brand and currency + specific data + o (Payment Scheme) Packaged Content. + + XML definition: + + <!ELEMENT StartPaymentPaymentHandler (BrandPackagedContent*, + ProtocolBrand?, + ProtocolAmountPackagedContent*, + PayProtocolPackagedContent*, + BrandSelBrandInfoPackagedContent*, + BrandSelProtocolAmountInfoPackagedContent*, + BrandSelCurrencyAmountInfoPackagedContent*, + TradingRoleDataPackagedContent*, + PaySchemePackagedContent*) > + <!ATTLIST StartPaymentPaymentHandler + BrandId CDATA #REQUIRED + ConsumerPayId CDATA #IMPLIED + CurrCodeType NMTOKEN 'ISO4217-A' + CurrCode CDATA #REQUIRED + Amount CDATA #REQUIRED + PayDirection (Debit|Credit) #REQUIRED + ProtocolId CDATA #REQUIRED + + + +Hans, et al. Informational [Page 83] + +RFC 3867 Payment API for IOTP November 2004 + + + OkFrom CDATA #REQUIRED + OkTo CDATA #REQUIRED + PaymentHandlerPayId CDATA #REQUIRED + MerchantOrgId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED + CallBackFunction CDATA #IMPLIED + CallBackLanguageList NMTOKENS #IMPLIED > + + Output Parameters + + o Continuation Status + o (Payment Scheme) Packaged Content - for insertion into the + Payment Scheme Component of the IOTP Payment Exchange Block + + The response message must contain payment schema data if the + continuation status signals "Continue". The IOTP Application Core is + allowed to reissue this request several times on failed analyses of + the response. + + XML definition: + + <!ELEMENT StartPaymentPaymentHandlerResponse + (PaySchemePackagedContent*) > + <!ATTLIST StartPaymentPaymentHandlerResponse + ContStatus (End|Continue) #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.3.3. Resume Payment Consumer + + This API function resumes a previously suspended payment at the + Consumer side. Resumption includes the internal inquiry of the + payment transaction data, e.g., payment amount, protocol identifier, + and the whole initialization as it has been applied on the "Start + Payment Consumer" API request. + + It is up to the IOTP Application Core to decide whether an IOTP + Payment Request Block or a IOTP Payment Exchange Block needs to be + generated. One indicator might be the receipt of a previous IOTP + Payment Exchange Block from the Payment Handler, e.g., the knowledge + of the Payment Handler Payment Identifier. + + Input Parameters + + o Consumer Payment Identifier + o Wallet Identifier and/or Pass Phrase + + + +Hans, et al. Informational [Page 84] + +RFC 3867 Payment API for IOTP November 2004 + + + o Call Back Function - used for end user notification/logging + purposes + + XML definition: + + <!ELEMENT ResumePaymentConsumer EMPTY > + <!ATTLIST ResumePaymentConsumer + ConsumerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED + CallBackFunction CDATA #IMPLIED + CallBackLanguageList NMTOKENS #IMPLIED > + + Output Parameters + + o Continuation Status + o (Payment Scheme) Packaged Content - for insertion in the + Payment Scheme Component of the next IOTP message (Payment + Exchange or Request Block). + + The IOTP Application Core is allowed to reissue this request several + times on failed analyses of the response. However, the IOTP Payment + Bridge might reject the resumption request by using the "AttNotSupp" + Error Code "naming" the Consumer Payment Identifier attribute. Then + the Consumer has to apply normal error processing to the current + (sub-)transaction and to issue a new Payment Request Block to the + Payment Handler. + + XML definition: + + <!ELEMENT ResumePaymentConsumerResponse + (PaySchemePackagedContent*) > + <!ATTLIST ResumePaymentConsumerResponse + ContStatus (End|Continue) #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.3.4. Resume Payment Payment Handler + + This API function resumes a payment at the Payment Handler side. + + Input Parameters + + o Payment Handler Payment Identifier + o Wallet Identifier - renaming to till identifier neglected - and + Pass Phrase + + + + +Hans, et al. Informational [Page 85] + +RFC 3867 Payment API for IOTP November 2004 + + + o Call Back Function - used for end user notification/logging + purposes + o Call Back Language List. This list is required if the Call Back + Function is set + o (Payment Scheme) Packaged Content - copied from the Payment + Scheme Component of the received IOTP message (Payment Exchange + or Request Block). + + XML definition: + + <!ELEMENT ResumePaymentPaymentHandler + (PaySchemePackagedContent*) > + <!ATTLIST ResumePaymentPaymentHandler + PaymentHandlerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED + CallBackFunction CDATA #IMPLIED + CallBackLanguageList NMTOKENS #IMPLIED > + + Output Parameters + + o Continuation Status + o (Payment Scheme) Packaged Content - for insertion in the + Payment Scheme Component of the next Payment Exchange Block. + + The response message contains payment schema specific data if the + continuation status signals "Continue". The IOTP Application Core is + allowed to reissue this request several times on failed analyses of + the response. + + XML definition: + + <!ELEMENT ResumePaymentPaymentHandlerResponse + (PaySchemePackagedContent*) > + <!ATTLIST ResumePaymentPaymentHandlerResponse + ContStatus (End|Continue) #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.3.5. Continue Process + + This API function passes one specific IOTP Payment Scheme Component, + i.e., the encapsulated Packaged Content elements, received from the + counter party (e.g., Consumer) to the IOTP Payment Bridge and + responds with the next IOTP Payment Scheme Component for submission + to the counter party. + + + + +Hans, et al. Informational [Page 86] + +RFC 3867 Payment API for IOTP November 2004 + + + Input Parameters + + o Payty's Payment Identifier + o Process (Transaction) Type which distinguishes between Payments + and Inquiries. + o Wallet Identifier and/or Pass Phrase + o (Payment Scheme) Packaged Content - copied from the Payment + Scheme Component of the received Payment Exchange Block or from + the Error Block. + + Each party should set the payment identifier with the local + identifier (Consumer: ConsumerPayId; Merchant: MerchantPayId; Payment + Handler: PaymentHandlerPayId). + + XML definition: + + <!ELEMENT ContinueProcess (PaySchemePackagedContent+) > + <!ATTLIST ContinueProcess + PayId CDATA #REQUIRED + ProcessType (Payment | Inquiry) 'Payment' + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Continuation Status + o (Payment Scheme) Packaged Content - for insertion in the + Payment Scheme Component of the next Payment Exchange Block or + final Payment Response Block + + The response message contains payment schema data if the continuation + status signals "Continue". The IOTP Payment Bridge must signal + "End", if the payment scheme data was received within an IOTP Error + Block containing an Error Component with severity HardError. + + XML definition: + + <!ELEMENT ContinueProcessResponse (PaySchemePackagedContent*) > + <!ATTLIST ContinueProcessResponse + ContStatus (End|Continue) #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + + + + + + + + +Hans, et al. Informational [Page 87] + +RFC 3867 Payment API for IOTP November 2004 + + +4.3.6. Change Process State + + The IOTP Application Core changes the current payment status by this + request. The IOTP Payment Bridge may be notified about business + level normal termination, cancellation, suspension, and processing + errors. Notification happens by requesting the intended process + state. + + The IOTP Payment Bridge processes the status change and reports the + result. + + The IOTP Application Core has to analyze any returned process status + in order to check whether the IOTP Payment Bridge has agreed to or + declined the status switch. E.g., the submitted Process State + "CompleteOk" may lead to the Payment Status "Failed" if the payment + transaction has already failed. + + Transaction Suspension is notified by the newly introduced Process + State "Suspended". The other attribute values have been taken from + the IOTP specification. + + This API function might be called by the Consumer, Merchant, or + Payment Handler for each payment transaction anytime after the + issuance of "FindPaymentInstrument" to the IOTP Payment Bridge by the + Consumer, the issuance of "FindAcceptedPaymentBrand" by the Merchant, + or the issuance of "StartPaymentPaymentHandler" by the Payment + Handler. + + The Process States "CompletedOk", "Failed", and "ProcessError" are + final in the sense that they can not be changed on subsequent calls. + However, the API function should not return with an error code if + such an incompatible call has been issued. Instead it should report + the old unchanged Process State. + + Unknown payment transactions are reported by the Error Code + "AttValInvalid" pointing to the PayId attribute. + + Input Parameters + + o Party's Payment Identifier + o intended Payment Status + o intended Completion Code + o Process (Transaction) Type which distinguishes between Payments + and Inquiries. + o Wallet Identifier and/or Pass Phrase + + + + + + +Hans, et al. Informational [Page 88] + +RFC 3867 Payment API for IOTP November 2004 + + + XML definition: + + <!ELEMENT ChangeProcessState EMPTY > + <!ATTLIST ChangeProcessState + PayId CDATA #REQUIRED + ProcessState (NotYetStarted | + InProgress | + Suspended | + CompletedOk | + Failed | + ProcessError) #REQUIRED + CompletionCode NMTOKEN #IMPLIED + ProcessType (Payment | Inquiry) 'Payment' + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Process State and Percent Complete + o Completion Code + o Status Description and its language annotation + + XML definition: + + <!ELEMENT ChangeProcessStateResponse EMPTY > + <!ATTLIST ChangeProcessStateResponse + ProcessState (NotYetStarted | + InProgress | + Suspended | + CompletedOk | + Failed | + ProcessError) #REQUIRED + PercentComplete CDATA #IMPLIED + CompletionCode NMTOKEN #IMPLIED + xml:lang NMTOKEN #IMPLIED + StatusDesc CDATA #IMPLIED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.4. General Inquiry API Calls + + The following calls are not necessarily assigned to a payment + transaction and may be issued at any time. There are no dependencies + on any other calls. + + + + + + +Hans, et al. Informational [Page 89] + +RFC 3867 Payment API for IOTP November 2004 + + +4.4.1. Remove Payment Log + + The IOTP Application Core notifies the IOTP Payment Bridge and/or the + corresponding Existing Payment Software via IOTP Payment Bridge that + any record in the Payment Log file, that deals with the listed + payment transaction, might be removed. + + Input Parameters + + o Party's Payment Identifier + o Wallet Identifier and/or Pass Phrase + + XML definition: + + <!ELEMENT RemovePaymentLog EMPTY > + <!ATTLIST RemovePaymentLog + PayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + XML definition: + + <!ELEMENT RemovePaymentLogResponse EMPTY > + <!ATTLIST RemovePaymentLogResponse > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.4.2. Payment Instrument Inquiry + + This API function retrieves the properties of the Payment Instrument. + The Payment Instrument Identifier could be omitted if this identifier + is derived by other means, e.g., by analysis of the currently + inserted chip card. If the Payment instrument could not uniquely + determined, the IOTP Payment Bridge may provide suitable dialogs for + user input. + + E.g., this API function might be used during problem resolution with + the Customer Care Provider of the issuer of the payment instrument, + in order to inquire payment instrument specific values. + + Input parameters + + o Brand Identifier + o Payment Instrument Identifier + o Protocol Identifier + + + +Hans, et al. Informational [Page 90] + +RFC 3867 Payment API for IOTP November 2004 + + + o Wallet Identifier and/or Pass Phrase + o Property Type List - sequence of values whose language is + identified by xml:lang + o (Brand) PackagedContent Content - further payment brand + description + o Protocol Brand Content - further payment brand information + o (Protocol Amount) PackagedContent Content - further payment + protocol description + o (Pay Protocol) PackagedContent Content - further payment + protocol description + + The codes in the property type list are of two types: + + o generic codes which apply to all payment methods but might be + unavailable + o Payment Brand specific codes. + + Generic codes for the Property Type List are: + + Property Type Meaning + Balance Current balance + Limit Maximum balance + PaymentLimit Maximum payment transaction limit + Expiration Expiration date + Identifier Issuer assigned identifier of the payment + instrument. Usually, it does not match with + the API's payment instrument identifier. + LogEntries Number of stored payment transaction + entries. The entries are numbered from 0 + (the most recent) to some non-negative + value for the oldest entry. + PayAmountn Payment Amount of the n-th recorded payment + transaction, n may negative + PayPartyn Remote party of the n-th payment recorded + transaction, n may negative + PayTimen Time of the n-th payment recorded + transaction, n may negative + + XML definition: + + <!ELEMENT PaymentInstrumentInquiry (BrandPackagedContent*, + ProtocolBrand?, + ProtocolAmountPackagedContent*, + PayProtocolPackagedContent*) > + <!ATTLIST PaymentInstrumentInquiry + BrandId CDATA #REQUIRED + PaymentInstrumentId CDATA #IMPLIED + ProtocolId CDATA #REQUIRED + + + +Hans, et al. Informational [Page 91] + +RFC 3867 Payment API for IOTP November 2004 + + + PropertyTypeList NMTOKENS #REQUIRED + xml:lang NMTOKEN #IMPLIED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output parameters + + o a list of zero or more unavailable property values whose + language are identified by xml:lang. + o a list of zero or more sets of "Properties Types", "Property + Values" and "Property Descriptions" + + XML definition: + + <!ELEMENT PaymentInstrumentInquiryResponse + (PaymentInstrumentProperty*) > + <!ATTLIST PaymentInstrumentInquiryResponse + xml:lang NMTOKEN #REQUIRED + UnavailablePropertyList NMTOKENS #IMPLIED > + <!ELEMENT PaymentInstrumentProperty EMPTY > + <!ATTLIST PaymentInstrumentProperty + PropertyType NMTOKEN #REQUIRED + PropertyValue CDATA #REQUIRED + PropertyDesc CDATA #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.4.3. Inquire Pending Payment + + This API function reports the party's payment identifiers of any + pending payment transactions that the IOTP Payment Bridge/Existing + Payment Software recommends be completed or suspended prior to the + processing of new payment transactions. It does not respond with + further transaction details. These have to be requested with + "Inquire Process State". + + Note that the IOTP Payment Bridge has to respond without the benefit + of any pass phrase if there exist no pending payment transaction. + But if there are some pending payment transactions, the IOTP Payment + Bridge may refuse the immediate response and may instead request the + appropriate pass phase from the IOTP Application Core. + + Input Parameters + + o Wallet Identifier and/or Passphrase + + + + + +Hans, et al. Informational [Page 92] + +RFC 3867 Payment API for IOTP November 2004 + + + XML definition: + + <!ELEMENT InquirePendingPayment EMPTY > + <!ATTLIST InquirePendingPayment + WalletId CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Party's Payment Identifier + + XML definition: + + <!ELEMENT InquirePendingPaymentResponse (PaymentId*) > + + <!ELEMENT PaymentId EMPTY > + <!ATTLIST PaymentId + PayId CDATA #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.5. Payment Related Inquiry API Calls + +4.5.1. Check Payment Receipt + + This function is used by the Consumer and might be used by the + Payment Handler to check the consistency, validity, and integrity of + IOTP payment receipts which might consist of Packaged Content + Elements + + o from the IOTP Payment Receipt Component - provided by the Payment + Handler's "Inquire Process State" API call shortly before payment + completion, + + o from Payment Scheme Components being exchanged during the actual + payment, or + + o being returned by the Consumer's "Inquire Process State" API call + shortly before payment completion + + The IOTP Application Core has to check the PayReceiptNameRefs + attribute of the IOTP Payment Receipt Component and to supply exactly + the Packaged Content Elements being referred to. + + Failed verification is returns a business error. + + + + + +Hans, et al. Informational [Page 93] + +RFC 3867 Payment API for IOTP November 2004 + + + Note that this Payment API assumes that any payment receipt builds + upon a subset of elements with reference to [IOTP]. Furthermore, the + Packaged Content Element have to be distinguishable by their Name + attribute. + + Input Parameters + + o Party's Payment Identifier + o Wallet Identifier and/or Pass Phrase + o All Packaged Content Elements in the payment receipt + + XML definition: + + <!ELEMENT CheckPaymentReceipt (PackagedContent*) > + <!ATTLIST CheckPaymentReceipt + PayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + XML definition: + + <!ELEMENT CheckPaymentReceiptResponse EMPTY > + <!ATTLIST CheckPaymentReceiptResponse > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.5.2. Expand Payment Receipt + + This API function expands any IOTP payment receipt into a form which + may be used for display or printing purposes. "Check Payment + Receipt" should be used first if there is any question of the payment + receipt containing errors. + + The same conventions apply to the input parameter as for "Check + Payment Receipt" (cf. Section 4.5.1). + + Input Parameters + + o Party's Payment Identifier + o Wallet Identifier and/or Pass Phrase + o All Packaged Content Elements that build the payment receipt + + + + + + + +Hans, et al. Informational [Page 94] + +RFC 3867 Payment API for IOTP November 2004 + + + XML definition: + + <!ELEMENT ExpandPaymentReceipt (PackagedContent*) > + <!ATTLIST ExpandPaymentReceipt + PayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Brand Identifier + o Protocol specific Brand Identifier + o Payment Instrument Identifier + o Currency Code and Currency Code Type + o Payment Amount + o Payment Direction + o Time Stamp - issuance of the receipt + o Protocol Identifier + o Protocol specific Transaction Identifier - this is an internal + reference number which identifies the payment + o Consumer Description, Payment Handler Description, and a + language annotation + o Style Sheet Net Location + o Payment Property List. A list of type/value/description triples + which contains additional information about the payment which + is not covered by any of the other output parameters; property + descriptions have to consider the language annotation. + + The Style Sheet Net Location refers to a Style Sheet (e.g., [XSLT]) + that contains presentation information about the reported XML encoded + data. + + XML definition: + + <!ELEMENT ExpandPaymentReceiptResponse (PaymentProperty*) > + <!ATTLIST ExpandPaymentReceiptResponse + BrandId CDATA #IMPLIED + PaymentInstrumentId CDATA #IMPLIED + Amount CDATA #IMPLIED + CurrCodeType NMTOKEN #IMPLIED + CurrCode CDATA #IMPLIED + PayDirection (Debit|Credit) #IMPLIED + TimeStamp CDATA #IMPLIED + ProtocolId CDATA #IMPLIED + ProtocolBrandId CDATA #IMPLIED + ProtocolTransId CDATA #IMPLIED + xml:lang NMTOKEN #IMPLIED + ConsumerDesc CDATA #IMPLIED + + + +Hans, et al. Informational [Page 95] + +RFC 3867 Payment API for IOTP November 2004 + + + PaymentHandlerDesc CDATA #IMPLIED + StyleSheetNetLocn CDATA #IMPLIED> + + <!ELEMENT PaymentProperty EMPTY > + <!ATTLIST PaymentProperty + PropertyType NMTOKEN #REQUIRED + PropertyValue CDATA #REQUIRED + PropertyDesc CDATA #REQUIRED > + + The Existing Payment Software should return as many attributes as + possible from the supplied IOTP Payment Receipt. The payment + supplement defines the attribute values for the payment properties. + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.5.3. Inquire Process State + + This API function returns the current payment state and optionally + further Packaged Content Elements that form the payment receipt. + Called by the Payment Handler, the IOTP Payment Bridge might respond + with data intended for inclusion in the IOTP Payment Receipt + Component's Packaged Content. When the Consumer calls this function + shortly before payment completion, it may respond with further items + of the payment receipt. Such items might be created by a chip card. + + Input Parameters + + o Party's Payment Identifier + o Wallet Identifier and/or Pass Phrase + + XML definition: + + <!ELEMENT InquireProcessState EMPTY > + <!ATTLIST InquireProcessState + PayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Current Process State and Percent Complete + o Completion Code + o Status Description and its language annotation + o Payment Receipt Name References to all Packaged Content + Elements that build the payment receipt (cf. Section 4.5.1), + even if they have not been created so far (Consumer's share) + + + + +Hans, et al. Informational [Page 96] + +RFC 3867 Payment API for IOTP November 2004 + + + o Any Packaged Content Element being available that form the + payment receipt + + The IOTP provides a linking capability to the payment receipt + delivery. Instead of encapsulating the whole payment specific data + into the packaged content of the payment receipt, other Payment + Scheme Components' Packaged Content might be referred to. + + XML definition: + + <!ELEMENT InquireProcessStateResponse + (PackagedContent*) > + <!ATTLIST InquireProcessStateResponse + ProcessState (NotYetStarted | + InProgress | + Suspended | + CompletedOk | + Failed | + ProcessError) #REQUIRED + PercentComplete CDATA #IMPLIED + CompletionCode NMTOKEN #IMPLIED + xml:lang NMTOKEN #IMPLIED + StatusDesc CDATA #IMPLIED + PayReceiptNameRefs NMTOKENS #IMPLIED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.5.4. Start Payment Inquiry + + This API function responds with any additional payment scheme + specific data that is needed by the Payment Handler for Consumer + initiated payment transaction inquiry processing. Probably, the IOTP + Payment Bridge (or the corresponding Existing Payment Software) has + to determine the payment related items that were provided with the + "Start Payment Consumer" API function call. + + Input Parameters + + o Consumer Payment Identifier + o Wallet Identifier and/or Pass Phrase + + + + + + + + + + +Hans, et al. Informational [Page 97] + +RFC 3867 Payment API for IOTP November 2004 + + + XML definition: + + <!ELEMENT StartPaymentInquiry EMPTY > + <!ATTLIST StartPaymentInquiry + ConsumerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o (Payment Scheme) Packaged Content - intended for insertion in + the Payment Scheme Component of the Inquiry Request Block + + XML definition: + + <!ELEMENT StartPaymentInquiryResponse + (PaySchemePackagedContent*) > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.5.5. Inquire Payment Status + + The Payment Handler calls this API function for Consumer initiated + inquiry processing. It differs from the previous "Inquire Process + State" API function by the optional inclusion of payment scheme + specific data. The response may encapsulate further details about + the payment transaction. + + Input Parameters + + o Payment Handler Payment Identifier + o Wallet Identifier and/or Pass Phrase + o (Payment Scheme) Packaged Content - copied from the Inquiry + Request Block's Payment Scheme Component + + XML definition: + + <!ELEMENT InquirePaymentStatus (PaySchemePackagedContent*) > + <!ATTLIST InquirePaymentStatus + PaymentHandlerPayId CDATA #REQUIRED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o Current Process State + o Completion Code + + + +Hans, et al. Informational [Page 98] + +RFC 3867 Payment API for IOTP November 2004 + + + o Status Description and its language annotation + o (Payment Scheme) Packaged Content - intended for insertion in + the Payment Scheme Component of the Inquiry Response Block + + XML definition: + + <!ELEMENT InquirePaymentStatusResponse + (PaySchemePackagedContent*) > + <!ATTLIST InquirePaymentStatusResponse + PaymentHandlerPayId CDATA #REQUIRED + ProcessState (NotYetStarted | + InProgress | + Suspended | + CompletedOk | + Failed | + ProcessError) #REQUIRED + CompletionCode NMTOKEN #IMPLIED + xml:lang NMTOKEN #IMPLIED + StatusDesc CDATA #IMPLIED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +4.6. Other API Calls + +4.6.1. Manage Payment Software + + The following API function notifies the IOTP Payment Bridge about the + intended registration, modification, or deletion of a payment + instrument. The actual processing is up to the IOTP Payment Bridge. + + This API request may also be used to activate the IOTP Payment Bridge + (and the corresponding Existing Payment Software) for general + administration purposes. + + Input Parameters + + o Brand Identifier + o Protocol Identifier + o Any action code: + o New - add new payment method / instrument + o Update - change the payment method's / instrument's data + o Delete - delete a payment method / instrument + o Wallet Identifier and/or Pass Phrase + o (Brand) Packaged Content - further payment brand description + o (Pay Protocol) Packaged Content - further payment protocol + description + + + + +Hans, et al. Informational [Page 99] + +RFC 3867 Payment API for IOTP November 2004 + + + o (Protocol Amount) Packaged Content - further payment protocol + description + + If the Action attribute is set, the Brand and Protocol Identifier + have to also be set. The IOTP Payment Bridge has to provide the + required user dialogs and selection mechanisms. E.g., updates and + deletions may require the selection of the payment instrument. A new + wallet might be silently generated on the supplement of a new Wallet + Identifier or after an additional end user acknowledge. The IOTP + Application Core should not provide any pass phrases for new wallets. + Instead, the IOTP Payment Bridge has to request and verify them, + which may return their value to the IOTP Application Core in plain + text. In addition, the IOTP Payment Bridge returns the supported + authentication algorithms when a new brand and protocol pair has been + registered. + + If the "Action" attribute is omitted, the IOTP Payment Bridge which + is responsible for the Existing Payment Software pops up in a general + interactive mode. + + XML definition: + + <!ELEMENT ManagePaymentSoftware (BrandPackagedContent*, + ProtocolAmountPackagedContent*, + PayProtocolPackagedContent*) > + <!ATTLIST ManagePaymentSoftware + BrandId CDATA #IMPLIED + ProtocolId CDATA #IMPLIED + Action (New | + Update | + Delete) #IMPLIED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED > + + Output Parameters + + o An action code: + o New - added new wallet + o Update - changed wallet's configuration + o Delete - removed a wallet + o Wallet Identifier and/or Pass Phrase + + The IOTP Payment Bridge does not return any information about the set + of registered payment instruments because these data items are + dynamically inferred during the brand selection process at the + beginning of each IOTP transaction. However, the IOTP Application + Core has to be notified about new wallets and should be notified + about updated and removed wallets (identifier). Alternatively, + + + +Hans, et al. Informational [Page 100] + +RFC 3867 Payment API for IOTP November 2004 + + + removed wallets can be implicitly detected during the next brand + selection phase. Updated wallets do no affect the processing of the + IOTP Application Core. The IOTP Payment Bridge should only support + the addition of at most one wallet because it is not able to report + multiple additions at once back to the IOTP Application Core. + + XML definition: + + <!ELEMENT ManagePaymentSoftwareResponse EMPTY > + <!ATTLIST ManagePaymentSoftwareResponse + Action (New | + Update | + Delete) #IMPLIED + WalletID CDATA #IMPLIED + Passphrase CDATA #IMPLIED + AuthNames NMTOKENS #REQUIRED > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + +5. Call Back Function + + This API function, called by the IOTP Payment Bridge, is used to + provide information for Consumer or Payment Handler notification + about the progress of the payment transaction. + + Its use is illustrated in the diagram below. + + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + IOTP Application ----calls---- + | Core | | + display | | v + to <---------- Call Back <--calls--- Payment + user | | Software + ---------------- + *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* + + Figure 9. Call Back Function + + Whenever this function is called, the content of the status + description should be made available to the user. For example on a + status bar, a pop up window, etc. + + A reference to the Call Back function is passed as an input parameter + to the "Start Payment X" and "Resume Payment X" API function. + Afterwards, this function might be called whenever the status changes + or progress needs to be reported. + + + + +Hans, et al. Informational [Page 101] + +RFC 3867 Payment API for IOTP November 2004 + + + Input Parameters + + o the software identifier of the caller + o Party's Payment Identifier + o Process State and Percent Complete + o Completion Code + o Status Description and its language annotation, text which + provides information about the progress of the call. It should be + displayed or made available to, for example, the Consumer. + + Examples of Status Description could be: + + o "Paying 12.30 USD to XYZ Inc" + o "Payment completed" + o "Payment aborted" + + The valid languages are announced in the Call Back Language List + attribute in "Start Payment X" and "Resume Payment X" API function + calls. + + XML definition: + + <!ELEMENT CallBack EMPTY > + <!ATTLIST CallBack + ContentSoftwareID CDATA #IMPLIED + PayId CDATA #REQUIRED + ProcessState (NotYetStarted | + InProgress | + Suspended | + CompletedOk | + Failed | + ProcessError) #IMPLIED + PercentComplete CDATA #IMPLIED + CompletionCode NMTOKEN #IMPLIED + xml:lang NMTOKEN #IMPLIED + StatusDesc CDATA #IMPLIED > + + Output Parameters + + XML definition: + + <!ELEMENT CallBackResponse EMPTY > + <!ATTLIST CallBackResponse <!-- see below --> > + + Tables 4 and 5 explain the attributes and elements; Table 3 + introduces the Error Codes. + + + + + +Hans, et al. Informational [Page 102] + +RFC 3867 Payment API for IOTP November 2004 + + + Basically, the call back function accepts all input arguments or + rejects the whole request. It may even accept malformed requests. + + Some payment schemes may support or require that the Consumer might + be able to cancel the payment at any time. The Call Back function + can be used to facilitate this by returning the cancellation request + on the next call (using the Business Error Code and Completion Code + "ConsCancelled"). + + Vice versa the Payment Handler's Application Core might use the + similar mechanism to signal its IOTP Payment Bridges any exceptional + need for a fast shutdown. These IOTP Payment Bridges may initiate + the appropriate steps for terminating/cancelling all pending payment + transactions. + + Note that the "Change Process State" API function provides the second + mechanism for such kind of notification. Therefore, the IOTP Payment + Bridge or Existing Payment Software may ignore the details of the + "Call Back" response. + +6. Security Consideration + + The IOTP Payment APIs only supports security using pass phrase to + access to payment Wallet. These can be protected over TLS, which + provides stronger security at the transport layer, but + implementations are out the scope of this document. + + See also security consideration section of [IOTP]. + +7. References + +7.1. Normative References + + [IOTP] Burdett, D., "Internet Open Trading Protocol - IOTP + version 1.0", RFC 2801, April 2000. + + [ISO4217] ISO 4217: Codes for the Representation of Currencies. + Available from ANSI or ISO. + + [URL] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform + Resource Locators (URL)", RFC 1738, December 1994. + + [UTC] Universal Time Coordinated. A method of defining time + absolutely relative to Greenwich Mean Time (GMT). + Typically of the form: "CCYY-MM- DDTHH:MM:SS.sssZ+n" where + the "+n" defines the number of hours from GMT. See ISO + DIS8601. + + + + +Hans, et al. Informational [Page 103] + +RFC 3867 Payment API for IOTP November 2004 + + + [XML] Extensible Mark Up Language (XML) 1.0 (Third Edition). A + W3C recommendation. See http://www.w3.org/TR/REC-xml + + [XML-NS] Namespaces in XML Recommendation. T. Bray, D. Hollander, + A. Layman. Janaury 1999. http://www.w3.org/TR/REC-xml- + names + + [XSLT] Extensible Style Language Transformations 1.0, November + 1999, See http://www.w3.org/TR/xslt + +7.2. Informative References + + [IOTPBOOK] D. Burdett, D.E. Eastlake III, and M. Goncalves, Internet + Open Trading Protocol, McGraw-Hill, 2000. ISBN 0-07- + 135501-4. + + [SET] SET Secure Electronic Transaction(TM) , Version 1.0, May + 31, 1997 + Book 1: Business Description + Book 2: Programmer's Guide + Book 3: Formal Protocol Definition + + [SET/IOTP] Kawatsura, Y., "Secure Electronic Transaction (SET) + Supplement for the v1.0 Internet Open Trading Protocol + (IOTP)", RFC 3538, June 2003. + + [TLS] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", + RFC 2246, January 1999. + + + + + + + + + + + + + + + + + + + + + + + +Hans, et al. Informational [Page 104] + +RFC 3867 Payment API for IOTP November 2004 + + +Acknowledgement + + The contributions of Werner Hans of Atos Origin are gratefully + acknowledged. + +Authors' Addresses + + Hans-Bernhard Beykirch + + EMail: hbbeykirch@web.de + + + Yoshiaki Kawatsura + Hitachi, Ltd. + 890 Kashimada Saiwai-ku Kawasaki-shi + Kanagawa, Japan 212-8567 + + EMail: ykawatsu@itg.hitachi.co.jp + + + Masaaki Hiroya + Technoinfo Service, Inc. + 333-2-718 Uchikoshi-machi + Hachioji-shi + Tokyo 192-0911 JAPAN + + EMail: hiroya@st.rim.or.jp + + + + + + + + + + + + + + + + + + + + + + + + +Hans, et al. Informational [Page 105] + +RFC 3867 Payment API for IOTP November 2004 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2004). This document is subject + to the rights, licenses and restrictions contained in BCP 78, and + except as set forth therein, the authors retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at ietf- + ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + +Hans, et al. Informational [Page 106] + |