QR Top-Up Payment Flow
Premium checkout now starts with clear bank QR instructions before the user uploads a transfer slip.
await fetch("/api/payment/slip")
const formData = new FormData()
formData.append("file", slipImage)- Changed the Premium plan button into a top-up flow that opens a dedicated bank QR modal.
- Shows the server-configured receiver display name, exact amount, and masked transfer target before slip upload.
- Moved slip image selection below the QR/account details so users know where to transfer before submitting proof.
- Added a safe payment configuration response on GET /api/payment/slip for client payment instructions.