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.
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
and will be postpended with document.ext at runtime.
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
which specifies the ARDP address to which the merchant should send a request for the payment instrument
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.
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.