modified: docs/state-machine.dot modified: make_post_sell/lib/crypto_watcher/__init__.py modified: make_post_sell/models/crypto_payment.py modified: make_post_sell/tests/test_crypto_watcher.py modified: make_post_sell/tests/test_double_spend_integration.py modified: make_post_sell/tests/test_double_spend_protection.py modified: make_post_sell/tests/test_invoice_deletion.py modified: make_post_sell/tests/test_models.py
64 lines
5.2 KiB
Text
64 lines
5.2 KiB
Text
digraph G {
|
|
rankdir=LR;
|
|
node [shape=box, style="filled,rounded", penwidth=2, fontsize=12, fontname="Arial"];
|
|
edge [penwidth=1.5, fontsize=10, fontname="Arial"];
|
|
"[*]" [shape=circle, label="", width=0.2, fillcolor=black, style=filled];
|
|
"pending" [fillcolor="#e7f3ff", fontcolor="#0056b3", color="#0056b3", fontsize=12];
|
|
"doublepay_refunded" [fillcolor="#e7f3ff", fontcolor="#0056b3", color="#0056b3", fontsize=12];
|
|
"latepay_refunded" [fillcolor="#e7f3ff", fontcolor="#0056b3", color="#0056b3", fontsize=12];
|
|
"received" [fillcolor="#cce5ff", fontcolor="#004085", color="#004085", fontsize=12];
|
|
"expired" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"cancelled" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"confirmed" [fillcolor="#d4edda", fontcolor="#155724", color="#155724", fontsize=12];
|
|
"confirmed_complete" [fillcolor="#d4edda", fontcolor="#155724", color="#155724", fontsize=12];
|
|
"confirmed_overpay" [fillcolor="#cce5ff", fontcolor="#004085", color="#004085", fontsize=12];
|
|
"underpaid_refunded" [fillcolor="#fff3cd", fontcolor="#856404", color="#856404", fontsize=12];
|
|
"out_of_stock_refunded" [fillcolor="#fff3cd", fontcolor="#856404", color="#856404", fontsize=12];
|
|
"confirmed_overpay_refunded" [fillcolor="#fff3cd", fontcolor="#856404", color="#856404", fontsize=12];
|
|
"confirmed_overpay_refunded_complete" [fillcolor="#d4edda", fontcolor="#155724", color="#155724", fontsize=12];
|
|
"confirmed_overpay_not_refunded" [fillcolor="#d4edda", fontcolor="#155724", color="#155724", fontsize=12];
|
|
"latepay_refunded_complete" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"latepay_not_refunded" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"underpaid_refunded_complete" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"underpaid_not_refunded" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"out_of_stock_refunded_complete" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"out_of_stock_not_refunded" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"doublepay_refunded_complete" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"doublepay_not_refunded" [fillcolor="#f8d7da", fontcolor="#721c24", color="#721c24", fontsize=12];
|
|
"terminated" [shape=doubleoctagon, fillcolor="#e0e0e0", fontcolor="#333333", color="#333333", fontsize=12];
|
|
"[*]" -> "pending";
|
|
"[*]" -> "doublepay_refunded" [label="Duplicate payment detected"];
|
|
"[*]" -> "latepay_refunded" [label="Late payment detected"];
|
|
"pending" -> "received" [label="Payment detected in mempool"];
|
|
"pending" -> "expired" [label="Payment timeout (never received)"];
|
|
"pending" -> "cancelled" [label="User cancellation"];
|
|
"received" -> "confirmed" [label="Sufficient payment + confirmations"];
|
|
"received" -> "confirmed_overpay" [label="Overpayment detected"];
|
|
"received" -> "underpaid_refunded" [label="Underpayment detected"];
|
|
"received" -> "out_of_stock_refunded" [label="Product unavailable"];
|
|
"confirmed" -> "confirmed_complete" [label="Swept to cold storage"];
|
|
"confirmed_complete" -> "terminated" [label="✓ Terminal Success"];
|
|
"confirmed_overpay" -> "confirmed_overpay_refunded" [label="Initiate refund"];
|
|
"confirmed_overpay_refunded" -> "confirmed_overpay_refunded_complete" [label="Refund confirmed"];
|
|
"confirmed_overpay_refunded" -> "confirmed_overpay_not_refunded" [label="No refund wallet configured"];
|
|
"confirmed_overpay_refunded_complete" -> "terminated" [label="✓ Terminal Success"];
|
|
"confirmed_overpay_not_refunded" -> "terminated" [label="✓ Terminal Success (Not Refunded)"];
|
|
"expired" -> "terminated" [label="✓ Terminal Failed (Expired)"];
|
|
"latepay_refunded" -> "latepay_refunded_complete" [label="Refund confirmed"];
|
|
"latepay_refunded" -> "latepay_not_refunded" [label="No refund wallet configured"];
|
|
"latepay_refunded_complete" -> "terminated" [label="✓ Terminal Failed (Refund Complete)"];
|
|
"latepay_not_refunded" -> "terminated" [label="✓ Terminal Failed (Not Refunded)"];
|
|
"underpaid_refunded" -> "underpaid_refunded_complete" [label="Refund confirmed"];
|
|
"underpaid_refunded" -> "underpaid_not_refunded" [label="No refund wallet configured"];
|
|
"underpaid_refunded_complete" -> "terminated" [label="✓ Terminal Failed (Refund Complete)"];
|
|
"underpaid_not_refunded" -> "terminated" [label="✓ Terminal Failed (Not Refunded)"];
|
|
"out_of_stock_refunded" -> "out_of_stock_refunded_complete" [label="Refund confirmed"];
|
|
"out_of_stock_refunded" -> "out_of_stock_not_refunded" [label="No refund wallet configured"];
|
|
"out_of_stock_refunded_complete" -> "terminated" [label="✓ Terminal Failed (Refund Complete)"];
|
|
"out_of_stock_not_refunded" -> "terminated" [label="✓ Terminal Failed (Not Refunded)"];
|
|
"doublepay_refunded" -> "doublepay_refunded_complete" [label="Refund confirmed"];
|
|
"doublepay_refunded" -> "doublepay_not_refunded" [label="No refund wallet configured"];
|
|
"doublepay_refunded_complete" -> "terminated" [label="✓ Terminal Failed (Refund Complete)"];
|
|
"doublepay_not_refunded" -> "terminated" [label="✓ Terminal Failed (Not Refunded)"];
|
|
"cancelled" -> "terminated" [label="✓ Terminal Failed (Cancelled)"];
|
|
}
|