int-pay.tex (3053B)
1 \section{Pay} \label{sec:pay} 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[1]{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[1]{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 \newinst[1]{bank}{\shortstack{Merchant bank \\ 23 \\ \begin{tikzpicture} 24 \node [fill=gray!20,draw=black,thick,align=center] {Commercial \\ Accounts}; 25 \end{tikzpicture} 26 }} 27 \postlevel 28 \mess[0]{wallet}{Browse catalog}{merchant} 29 \mess[0]{merchant}{Commercial offer}{wallet} 30 \begin{callself}{wallet}{Review offer}{} 31 \end{callself} 32 \mess[0]{wallet}{Pay {(Coins)}}{merchant} 33 \prelevel 34 \mess[0]{merchant}{Deposit {(Coins)}}{exchange} 35 \begin{sdblock}{KYC/AML required?}{} 36 \begin{callself}{exchange}{Figures~\ref{fig:proc:kyc}, \ref{fig:proc:aml}}{} 37 \end{callself} 38 \end{sdblock} 39 \begin{sdblock}{Acceptable account?}{} 40 \mess[0]{exchange}{{Refuse deposit}}{merchant} 41 \prelevel 42 \mess[0]{merchant}{{Fail purchase}}{wallet} 43 \end{sdblock} 44 \mess[0]{exchange}{{Confirm deposit}}{merchant} 45 \prelevel 46 \mess[0]{merchant}{Fulfill order}{wallet} 47 \begin{callself}{exchange}{Aggregate transactions}{} 48 \end{callself} 49 \begin{sdblock}{KYC/AML required?}{} 50 \begin{callself}{exchange}{Figures~\ref{fig:proc:kyc}, \ref{fig:proc:aml}}{} 51 \end{callself} 52 \end{sdblock} 53 \mess[0]{exchange}{{Initiate transfer}}{bank} 54 \end{sequencediagram} 55 \caption{Payments from a customer to merchant result in 56 depositing coins at the Taler exchange (payment service provider) 57 which then credits the merchant's bank account. 58 The KYC/AML checks are described in Section~\ref{sec:kyc:deposit}} 59 \label{fig:int:pay} 60 \end{figure} 61 62 {\bf Internal note:} The exchange refusing a deposit immediately based on 63 unaccaptable merchant accounts can depend both on the target account 64 (e.g. wire method not supported) or on the legitimization state of the 65 merchant's target account (including lack of KYC authorization wire 66 transfer, failure to accept terms of service, failure to provide KYC 67 data, or some kind of AML/KYC rule being violated). However, in general 68 the merchant backend will know if it has performed some mandatory sign-up 69 process and can thus avoid the entire situation by only offering exchanges 70 where the merchant is in good standing in its contracts. The central 71 bug for supporting this in the merchant is \#9052.