PPV Protocol Specification

PPV is implemented as a CGI scripts for use with both the merchant's and client's WWW server. Because many customers run on machines without WWW servers, the client software is also available as a standalone binary. In this specification, we will assume that the CGI scripts are used. The messages are nearly identical in the two cases.

The Message Exchange

1. The client's browser sends an HTTP request for the document to the merchant's WWW server as before. Normally, the server returns the document as expected. However, when the URL for the document is of the form

the WWW server returns, instead of the document itself, preview information for the document. This preview comes in the format of an ordinary HTML file, and contains a short summary of the document, as well as payment information and options.

2. The latter is encoded using a CGI form, which is mostly hidden from the user. The only object visible to the user is a button which sends this form to the URL

Accompanying this URL is a POSTed form. This form is passed to the CGI script ppv_pay on stdin as a sequence of param=value pairs¹ separated by ampersands (&). Currently supported parameters include

If the conditions are unacceptable to the client, or if the user declines to retrieve the document, the transaction ends. No acknowledgement need be sent to the merchant, as the transaction maintains the connectionless characteristic of HTTP transfers.

3. After payment has been prepared, the client can request the document itself by sending an HTTP request to the merchant's WWW server for the URL

where retrieve_params is a string of param=value pairs¹ separated by slashes (/). Currently supported parameters include

That is, if the ARDP option is selected, the request does not include the payment instrument itself, only instructions on how to obtain the payment instrument. If, on the other hand, the POST option is selected, then the payment instrument accompanies the request in a CGI form which is sent to ppv_retrieve on stdin as a single param=value pair¹ of the form

where payment_instrument is the text of the payment instrument. Once payment is received (immediately in the case of a POSTed instrument, after an ARDP transfer in the case of an ARDP'd instrument) and deposited successfully, the document is returned to the client's WWW browser.

Messages for Standalone Server

The client CGI scripts are also available as a standalone server for those machines not running an HTTP server. In that case the messages are identical, except that the URL for ppv_pay then becomes

This URL assumes that the standalone server ppvc (for PPV Client) is running and listening on port 1564, then standard port for ppvc allocated by IANA.

Back to PPV top level page

¹Parameter strings are url-encoded automatically by browsers. That is, spaces are denoted by pluses (+), and certain special characters are denoted by the three-character sequence &XY, where XY(hex) is the ASCII value of the character. In addition, the retrieve_params are sent hex/ascii-encoded, in which each character, special or not, is replaced by the two-character sequence XY, where XY(hex) is the ASCII value of the character.