diff options
-rw-r--r-- | design-documents/037-wallet-transactions-lifecycle.rst | 47 | ||||
-rw-r--r-- | transaction-common-states.dot | 9 | ||||
-rw-r--r-- | transaction-payment-states.dot | 10 | ||||
-rw-r--r-- | transaction-pull-credit-states.dot | 2 | ||||
-rw-r--r-- | transaction-push-debit-states.dot | 2 | ||||
-rw-r--r-- | transaction-withdrawal-states.dot | 4 |
6 files changed, 32 insertions, 42 deletions
diff --git a/design-documents/037-wallet-transactions-lifecycle.rst b/design-documents/037-wallet-transactions-lifecycle.rst index 0b6e2b13..7d9f9b6b 100644 --- a/design-documents/037-wallet-transactions-lifecycle.rst +++ b/design-documents/037-wallet-transactions-lifecycle.rst @@ -193,12 +193,12 @@ Transaction Type: Withdrawal The wallet **may** occasionally (after some initial delay, especially on failures from the bank-poll to return any result) long-poll for the reserve status and, if successful, may then directly jump to - ``pending(withdrawing-coins)`` if the reserve is filled even if the poll at + ``pending(withdraw-coins)`` if the reserve is filled even if the poll at the bank did not return success or failure. * ``[bank-poll-success] => pending(exchange-wait-reserve)`` * ``[bank-aborted] => aborted``: Bank denied the operation. - * ``[exchange-poll-success] => pending(withdrawing-coins)``: Optional + * ``[exchange-poll-success] => pending(withdraw-coins)``: Optional short-cut transition. Exchange was faster than the bank. * ``[action:abort] => aborting(bank)`` @@ -239,10 +239,10 @@ Transaction Type: Withdrawal exchange for the reserve status, waiting for the wire transfer to arrive at the exchange. - * ``[exchange-poll-success] => pending(withdrawing-coins)`` + * ``[exchange-poll-success] => pending(withdraw-coins)`` * ``[action:suspend] => suspended(exchange-wait-reserve)`` -* ``pending(withdrawing-coins)`` +* ``pending(withdraw-coins)`` State where we are finally withdrawing the actual coins. Depending on the AML and KYC thresholds, we may at any time transition into a @@ -254,8 +254,8 @@ Transaction Type: Withdrawal * ``[processed-success] => done`` * ``[processed-kyc-required] => pending(kyc)`` * ``[processed-aml-required] => pending(aml)`` - * ``[reserve-expired] => failed(reserve-expired)`` - * ``[action:suspend] => suspended(withdrawing-coins)`` + * ``[reserve-expired] => expired(reserve)`` + * ``[action:suspend] => suspended(withdraw-coins)`` * ``pending(kyc)`` @@ -264,7 +264,7 @@ Transaction Type: Withdrawal process and long-polls the exchange in anticipation of the user completing the KYC requirement. - * ``[poll-success] => pending(withdrawing-coins)`` + * ``[poll-success] => pending(withdraw-coins)`` * ``[action:suspend] => suspended(kyc)`` * ``suspended(kyc)`` @@ -289,7 +289,7 @@ Transaction Type: Withdrawal In any case, the wallet long-polls for the AML decision to be made or change (possibly at a lower frequeny in case of a freeze). - * ``[poll-success] => pending(withdrawing-coins)`` + * ``[poll-success] => pending(withdraw-coins)`` * ``[action:suspend] => suspended(aml)`` * ``suspended(aml)`` @@ -300,7 +300,7 @@ Transaction Type: Withdrawal * ``[action:delete] => deleted`` * ``[action:resume] => pending(aml)`` -* ``suspended(withdrawing-coins)`` +* ``suspended(withdraw-coins)`` In this state, the wallet should show how much money arrived into the wallet and the rest of the money will be sent back to the originating bank account @@ -347,7 +347,7 @@ Transaction Type: Payment to Merchant proposal that is invalid (e.g. malformed contract terms or bad signature). -* ``pending(proposed)`` +* ``monolog(merchant-order-proposed)`` Let the user accept (or refuse) the payment. @@ -417,20 +417,20 @@ Transaction Type: Payment to Merchant The purchase is completed. * ``[action:delete] => deleted`` - * ``[repurchase] => pending(repurchase-session-reset)``: Another offer + * ``[repurchase] => pending(rebind-session)``: Another offer became pending for this product and we need to update the session so that the user does not have to buy it again. * ``[check-refunds]` => pending(check-refunds)``: New refunds might be available for this purchase. -* ``pending(check-refunds)`` +* ``pending(check-refund)`` New refunds might be available for this purchase. This state must only be entered *after* the payment has successfully completed. It is not relevant for auto-refunds or refunds for incomplete payments. - * ``[refunds-checked] => pending(user-new-refunds)`` --- New + * ``[refunds-checked] => pending(user-new-refund)`` --- New refund(s) are available, user needs to confirm. * ``[refunds-checked] => done`` --- Refunds were checked, but no new refunds are available. @@ -439,14 +439,7 @@ Transaction Type: Payment to Merchant with errors. It stops the refund query, but the payment of course is left intact. -* ``pending(user-new-refunds)`` - - * ``[action:accept] => done``: User accepts refunds, - new refund transactions will be created. - * ``[action:refuse] => done``: User refuses new refunds, - no new refund transactions will be created. - -* ``pending(repurchase-session-reset)`` +* ``pending(rebind-session)`` The wallet should reset the associated session for the already purchased (digital) item. @@ -724,7 +717,7 @@ States and transitions: The wallet is creating a purse. Initial state. - * ``[process-success] => pending(qr-ready)``: The wallet has created the purse. + * ``[process-success] => pending(ready)``: The wallet has created the purse. * ``[process-failure] => aborting(refund)``: The purse creation failed. * ``[action:suspend] => suspended(purse-create)``: The user suspended the operation. @@ -733,7 +726,7 @@ States and transitions: * ``[action:resume] => pending(purse-create)``: The user resumed the operation. * ``[action:abort] => aborting(refund)``: The user aborted the operation. -* ``pending(qr-ready)`` +* ``pending(ready)`` In this state, the user can send / show the ``taler://`` URI or QR code to somebody else. @@ -871,7 +864,7 @@ States and transitions: The user is shown a hint where to begin the KYC process and the wallet long-polls on the KYC status. - * ``[poll-success] => pending(withdrawing-coins)`` + * ``[poll-success] => pending(withdraw-coins)`` * ``[action:suspend] => suspended(withdraw-kyc)`` * ``suspended(withdraw-kyc)`` @@ -887,7 +880,7 @@ States and transitions: We cannot withdraw more coins until AML rules are satisfied. The user is shown a hint as to the AML status (pending or frozen). - * ``[poll-success] => pending(withdrawing-coins)`` + * ``[poll-success] => pending(withdraw-coins)`` * ``[action:suspend] => suspended(withdraw-aml)`` * ``suspended(withdraw-aml)`` @@ -926,11 +919,11 @@ TODO: Also specify variant where account reserve needs to be created / funded fi The wallet is creating a purse. Initial state. - * ``[process-success] => pending(qr-ready)``: The wallet has created the purse. + * ``[process-success] => pending(ready)``: The wallet has created the purse. * ``[process-failure] => deleted``: The purse creation failed. We only show a transient error. * ``[action:abort] => deleted``: The user aborted the operation. -* ``pending(qr-ready)`` +* ``pending(ready)`` In this state, the user can send / show the ``taler://`` URI or QR code to somebody else. diff --git a/transaction-common-states.dot b/transaction-common-states.dot index 7f3c94fc..7b0bbd26 100644 --- a/transaction-common-states.dot +++ b/transaction-common-states.dot @@ -2,7 +2,6 @@ digraph G { initial[label="", shape="circle"]; pending[label="pending"]; - monolog[label="monolog", shape="box"]; dialog[label="dialog", shape="box"]; done[label="done", shape="box"]; aborted[label="aborted", shape="box", style="dashed"]; @@ -20,22 +19,20 @@ digraph G { rank = same; pending; aborting; } subgraph { - rank = same; dialog; monolog; suspended; suspended_aborting; + rank = same; dialog; suspended; suspended_aborting; } initial->pending; pending->suspended [color="blue",label="suspend"]; pending->expired [label="expire"]; - pending->monolog [color="green",label="success"]; pending->dialog [color="green",label="success"]; pending->pending [color="green",label="progress"]; pending->done [color="green",label="success"]; pending->failed [color="red",label="failure"]; pending->aborting [color="blue",label="abort", style="dashed"]; - monolog->pending [color="blue",label="OK"]; - monolog->deleted [color="blue", label="delete"]; - monolog->expired [label="expire"]; dialog->pending [color="blue",label="OK"]; + dialog->deleted [color="blue", label="delete"]; + dialog->expired [label="expire"]; dialog->aborting [color="blue", label="refuse", style="dashed"]; dialog->expired [label="expire"]; suspended->pending [color="blue",label="resume"]; diff --git a/transaction-payment-states.dot b/transaction-payment-states.dot index 7ad01a43..d0c602b5 100644 --- a/transaction-payment-states.dot +++ b/transaction-payment-states.dot @@ -4,11 +4,11 @@ digraph G { pending_sp[label="submit-payment"]; pending_ar[label="auto-refund"]; pending_re[label="rebind-session"]; - pending_cr[label="check-refunds"]; - pending_accept_refunds[label="accept-refunds"]; + pending_cr[label="check-refund"]; + pending_accept_refunds[label="accept-refund"]; aborting_pi[label="payment-incomplete", style=dashed]; aborted[label="aborted", shape="box", style=dashed]; - monolog_proposal[label="monolog(proposal)", shape="box"]; + dialog_proposal[label="dialog(merchant-order-proposed)", shape="box"]; done[label="done", shape="box"]; subgraph { @@ -22,9 +22,9 @@ digraph G { initial -> pending_dp; - pending_dp -> monolog_proposal [color=green]; + pending_dp -> dialog_proposal [color=green]; - monolog_proposal -> pending_sp [color=blue]; + dialog_proposal -> pending_sp [color=blue]; pending_sp -> pending_ar [color=green]; pending_sp -> aborting_pi [color=blue,style=dashed]; diff --git a/transaction-pull-credit-states.dot b/transaction-pull-credit-states.dot index 351c6819..bc979a30 100644 --- a/transaction-pull-credit-states.dot +++ b/transaction-pull-credit-states.dot @@ -1,7 +1,7 @@ digraph G { initial[label="", shape="circle"]; pending_create[label="purse-create"]; - pending_qr[label="qr-ready"]; + pending_qr[label="ready"]; aborting_delete[label="delete-purse", style=dashed]; pending_withdraw[label="withdraw"]; pending_kyc[label="kyc"]; diff --git a/transaction-push-debit-states.dot b/transaction-push-debit-states.dot index 47b7bc54..3f17c56e 100644 --- a/transaction-push-debit-states.dot +++ b/transaction-push-debit-states.dot @@ -2,7 +2,7 @@ digraph G { initial[label="", shape="circle", xlabel="peer-push-debit"]; pending_create[label="purse-create"]; - pending_qr[label="qr-ready"]; + pending_qr[label="ready"]; aborting_delete[label="delete-purse", style=dashed]; aborting_refresh[label="refresh", style=dashed]; done[label="done", shape="box"]; diff --git a/transaction-withdrawal-states.dot b/transaction-withdrawal-states.dot index 5ed6c657..9163c889 100644 --- a/transaction-withdrawal-states.dot +++ b/transaction-withdrawal-states.dot @@ -2,9 +2,9 @@ digraph G { initial_manual[label="", xlabel="manual" shape="circle"]; initial_bank[label="", xlabel="bank-integrated" shape="circle"]; pending_brr[label="bank-register-reserve"]; - pending_bc[label="bank-confirming"]; + pending_bc[label="bank-confirm"]; pending_ewr[label="exchange-wait-reserve"]; - pending_wc[label="withdrawing-coins"]; + pending_wc[label="withdraw-coins"]; pending_kyc[label="kyc"]; pending_aml[label="aml"]; done[label="done", shape="box"]; |