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

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