﻿==== SizPay <-> Bot financial core: real tests ====
PASS | TEST1 online charge credits wallet
PASS | TEST1 order marked paid+applied
PASS | TEST1 confirmed charge tx (sizpay) written
PASS | TEST2 cumulative balance 300000
PASS | TEST3 duplicate callback no double credit
PASS | TEST3 duplicate reports already_processed
PASS | TEST4 verify failed leaves balance unchanged
PASS | TEST4 order not paid
PASS | TEST5 amount mismatch detected
PASS | TEST5 amount mismatch => no credit
PASS | TEST5 order verification_failed
PASS | TEST6 invalid HMAC rejected
PASS | TEST7 expired timestamp rejected
PASS | TEST8 first nonce accepted
PASS | TEST8 reused nonce rejected
PASS | TEST9 invalid order token yields no order
PASS | TEST10 payment detected expired
PASS | TEST10 expired order is refused for new payment
PASS | TEST10 balance unchanged (no auto credit)
PASS | TEST11 first refno credited
PASS | TEST11 duplicate refno refused
PASS | TEST11 balance not double-credited
PASS | TEST12 timeout => no credit
PASS | PURCHASE debits wallet
PASS | PURCHASE records balance_before/after
PASS | INSUFFICIENT rejected
PASS | INSUFFICIENT balance unchanged
PASS | DOUBLE-SPEND only one debit succeeds
PASS | DOUBLE-SPEND balance never negative
PASS | NEGATIVE guard: over-debit rejected
PASS | RECOVERY credit_failed when user missing
PASS | RECOVERY credits once after fix
PASS | RECOVERY idempotent (no double credit)
PASS | CONVERT toman->rial x10
PASS | CONVERT rial->toman /10
PASS | CONVERT order stores rial correctly
PASS | AUDIT all confirmed txs have reason + balances

==== RESULT: 37 passed, 0 failed ====
