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:
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
============