AlixFast PerfectPanel v2 — INTEGRATION GUIDE (step by step, file by file)
====================================================================
Ye guide batati hai: KONSI FILE KAHAN upload karni hai, KONSA CODE
KIS FILE MEIN kahan lagana hai, aur har step ke baad kya check karna hai.
Agar aapne pehle v1 install kiya hua hai, to pehle uski purani files
ka backup le lein, phir v2 files se replace karein.

PEHLE — ZIP KO UNZIP KAREIN
-----------------------------
Zip: AlixFast-PerfectPanel-v2-Original.zip
Unzip karne par ye folders milenge:
  alixfast-pay/        (5 PHP files)
  panel-integration/   (SQL + Initiator + patches)
  assets/              (logo)
  README-INSTALL-v2.txt
  INTEGRATION-GUIDE-URDU.txt  (ye file)

STEP 1 — alixfast-pay FOLDER UPLOAD KAREIN
------------------------------------------
Kahan: public_html/alixfast-pay/
Kya: alixfast-pay/ ki 5 files, sab ek hi folder mein:
  1. config.php         -> public_html/alixfast-pay/config.php
  2. alixfast_lib.php   -> public_html/alixfast-pay/alixfast_lib.php
  3. pay.php            -> public_html/alixfast-pay/pay.php
  4. return.php         -> public_html/alixfast-pay/return.php
  5. callback.php       -> public_html/alixfast-pay/callback.php
Kaam:
  - config.php = gateway ka dimagh (keys, DB, tables).
  - alixfast_lib.php = credit, conversion, log ka kaam.
  - pay.php = user jab "Pay" dabaye to AlixFast checkout banaye.
  - return.php = checkout se wapas aane par verify + redirect.
  - callback.php = webhook (AlixFast ki taraf se payment confirm).
Check: browser mein https://YOURPANEL.com/alixfast-pay/callback.php
kholne par "bad signature" aana chahiye. Ye matlab file live hai.

STEP 2 — LOGO UPLOAD KAREIN
---------------------------
Kahan: public_html/assets/alixfast-logo.png
Kya: assets/alixfast-logo.png (original AlixFast logo)
Check: https://YOURPANEL.com/assets/alixfast-logo.png kholne par
logo dikhna chahiye. Agar logo na dikhe to Quick Deposit card mein
logo nahi aayega — pehle isi ko theek karein.

STEP 3 — CONFIG.PHP MEIN APNI DETAILS DALEIN
---------------------------------------------
File: public_html/alixfast-pay/config.php (SIRF ye file edit karein)
Kya dalna hai:
  a) AFX_PUBLIC_KEY / AFX_SECRET_KEY
     Kahan se: AlixFast merchant panel -> Integration page se copy karein.
     (Ye keys kabhi kisi ko forward na karein, zip mein bhi na dalein.)
  b) AFX_DB_HOST / NAME / USER / PASS
     Kahan se: panel ki apni config — public_html/app/config.php
     mein jo DB details hain, wohi yahan dalein.
  c) AFX_USERS_TABLE / AFX_USER_ID_COL / AFX_BALANCE_COL
     Default: clients / id / balance (Gill wali setting).
     Agar aapke panel mein users table ka naam alag hai to wohi likhein.
  d) AFX_LOG_FILE
     Log file public_html ke BAHAR honi chahiye, warna koi bhi usay
     browser se khol lega. Example:
       /home/USERNAME/alixfast-callback.log
     (USERNAME ki jagah apna hosting username likhein.)
  e) AFX_RETURN_PAGE = /addfunds (change na karein jab tak aapke panel
     mein Add Funds ka URL alag na ho.)
  f) AFX_BASE_CURRENCY = USD hi rakhein. PKR mein change NA karein —
     PKR payment convert hokar USD mein credit hoti hai.

STEP 4 — SQL RUN KAREIN (phpMyAdmin)
--------------------------------------
File: panel-integration/sql/install.sql
Kahan: Hostinger -> Databases -> phpMyAdmin -> panel wali database
       (example: u891629959_gillsmmpanel) -> SQL tab mein paste karke Run.
Kya hoga:
  - Pehle sab methods ki position 1 se neeche shift hogi.
  - Phir AlixFast ki row banegi:
      methodId = 110, Name = AlixFast, Callback = alixfast,
      Min = 10, Max = 100000, Fee = 0, Currency = USD,
      Status = Active, Position = 1,
      Instructions = webhook wali line, Logo = /assets/alixfast-logo.png
  - Agar 110 pehle se kisi aur method ka hai to:
      1. SELECT MAX(methodId) FROM paymentmethods; se free id dekhein.
      2. SQL mein har jagah 110 ki jagah woh free id likhein.
      3. Initiator file mein bhi wohi id likhein (Step 5).
Check (SQL run ke baad):
  SELECT methodId, methodName, methodStatus, methodPosition, methodMin, methodMax
  FROM paymentmethods WHERE methodId = 110;
  Result mein AlixFast, Active, Position 1 aana chahiye.

STEP 5 — INITIATOR FILE UPLOAD KAREIN
--------------------------------------
File: panel-integration/addfunds-Initiator-alixfast.php
Kahan: public_html/app/controller/addfunds/Initiators/alixfast.php
       (file ka naam "alixfast.php" hona chahiye, poora naam nahi)
Kaam: jab user Add Funds mein AlixFast select karke amount dale,
to ye file pehle panel mein PENDING payment row banati hai, phir
user ko /alixfast-pay/pay.php par bhejti hai.
Zaroori: is file mein methodId 110 hai — agar Step 4 mein id badli
hai to yahan bhi wohi id likhein.

STEP 6 — ADDFUNDS.PHP MEIN DISPATCH LINE LAGAYEIN
-------------------------------------------------
File: public_html/app/controller/addfunds.php
Kahan: us jagah jahan baaki methods (stripe, paypal waghera) ki
       dispatch lines hain, unke saath ye line lagayein:
         elseif ($methodId == 110) { $this->load->controller('addfunds/Initiators/alixfast'); }
       (Aapke version mein syntax thoda alag ho sakta hai — maujooda
        stripe wali line ko dekh kar usi style mein likhein.)
Kaam: Add Funds form submit hone par panel ko pata chale ke
AlixFast wala method isi Initiator se chalega.

STEP 7 — GETFORM MEIN ALIXFAST FORM LAGAYEIN
---------------------------------------------
File: public_html/app/controller/addfunds/getForm.php
Kahan: us jagah jahan har method ka form banta hai, AlixFast
       (method 110) ke liye ye branch lagayein:
         - Label: "Amount (PKR)"
         - Note: "Amount is entered in PKR only. It is converted to
           USD at the panel rate when credited.
           Minimum: PKR {min} | Maximum: PKR {max}"
           ({min}/{max} paymentmethods row se aayenge, hardcode NA karein)
         - Amount input: min={min} max={max}
         - Button: "Initiate Payment"
Kaam: user ko form mein PKR, min/max aur conversion saaf dikhe.

STEP 8 — METHODS LIST MEIN MIN/MAX SHAMIL KAREIN
-------------------------------------------------
File: public_html/app/controller/addfunds.php
Masla (v1 ka bug): template ko sirf id, name, instructions aur fee
milti thi — min/max milta hi nahi tha, isliye Admin mein min 10
karne par bhi form mein 200 dikhta tha.
Fix: methods wali list/array mein ye 4 fields bhi shamil karein:
  min, max, methodMin, methodMax
  (paymentmethods row se, har method ke liye)
Check: Admin mein AlixFast ka min badal kar form reload karein —
form par naya min turant dikhna chahiye, file dobara edit kiye baghair.

STEP 9 — ADDFUNDS.TWIG MEIN QUICK CARD + HISTORY
-------------------------------------------------
File: public_html/app/views/<APKA-THEME>/addfunds.twig
       (Gill mein: app/views/Eternity/addfunds.twig)
a) Quick Deposit card:
   Sab se pehle AlixFast ka card lagayein, is tarah:
     - Logo: /assets/alixfast-logo.png
     - Naam: AlixFast
     - Click karne par: payment method dropdown mein AlixFast select
       ho aur uska form load ho (baaki quick cards ki tarah).
b) Payment History (USER ko):
   Sirf Successful Credit wali rows dikhayein. Columns:
     ID | DATE | METHOD | AMOUNT | TRANSACTION ID | STATUS
   - Pending / Failed / unpaid rows USER ko bilkul NA dikhayein
     (CSS se chhupana kaafi nahi — template mein render hi na karein).
   - Transaction ID = AlixFast checkout id ("AlixFast:<id>" note se).
   - Amount = PKR mein, Status = "Successful Credit".
   - Agar koi successful credit na ho to likhein:
       "No successful credits found."
   - Poori history (Pending/Failed/Successful) Admin mein waisi hi
     rahegi — Admin ki file edit NA karein.
c) Return banner:
   Jab URL mein alixfast=credited ho to ye green banner dikhayein:
     "Paid PKR {paid_pkr} -> credited ${credited_usd} (converted to USD)."

STEP 10 — ADMIN SETTINGS MEIN KEYS + WEBHOOK FIELD
---------------------------------------------------
File: Admin -> Payments -> payment settings wali files
       (aapke version mein naam alag ho sakta hai — maujooda
        method 37 wali pattern ko follow karein)
Kaam:
  - Method 110 ko automatic-methods list mein shamil karein, taake
    Admin -> Payments -> AlixFast mein ye fields dikhein:
      Public Key, Secret Key, Webhook URL (read-only)
  - Webhook URL field mein ye dikhna chahiye:
      https://YOURPANEL.com/alixfast-pay/callback.php
  - Keys Admin mein save hon (paymentmethods.methodExtras mein
    public_key / secret_key) aur config.php unhein PEHLE parhe —
    warna Admin mein key badalne par bhi purani key chalegi.
  - Native payment.php callback route mein AlixFast ki branch NA
    lagayein — warna double credit ka khatra hai. Sirf
    alixfast-pay/callback.php hi credit karega.

STEP 11 — WEBHOOK URL ALIXFAST MERCHANT PANEL MEIN SET KAREIN
--------------------------------------------------------------
Kahan: AlixFast merchant panel -> Integration -> Webhook URL
Kya: https://YOURPANEL.com/alixfast-pay/callback.php
Zaroori: create-payment call se webhook URL NAHI jata — ye URL
merchant panel mein set karna LAZMI hai, warna AlixFast kabhi
webhook nahi bhejega aur payment hamesha pending hi rahegi.

STEP 12 — TEST (chhoti real payment, example PKR 10)
----------------------------------------------------
1. Add Funds -> Quick Deposit mein AlixFast pehle dikhna chahiye,
   logo ke saath, click karne par form khulna chahiye.
2. Form mein "Amount (PKR)" aur min/max note saaf dikhna chahiye.
3. PKR 10 ki payment karein. AlixFast checkout par Total PKR mein
   dikhna chahiye.
4. Payment confirm hone ke baad wapas Add Funds par aana chahiye,
   green banner ke saath: Paid PKR 10 -> credited $0.0361 (rate ke
   hisab se thoda farq ho sakta hai, rate panel ki currencies table
   se aata hai).
5. User history mein EK Successful Credit row aani chahiye
   (PKR amount, AlixFast, Transaction ID).
6. Wapas wahi return URL dobara kholne par balance DOBARA NA barhe
   (double credit check).
7. Agar balance na barhe to: pehle AFX_LOG_FILE check karein,
   phir Step 11 ka webhook URL dobara check karein.

ZAROORI WARNINGS
----------------
- Panel Admin ka theme editor agar "Forbidden" de to us se save karne
  ki koshish na karein — theme files Hostinger File Manager se edit
  karein (Gill mein yehi masla tha, Oct 2026).
- config.php kabhi kisi ke saath share na karein, aur public zip mein
  real keys kabhi na dalein.
- Credit SIRF webhook (callback.php) ya verified return recheck se
  hota hai — browser ke success page se kabhi balance add NA karein.
- Purani pending rows ko haath se credit NA karein jab tak AlixFast
  se verified + order_ref + amount match na ho jaye.
