import re

def parse_payment_sms(text, sender=None):
    """
    Parses bKash/Nagad SMS to extract Amount and TrxID.
    Checks for official senders to prevent scams.
    Returns (amount, txnid, method) or None.
    """
    # 🚨 SCAM DETECTION: Check if sender is official
    OFFICIAL_SENDERS = ["BKASH", "NAGAD", "UPAY", "ROCKET", "16247", "16167", "BINANCE", "16222", "01823075000"]
    if sender and str(sender).upper() not in OFFICIAL_SENDERS:
        print(f"[SCAM ALERT] Fake SMS from: {sender}")
        return None

    text_clean = text.replace("\n", " ")
    
    # 1. bKash Pattern
    bkash_pattern = r"Tk ([\d,.]+).+TrxID ([\w\d]+)"
    bkash_match = re.search(bkash_pattern, text_clean)
    if bkash_match:
        amount = float(bkash_match.group(1).replace(",", ""))
        txnid = bkash_match.group(2)
        return amount, txnid, "bKash"

    # 2. Nagad Pattern
    nagad_pattern = r"Tk ([\d,.]+).+TxnID:\s?([\w\d]+)"
    nagad_match = re.search(nagad_pattern, text_clean)
    if nagad_match:
        amount = float(nagad_match.group(1).replace(",", ""))
        txnid = nagad_match.group(2)
        return amount, txnid, "Nagad"

    # 3. Rocket Pattern
    rocket_pattern = r"Tk\. ([\d,.]+).+TxnID: ([\w\d]+)"
    rocket_match = re.search(rocket_pattern, text_clean)
    if rocket_match:
        amount = float(rocket_match.group(1).replace(",", ""))
        txnid = rocket_match.group(2)
        return amount, txnid, "Rocket"

    # 4. Binance Pattern (Simple)
    # Example: You have successfully deposited 10.00 USDT. TxnID: 12345678
    binance_pattern = r"deposited ([\d,.]+).+TxnID:\s?([\w\d]+)"
    binance_match = re.search(binance_pattern, text_clean)
    if binance_match:
        amount = float(binance_match.group(1).replace(",", ""))
        txnid = binance_match.group(2)
        return amount, txnid, "Binance"

    return None
