PASS decimal 10.00
PASS decimal 0.000000000000000001
PASS decimal 1.234567890123456789
PASS decimal 9e-18
PASS decimal 1e2
PASS decimal 001.5000
PASS decimal -0.000
PASS reject non-decimal
PASS onsite redirect stays on merchant site
PASS resume link includes order ID
PASS JSON decimal lexeme survives decoding
PASS configured unique amount direction sent
PASS create request signature
PASS no credential redirect and TLS verification enabled
PASS reopen does not create another payment
PASS successful creation clears uncertain flag
PASS creation lock released
PASS valid order binding
PASS reject changed order_id
PASS reject changed merchant_order_id
PASS reject changed currency
PASS reject changed amount
PASS reject changed payment_method
PASS reject changed payment_address
PASS reject changed pay_amount
PASS query wallet_type plus network binding
PASS signed query verifies existing payment
PASS query signature uses raw query text
PASS view retains payable precision
PASS public view excludes customer and secret data
PASS underpayment stays underpaid
PASS overpayment requires server review
PASS unknown status rejected
PASS expiry compares server-origin timestamps
PASS HPP keeps hosted checkout URL
PASS network error returns checkout failure
PASS uncertain create is queried without another POST
PASS uncertain create recovers existing payment by merchant reference
PASS concurrent create rejected
PASS paid order returns completion link
PASS cancelled order cannot reopen payment
PASS AJAX rejects expired nonce
PASS AJAX rejects wrong order key
PASS AJAX returns bound waiting payment
PASS AJAX throttles upstream query via eight-second cache
PASS AJAX settles authenticated PAID result
PASS payment completion runs once
PASS repeated poll does not complete payment twice
PASS settlement lock released
PASS AJAX refuses cancelled order
PASS AJAX does not settle underpayment
PASS AJAX rejects mismatched paid amount
PASS verified server can replay saved request after conclusive not-found
PASS replay uses unchanged request ID and payload bytes
PASS legacy attempt never given a newly invented replay ID
PASS query failure cannot trigger replay
PASS explicit JSON validation rejection clears uncertain marker
PASS in-progress conflict remains unresolved
PASS server error remains unresolved
PASS create diagnostic gives safe machine code
PASS server error retains uncertain attempt
PASS legacy 404 cannot trigger duplicate create
PASS recovery diagnostic separates not-found
PASS repeated failure does not spam order notes
PASS private upstream text excluded from diagnostic note
PASS definitive 401 clears uncertain flag
PASS saved merchant reference retained across store URL changes
PASS legacy account order resumes on reference-safe server
PASS legacy recovery persists new stable request then clears unresolved flag
PASS distinct unpaid purchase 201 can create payment
PASS distinct unpaid purchase 202 can create payment
PASS same amount purchases use independent request IDs
PASS same amount purchases use independent merchant references

73 checks passed (mock WordPress/WooCommerce/API).
