# -*- coding: utf-8 -*-
"""
ماژول پرداخت.

درگاه تومانی: در حالت PAYMENT_MODE=simulate یک لینک ساختگی می‌سازد که وقتی
کاربر روی «پرداخت کردم (تست)» بزند، پرداخت موفق فرض می‌شود.

برای فعال‌سازی درگاه واقعی (مثلاً زرین‌پال) فقط توابع
`request_payment` و `verify_payment` را با API واقعی جایگزین کنید؛
بقیه ربات بدون تغییر کار می‌کند.
"""
import config


# ────────────────────────── درگاه تومانی ──────────────────────────
def request_payment(order_id: int, amount_toman: int, description: str) -> dict:
    """
    درخواست ایجاد تراکنش. خروجی: {ok, authority, pay_url}
    در حالت شبیه‌سازی، pay_url داخلی است و توسط خود ربات هندل می‌شود.
    """
    if config.PAYMENT_MODE == "live" and config.ZARINPAL_MERCHANT_ID:
        # ── نمونهٔ اتصال واقعی زرین‌پال (غیرفعال تا زمان ست‌شدن مرچنت) ──
        # import requests
        # amount_rial = amount_toman * 10
        # r = requests.post(
        #     "https://payment.zarinpal.com/pg/v4/payment/request.json",
        #     json={
        #         "merchant_id": config.ZARINPAL_MERCHANT_ID,
        #         "amount": amount_rial,
        #         "description": description,
        #         "callback_url": f"{config.GATEWAY_CALLBACK_URL}?order={order_id}",
        #     }, timeout=20,
        # ).json()
        # data = r.get("data", {})
        # if data.get("code") == 100:
        #     authority = data["authority"]
        #     return {"ok": True, "authority": authority,
        #             "pay_url": f"https://payment.zarinpal.com/pg/StartPay/{authority}"}
        # return {"ok": False, "authority": None, "pay_url": None}
        raise NotImplementedError("درگاه واقعی هنوز پیکربندی نشده است.")

    # ── حالت شبیه‌سازی ──
    return {
        "ok": True,
        "authority": f"SIM-{order_id}",
        "pay_url": None,  # داخلی؛ با دکمهٔ inline هندل می‌شود
    }


def verify_payment(order_id: int, authority: str, amount_toman: int) -> bool:
    """تأیید نهایی تراکنش. در حالت شبیه‌سازی همیشه موفق."""
    if config.PAYMENT_MODE == "live" and config.ZARINPAL_MERCHANT_ID:
        # import requests
        # amount_rial = amount_toman * 10
        # r = requests.post(
        #     "https://payment.zarinpal.com/pg/v4/payment/verify.json",
        #     json={"merchant_id": config.ZARINPAL_MERCHANT_ID,
        #           "amount": amount_rial, "authority": authority},
        #     timeout=20,
        # ).json()
        # return r.get("data", {}).get("code") in (100, 101)
        raise NotImplementedError("درگاه واقعی هنوز پیکربندی نشده است.")
    return True  # simulate


# ────────────────────────── تتر (USDT) ──────────────────────────
def usdt_instructions(amount_usdt: float) -> str:
    """متن راهنمای پرداخت تتر."""
    from utils import fa_num
    return (
        f"💵 <b>پرداخت با تتر (USDT)</b>\n\n"
        f"مبلغ قابل پرداخت: <b>{amount_usdt} USDT</b>\n"
        f"شبکه: <b>{config.USDT_NETWORK}</b>\n\n"
        f"آدرس ولت:\n<code>{config.USDT_WALLET}</code>\n\n"
        f"۱) دقیقاً همین مبلغ را به آدرس بالا در شبکهٔ TRC20 واریز کنید.\n"
        f"۲) سپس <b>هش تراکنش (TXID)</b> را همین‌جا برای ما ارسال کنید.\n"
        f"۳) پس از بررسی و تأیید، لینک/فایل بلافاصله ارسال می‌شود.\n\n"
        f"⚠️ حتماً از شبکهٔ TRC20 استفاده کنید؛ واریز از شبکهٔ اشتباه قابل بازیابی نیست."
    )
