misc minor edits
This commit is contained in:
parent
33e7fb56a1
commit
d6c8b73df9
@ -692,7 +692,7 @@ customers, and may help create a competitive market.
|
|||||||
% \tinyskip
|
% \tinyskip
|
||||||
|
|
||||||
\begin{figure}[t!]
|
\begin{figure}[t!]
|
||||||
\subfloat[Select article][Select article. \\ Generated by web shop.]{
|
\subfloat[Select article][Select article. \\ Generated by Web shop.]{
|
||||||
\includegraphics[width=0.30\textwidth]{figs/cart.png}
|
\includegraphics[width=0.30\textwidth]{figs/cart.png}
|
||||||
\label{subfig:cart}} \hfill
|
\label{subfig:cart}} \hfill
|
||||||
\subfloat[Confirm payment][Confirm payment. \\ Generated by Taler wallet.]{
|
\subfloat[Confirm payment][Confirm payment. \\ Generated by Taler wallet.]{
|
||||||
@ -735,7 +735,7 @@ merchant, the customer may choose to cover them.
|
|||||||
morestring=[b]"
|
morestring=[b]"
|
||||||
}
|
}
|
||||||
|
|
||||||
\begin{figure*}[h!]
|
\begin{figure*}[t!]
|
||||||
\lstset{language=HTML5}
|
\lstset{language=HTML5}
|
||||||
\lstinputlisting{figs/taler-presence-js.html}
|
\lstinputlisting{figs/taler-presence-js.html}
|
||||||
\caption{Sample code to detect the Taler wallet. Allowing the
|
\caption{Sample code to detect the Taler wallet. Allowing the
|
||||||
@ -746,7 +746,7 @@ merchant, the customer may choose to cover them.
|
|||||||
\end{figure*}
|
\end{figure*}
|
||||||
|
|
||||||
|
|
||||||
\begin{figure*}[h!]
|
\begin{figure*}[t!]
|
||||||
\lstset{language=HTML5}
|
\lstset{language=HTML5}
|
||||||
\lstinputlisting{figs/taler-contract.html}
|
\lstinputlisting{figs/taler-contract.html}
|
||||||
\caption{Sample code to pass a contract to the Taler wallet.
|
\caption{Sample code to pass a contract to the Taler wallet.
|
||||||
@ -769,49 +769,50 @@ detect the presence of a Taler wallet (Figure~\ref{listing:presence}),
|
|||||||
so that the selection of alternative payment methods can be skipped if
|
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}).
|
a Taler wallet is installed (as it is in Figure~\ref{fig:shopping}).
|
||||||
|
|
||||||
\begin{figure*}[h!]
|
\begin{figure*}[t!]
|
||||||
\lstset{language=JavaScript}
|
\lstset{language=JavaScript}
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
{
|
{
|
||||||
"H_wire":"JCDAV...",
|
"H_wire":"YTH0C4QBCQ10VDNTJN0DCTTV2Z6JHT5NF43F0RQHZ8JYB5NG4W4G...",
|
||||||
"amount":{"currency":"EUR","fraction":100000,"value":0},
|
"amount":{"currency":"EUR","fraction":1,"value":0},
|
||||||
"auditors":[],
|
"auditors":[{"auditor_pub":"42V6TH91Q83FB846DK1GW3JQ5E8DS273W4236AXC397892ESD0B0"}],
|
||||||
"exchanges":[{"master_pub":"CQA...","url":"https://myexchange/"}],
|
"exchanges":[{"master_pub":"1T5FA8VQHMMKBHDMYPRZA2ZFK2S63AKF0YTHJZWFKF45K2JGC8H0",
|
||||||
|
"url":"https://exchange/"}],
|
||||||
"expiry":"/Date(1480119270)/",
|
"expiry":"/Date(1480119270)/",
|
||||||
"fulfillment_url": "https://myshop/essay/...",
|
"fulfillment_url": "https://shop/essay/42",
|
||||||
"max_fee":{"currency":"EUR","fraction":0,"value":3},
|
"max_fee":{"currency":"EUR","fraction":01,"value":0},
|
||||||
"merchant":{"address":"Somewhere","jurisdiction":"none","name":"Kudos Inc."},
|
"merchant":{"address":"Mailbox 4242","jurisdiction":"Jersey","name":"Shop Inc."},
|
||||||
"merchant_pub":"YDP...",
|
"merchant_pub":"Y1ZAR5346J3ZTEXJCHQY9NJN78EZ2HSKZK8M0MYTNRJG5N0HD520",
|
||||||
"products":[{
|
"products":[{
|
||||||
"description":"Essay: The GNU Project",
|
"description":"Essay: The GNU Project",
|
||||||
"price":{"currency":"EUR","fraction":100000,"value":0},
|
"price":{"currency":"EUR","fraction":1,"value":0},
|
||||||
"product_id":0,"quantity":1}],
|
"product_id":42,"quantity":1}],
|
||||||
"refund_deadline":"/Date(1471522470)/",
|
"refund_deadline":"/Date(1471522470)/",
|
||||||
"timestamp":"/Date(1471479270)/",
|
"timestamp":"/Date(1471479270)/",
|
||||||
"transaction_id":249960194066269
|
"transaction_id":249960194066269
|
||||||
}
|
}
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\caption{Minimal Taler contract over a digital article with a value of \EUR{0.10}}
|
\caption{Minimal Taler contract over a digital article with a value of \EUR{0.10}. The merchant will pay transaction fees up to \EUR{0.01}. The hash over the wire transfer information was truncated to make it fit to the page.}
|
||||||
\label{listing:json-contract}
|
\label{listing:json-contract}
|
||||||
\end{figure*}
|
\end{figure*}
|
||||||
|
|
||||||
\begin{figure*}[h!]
|
\begin{figure*}[t!]
|
||||||
\lstset{language={}}
|
\lstset{language={}}
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
HTTP/1.1 402 Payment Required
|
HTTP/1.1 402 Payment Required
|
||||||
Content-Type: text/html; charset=UTF-8
|
Content-Type: text/html; charset=UTF-8
|
||||||
X-Taler-Contract-Url: https://myshop/generate-contract?product=42
|
X-Taler-Contract-Url: https://shop/generate-contract/42
|
||||||
...
|
...
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
...
|
...
|
||||||
You don't seem to have Taler installed, here are
|
You do not seem to have Taler installed, here are
|
||||||
other payment options:
|
other payment options:
|
||||||
...
|
...
|
||||||
</html>
|
</html>
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\caption{Sample HTTP response for a web resource that requires a payment.}
|
\caption{Sample HTTP response for a Web resource that requires a payment.}
|
||||||
\label{listing:http-contract}
|
\label{listing:http-contract}
|
||||||
\end{figure*}
|
\end{figure*}
|
||||||
|
|
||||||
@ -886,25 +887,27 @@ 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
|
This resource can be a digital good such as a news article, or simply
|
||||||
a confirmation for products that are delivered by other means.
|
a confirmation for products that are delivered by other means.
|
||||||
|
|
||||||
\begin{figure*}[h!]
|
\begin{figure*}[t!]
|
||||||
\lstset{language={}}
|
\lstset{language={}}
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
HTTP/1.1 402 Payment Required
|
HTTP/1.1 402 Payment Required
|
||||||
Content-Type: text/html; charset=UTF-8
|
Content-Type: text/html; charset=UTF-8
|
||||||
X-Taler-Contract-Hash: RA67CB1...
|
X-Taler-Contract-Hash: 2BAH2AT4GSG5JRM2W4YWTSYGY66EK4X8CX2V69D5VF7XV703AJMG
|
||||||
X-Taler-Offer-Url: https://myshop/article/42
|
X-Taler-Offer-Url: https://shop/generate-contract/42
|
||||||
...
|
...
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
...
|
...
|
||||||
You don't seem to have Taler installed, here are
|
You do not seem to have Taler installed, here are
|
||||||
other payment options:
|
other payment options:
|
||||||
...
|
...
|
||||||
</html>
|
</html>
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\caption{Sample HTTP response when the user agent navigates to a fulfillment URL without
|
\caption{Sample HTTP response when the user agent navigates to a
|
||||||
the session state that indicates they have paid for the resource.}
|
fulfillment URL without
|
||||||
|
the session state that indicates they have paid for the resource.
|
||||||
|
Note the minor difference to Listing~\ref{listing:http-contract}.}
|
||||||
\label{listing:http-execute}
|
\label{listing:http-execute}
|
||||||
\end{figure*}
|
\end{figure*}
|
||||||
|
|
||||||
@ -928,10 +931,18 @@ contract in their wallet, the wallet redirects the browser to the {\em
|
|||||||
useful when a user wishes to share a fulfillment link with another
|
useful when a user wishes to share a fulfillment link with another
|
||||||
user to point him to the same resource.
|
user to point him to the same resource.
|
||||||
|
|
||||||
Note that due to the limited WebExtensions API, the session
|
Note that due to the limited WebExtensions API, the session state can
|
||||||
state can only be acquired when the browser navigates to
|
only be acquired when the wallet causes the browser to navigate to the
|
||||||
the fulfillment URL (without session state), since the session
|
fulfillment URL (first without session state), since the session state
|
||||||
state must be set on the same origin as the fulfillment URL.
|
must be set from the same origin as the fulfillment URL. As a result,
|
||||||
|
the shop cannot simply return the fulfillment information in response
|
||||||
|
to the wallet performing the payment. However, this extra round trip
|
||||||
|
is also justified as the wallet needs to inspect the response anyway
|
||||||
|
as it may contain error reports about a failed payment which the wallet
|
||||||
|
has to handle. Finally, it ensures that the fulfillment page is fetched
|
||||||
|
via an HTTP GET request instead of an HTTP POST request, which is
|
||||||
|
important to nicely support the use of navigation (``back'', ``forward''
|
||||||
|
buttons) and bookmarks.
|
||||||
|
|
||||||
Various failure modes are considered in this design:
|
Various failure modes are considered in this design:
|
||||||
|
|
||||||
@ -997,7 +1008,7 @@ it has the following key advantages:
|
|||||||
|
|
||||||
\subsection{Giving change and refunds}
|
\subsection{Giving change and refunds}
|
||||||
|
|
||||||
\begin{figure*}[h!]
|
\begin{figure*}[b!]
|
||||||
\lstset{language={HTML5}}
|
\lstset{language={HTML5}}
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
<script src="taler-wallet-lib.js"></script>
|
<script src="taler-wallet-lib.js"></script>
|
||||||
@ -1518,8 +1529,11 @@ signed receipts for transactions will become commonplace.
|
|||||||
In this way, Taler gives the user full control over the usage of their
|
In this way, Taler gives the user full control over the usage of their
|
||||||
transaction history, as opposed to giving control to big data corporations.
|
transaction history, as opposed to giving control to big data corporations.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\bf
|
||||||
We encourage readers to try our prototype for Taler
|
We encourage readers to try our prototype for Taler
|
||||||
at \url{https://demo.taler.net/}.
|
at \url{https://demo.taler.net/}.
|
||||||
|
\end{center}
|
||||||
%and to ponder why the billion dollar
|
%and to ponder why the billion dollar
|
||||||
%e-commerce industry still relies mostly on TLS for security given
|
%e-commerce industry still relies mostly on TLS for security given
|
||||||
%that usability, security and privacy can clearly {\em all} be improved
|
%that usability, security and privacy can clearly {\em all} be improved
|
||||||
@ -1535,8 +1549,9 @@ This work benefits from the financial support of the Brittany Region
|
|||||||
thank Bruno Haible for his financial support enabling us to
|
thank Bruno Haible for his financial support enabling us to
|
||||||
participate with the W3c payment working group. We thank the W3c
|
participate with the W3c payment working group. We thank the W3c
|
||||||
payment working group for insightful discussions about Web payments.
|
payment working group for insightful discussions about Web payments.
|
||||||
We thank Neal Walfield for comments on an earlier draft of the paper.
|
We thank Krista Grothoff and Neal Walfield for comments on an earlier
|
||||||
We thank Gabor Toth for his help with the implementation.
|
draft of the paper. We thank Gabor Toth for his help with the
|
||||||
|
implementation.
|
||||||
|
|
||||||
\bibliographystyle{splncs03}
|
\bibliographystyle{splncs03}
|
||||||
\bibliography{ui,btc,taler,rfc}
|
\bibliography{ui,btc,taler,rfc}
|
||||||
|
Loading…
Reference in New Issue
Block a user