- Changed purchase flow to use generateIdempotencyKey() which uses secure window.crypto.getRandomValues with a math fallback, avoiding secure-context blocks on HTTP - Log actual error to console in both Buy and Redeem catch blocks
- Changed purchase flow to use generateIdempotencyKey() which uses secure window.crypto.getRandomValues with a math fallback, avoiding secure-context blocks on HTTP - Log actual error to console in both Buy and Redeem catch blocks