EXAM BOT API - STANDALONE PHP + MYSQL
======================================

REQUIREMENTS
- PHP 8.0+ (recommended 8.2+)
- MySQL 5.7+ / MariaDB 10.4+
- PHP extensions: PDO_MYSQL, cURL, OpenSSL
- API server reachable from this PHP hosting

INSTALLATION
1. ZIP extract करके सभी files अपनी domain के public_html या subfolder में upload करें।
2. MySQL में नया database और database user बनाएं; user को उस database पर full privileges दें।
3. Browser में https://your-domain/install.php खोलें।
4. DB details, Exam Bot API Base URL, API Key और admin login भरें।
   Base URL उदाहरण: https://API-HOST/api/exam-bot
   यदि API उसी server पर चल रही है तो localhost URL तभी उपयोग करें जब PHP hosting से port 3001 reachable हो।
5. Installation success के बाद install.php को तुरंत delete करें।
6. login.php से login करें।
7. Settings में Test API Health चलाएं।
8. Hosting में HTTPS/SSL चालू रखें।

IMPORTANT API NOTES
- Pricing: GET /pricing (बिना key)
- Balance: GET /balance
- Submit: POST /submit
- Status: GET /status/{dbId}
- List endpoint API docs में उपलब्ध है। इस build में local MySQL task history pagination है।
- Screenshot: GET /screenshot/{dbId}
- Health: GET /health

SECURITY
- API key config.php में server-side रहती है; browser में नहीं भेजी जाती।
- Screenshot में पहले दिखी API key सार्वजनिक हो चुकी हो सकती है। Provider panel से पुरानी key revoke करके नई key बनाएं और install करते समय नई key डालें।
- API Base URL को HTTPS रखें। Self-signed/invalid TLS certificate को ठीक करें; TLS verification बंद न करें।
- Exam DOB/password/PIN को local MySQL में save नहीं किया जाता। वे केवल submit request के समय API को भेजे जाते हैं। API provider अपने स्तर पर क्या store करता है, उसकी policy अलग से जाँचें।
- config.php, install.php और database credentials को सार्वजनिक न करें। Install के बाद install.php delete करें।
- नियमित backup, strong admin password और updated PHP रखें।

LIMITATIONS / EXPECTED API BEHAVIOR
- Status refresh के लिए submit response में dbId जरूरी है।
- Screenshot API को PNG/image content-type लौटाना चाहिए।
- Auto-refund API provider के backend की जिम्मेदारी है; panel केवल API response में returned refund status/amount दिखाता है।
- API docs के sample responses के अनुसार fields map किए गए हैं। Provider के actual response field names अलग हों तो integration में बदलाव करना पड़ सकता है।
