int-refund.tex (1601B)
1 \section{Refund} 2 3 \begin{figure}[h!] 4 \begin{sequencediagram} 5 \newinst{wallet}{\shortstack{Customer wallet \\ 6 \\ \begin{tikzpicture} 7 \node [fill=gray!20,draw=black,thick,align=center] { Unique \\ Wallet ID}; 8 \end{tikzpicture} 9 }} 10 \newinst[2]{merchant}{\shortstack{Merchant \\ 11 \\ \begin{tikzpicture}[shape aspect=.5] 12 \tikzset{every node/.style={cylinder,shape border rotate=90, draw,fill=gray!25}} 13 \node at (1.5,0) {\shortstack{{{\tiny Database}}}}; 14 \end{tikzpicture} 15 }} 16 \newinst[2]{exchange}{\shortstack{Taler (exchange) \\ 17 \\ \begin{tikzpicture}[shape aspect=.5] 18 \tikzset{every node/.style={cylinder,shape border rotate=90, draw,fill=gray!25}} 19 \node at (1.5,0) {\shortstack{{{\tiny Database}}}}; 20 \end{tikzpicture} 21 }} 22 \postlevel 23 \begin{callself}{merchant}{Initiate refund}{} 24 \end{callself} 25 \mess[0]{merchant}{{Refund offer (QR code)}}{wallet} 26 \mess[0]{wallet}{Download refund}{merchant} 27 \mess[0]{merchant}{Approve refund}{exchange} 28 \mess[0]{exchange}{Confirm refund}{merchant} 29 \mess[0]{merchant}{Return refund confirmation}{wallet} 30 \end{sequencediagram} 31 \caption{Refund processing when a merchant is unable to fulfill 32 a contract. Refunds must happen {\em before} the 33 exchange has aggregated the original transaction for 34 a bank transfer to the merchant. Furthermore, refunds 35 can only go to the customer who made the original payment 36 and the refund cannot exceed the amount of the original 37 payment.} 38 \label{fig:int:refund} 39 \end{figure}