# payments/utils/razorpay_snap.py
import razorpay
from django.conf import settings

def fetch_razorpay_snapshot(rzp_order_id: str) -> dict:
    """
    Returns a dict: {
      "ok": bool,
      "order": {...} or None,
      "latest_payment": {...} or None,
      "error": str or None
    }
    """
    out = {"ok": False, "order": None, "latest_payment": None, "error": None}
    if not rzp_order_id:
        out["error"] = "Missing razorpay_order_id"
        return out

    try:
        client = razorpay.Client(auth=(settings.RAZORPAY_API_KEY, settings.RAZORPAY_API_SECRET))
        order = client.order.fetch(rzp_order_id)
        payments = client.order.payments(rzp_order_id).get("items", []) or []
        payments.sort(key=lambda p: p.get("created_at", 0), reverse=True)
        latest = payments[0] if payments else None
        out.update({"ok": True, "order": order, "latest_payment": latest})
    except razorpay.errors.BadRequestError as e:
        out["error"] = f"Razorpay BadRequestError: {e}"
    except Exception as e:
        out["error"] = f"Razorpay error: {e}"
    return out
