-- QRIS Payment Migration -- Add QRIS fields to pembayaran table ALTER TABLE pembayaran ADD COLUMN IF NOT EXISTS qris_qr_code TEXT NULL COMMENT 'QRIS QR code content', ADD COLUMN IF NOT EXISTS qris_invoiceid VARCHAR(100) NULL COMMENT 'QRIS Invoice ID untuk check status', ADD COLUMN IF NOT EXISTS qris_nmid VARCHAR(100) NULL COMMENT 'QRIS NMID dari API', ADD COLUMN IF NOT EXISTS qris_request_date DATETIME NULL COMMENT 'Tanggal request QRIS invoice', ADD COLUMN IF NOT EXISTS qris_expired_at DATETIME NULL COMMENT 'QRIS expiration timestamp (30 menit dari request)', ADD COLUMN IF NOT EXISTS qris_check_count INT DEFAULT 0 COMMENT 'Jumlah check status (max 3 untuk user-triggered)', ADD COLUMN IF NOT EXISTS qris_last_check_at DATETIME NULL COMMENT 'Last check status timestamp', ADD COLUMN IF NOT EXISTS qris_status ENUM('unpaid', 'paid', 'expired') DEFAULT 'unpaid' COMMENT 'Status pembayaran QRIS', ADD COLUMN IF NOT EXISTS qris_payment_method VARCHAR(50) NULL COMMENT 'Metode pembayaran e-wallet (gopay, dana, ovo, dll)', ADD COLUMN IF NOT EXISTS qris_payment_customer_name VARCHAR(255) NULL COMMENT 'Nama customer dari e-wallet', ADD COLUMN IF NOT EXISTS qris_paid_at DATETIME NULL COMMENT 'Tanggal pembayaran QRIS'; -- Index untuk performa query CREATE INDEX IF NOT EXISTS idx_qris_invoiceid ON pembayaran(qris_invoiceid); CREATE INDEX IF NOT EXISTS idx_qris_status ON pembayaran(qris_status); CREATE INDEX IF NOT EXISTS idx_qris_expired_at ON pembayaran(qris_expired_at);