exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

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.