Add STATUS_CONFIRMED_OVERPAID_REFUNDED to double payment detection

Extended double payment detection to include the terminal overpaid refunded
state. Now detects double/triple payments to all confirmed order states:

- STATUS_CONFIRMED (payment complete)
- STATUS_CONFIRMED_OVERPAID (payment complete but overpaid, refund pending)
- STATUS_CONFIRMED_OVERPAID_REFUNDED (overpayment refund complete)

This ensures that if customers send additional payments even after their
overpayment has been refunded, the system will still detect and handle
these correctly.
This commit is contained in:
Russell Ballestrini 2025-09-26 13:16:58 -04:00
parent 431e5d936b
commit aa477b129f

View file

@ -102,7 +102,11 @@ def _should_process_late_payment(payment, tx):
return True
# Edge Case 3 & 4: Double payment - payment already confirmed but more funds arrived
if payment.status in [CryptoPayment.STATUS_CONFIRMED, CryptoPayment.STATUS_CONFIRMED_OVERPAID] and payment.received_amount > 0:
if payment.status in [
CryptoPayment.STATUS_CONFIRMED,
CryptoPayment.STATUS_CONFIRMED_OVERPAID,
CryptoPayment.STATUS_CONFIRMED_OVERPAID_REFUNDED
] and payment.received_amount > 0:
current_total = payment.received_amount + tx_amount
logger.info(f"Double payment detected for {payment.status} payment {payment.id}: received {payment.received_amount}, new {tx_amount}, total {current_total}")
if current_total > payment.expected_amount: