taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit b40e3af8fd8cb9cd439742c829d1665fbdfb6bb2
parent ba420a8d2588e56e61832b11496a8a51f08099a8
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun,  9 Apr 2023 19:10:16 +0200

work paying invoices for DD37

Diffstat:
MMakefile | 4+++-
Mdesign-documents/037-wallet-transactions-lifecycle.rst | 66+++++++++++++++++++++++++++++++++++++++++++++++++++---------------
2 files changed, 54 insertions(+), 16 deletions(-)

diff --git a/Makefile b/Makefile @@ -73,6 +73,8 @@ transaction-push-credit-states.png: transaction-push-credit-states.dot dot -Tpng transaction-push-credit-states.dot > transaction-push-credit-states.png transaction-pull-credit-states.png: transaction-pull-credit-states.dot dot -Tpng transaction-pull-credit-states.dot > transaction-pull-credit-states.png +transaction-pull-debit-states.png: transaction-pull-debit-states.dot + dot -Tpng transaction-pull-debit-states.dot > transaction-pull-debit-states.png coin.png: coin.dot dot -Tpng coin.dot > coin.png deposit.png: deposit.dot @@ -80,7 +82,7 @@ deposit.png: deposit.dot reserve.png: reserve.dot dot -Tpng reserve.dot > reserve.png -diagrams: arch-api.png coin.png deposit.png reserve.png transaction-common-states.png transaction-withdrawal-states.png transaction-payment-states.png transaction-refund-states.png transaction-refresh-states.png transaction-tip-states.png transaction-deposit-states.png transaction-push-debit-states.png transaction-push-credit-states.png transaction-pull-credit-states.png +diagrams: arch-api.png coin.png deposit.png reserve.png transaction-common-states.png transaction-withdrawal-states.png transaction-payment-states.png transaction-refund-states.png transaction-refresh-states.png transaction-tip-states.png transaction-deposit-states.png transaction-push-debit-states.png transaction-push-credit-states.png transaction-pull-credit-states.png transaction-pull-debit-states.png # The html-linked builder does not support caching, so we diff --git a/design-documents/037-wallet-transactions-lifecycle.rst b/design-documents/037-wallet-transactions-lifecycle.rst @@ -1046,7 +1046,7 @@ TODO: Also specify variant where account reserve needs to be created / funded fi * ``done`` - The invoice was successfully paid. + The payment for the invoice was successfully received. * ``[action:delete] => deleted`` @@ -1061,52 +1061,88 @@ Transaction Type: Peer Pull Debit * ``initial`` - Wallet read the taler:// URI + Initial state where we encounter the taler:// URI. + + * ``[trigger] => pending(download)`` + +* ``pending(download)`` + + We are downloading the information about the invoice. - * ``[action:success] => pending(invoice-downloaded)`` + * ``[action:suspend] => suspended(download)`` + * ``[success] => pending(user)`` +* ``suspended(download)`` -* ``pending(invoice-downloaded)`` + User suspended downloading the information about the invoice. - We've downloaded information about the pull payment and are waiting - for the user to confirm. + * ``[action:resume] => pending(download)`` + * ``[action:cancel] => deleted`` + +``pending(user)`` + + We have downloaded information about the pull payment and are waiting for + the user to confirm. - * ``[action:abort] => aborted``: Safe to abort! * ``[action:confirm-pay] => pending(submit-payment)`` + * ``[action:cancel] => deleted`` + * ``[timeout] => aborted`` -* ``pending(submit-payment)`` +* ``pending(deposit)`` The user has confirmed the payment and the wallet tries to deposit into the provided purse. - * ``[action:abort] => aborting(refund)`` - * ``[processed-success(auto-refund-enabled)] => pending(refundable)`` + * ``[action:suspend] => suspended(deposit)`` + * ``[processed-success(auto-refund-enabled)] => pending(refundable)``. FIXME(CG): I think we should not support auto-refund. * ``[processed-success(auto-refund-disabled)] => done`` - * ``[processed-error(expired)] => aborting(refresh)`` + * ``[failure:timeout] => aborting(refresh)`` * ``[processed-success] => done`` - * ``[action:abort] => aborting(refresh)`` + * ``[failure:other] => aborting(refund)`` + +* ``suspended(deposit)`` + + User suspended depositing into the purse. + + * ``[action:resume] => pending(deposit)`` + * ``[action:abort] => aborting_refund`` * ``pending(refundable)`` -The payment succeed but if auto-refund-check is active it will be checking for refunds + The payment succeed but if auto-refund-check is active it will be checking for refunds. + FIXME(CG): I do not think we should support auto-refunds here. Not included in diagram. * ``[auto-refund-timeout] => done`` * ``aborting(refund)`` + Aborts the payment, asking for the already deposited coins to be refunded. + * ``[processed-success] => aborted(refunded)`` * ``[processed-failure] => aborting(refresh)`` - + * ``[action:force-abort] => aborted`` * ``aborting(refresh)`` - XXX Before refreshing, should we not wait until the purse has expired? + Refreshes the coins that were previously deposited into the purse to recover their value. * ``[processed-success] => aborted`` * ``[processed-failed] => failed`` * ``done`` + The invoice was successfully paid. + + * ``[action:delete] => deleted`` + +* ``deleted`` + + All information about the invoice has been deleted. + +.. image:: ../transaction-pull-debit-states.png + :width: 800 + + Alternatives ============