From 3ef07c6c9f11585b5826bbc3eac6fe90d2a9467a Mon Sep 17 00:00:00 2001
From: Florian Dold <florian.dold@gmail.com>
Date: Tue, 23 Aug 2016 15:34:59 +0200
Subject: http payment request - contract

---
 articles/ui/ui.tex | 42 ++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 2 deletions(-)

(limited to 'articles/ui/ui.tex')

diff --git a/articles/ui/ui.tex b/articles/ui/ui.tex
index 57232c7fd..aaaf6e363 100644
--- a/articles/ui/ui.tex
+++ b/articles/ui/ui.tex
@@ -769,10 +769,29 @@ detect the presence of a Taler wallet (Figure~\ref{listing:presence}),
 so that the selection of alternative payment methods can be skipped if
 a Taler wallet is installed (as it is in Figure~\ref{fig:shopping}).
 
-% FIXME: add figure for 402 payment!
+\begin{figure*}[h!]
+  \lstset{language={}}
+\begin{lstlisting}
+HTTP/1.1 402 Payment Required
+Content-Type: text/html; charset=UTF-8
+X-Taler-Contract-Url: https://myshop/generate-contract?product=42
+...
+
+<!DOCTYPE html>
+<html>
+  ...
+  You don't seem to have Taler installed, here are
+  other payment options:
+  ...
+</html>
+\end{lstlisting}
+ \caption{Sample HTTP response for a web resource that requires a payment.}
+  \label{listing:http-contract}
+\end{figure*}
+
 The offer URL of the Web shop can then initiate payments by sending a
 \emph{contract proposal} to the wallet, either via the HTTP status
-code {\tt 402 Payment Required}, or via Taler's JavaScript API
+code {\tt 402 Payment Required} (Figure~\ref{listing:http-contract}), or via Taler's JavaScript API
 (Figure~\ref{listing:contract}).  The wallet then presents the
 contract to the user.  The format of the contract is in an extensible
 JSON-based format defined by Taler and not HTML, as the rendering of
@@ -841,6 +860,25 @@ URL in a browser will show the resource associated with the purchase.
 This resource can be a digital good such as a news article, or simply
 a confirmation for products that are delivered by other means.
 
+\begin{figure*}[h!]
+  \lstset{language={}}
+\begin{lstlisting}
+HTTP/1.1 402 Payment Required
+Content-Type: text/html; charset=UTF-8
+X-Taler-Contract-Url: https://myshop/generate-contract?product=42
+...
+
+<html>
+  ...
+  You don't seem to have Taler installed, here are
+  other payment options:
+  ...
+</html>
+\end{lstlisting}
+ \caption{Sample HTTP response for a web resource that requires a payment.}
+  \label{listing:http-contract}
+\end{figure*}
+
 In order to ensure that only the paying customer has access to the Web
 resources behind the fulfillment URL, the Web store's server must
 check the browser's session state.  If the merchant can confirm that
-- 
cgit v1.2.3

