from recharge.services.goterpay_client import get_goterpay_client
from recharge.services.goterpay_api import GoterPayError
import string, secrets

def make_txn_id(prefix="VP", max_len=10):
    alphabet = string.ascii_uppercase + string.digits
    need = max(0, max_len - len(prefix))
    return (prefix + "".join(secrets.choice(alphabet) for _ in range(need)))[:max_len]

def normalize_plate(p):
    return (p or "").upper().replace(" ", "")

client = get_goterpay_client()

txnid   = make_txn_id()                       # e.g., 'VPXXXXXXX' (<= 10 chars)
number  = normalize_plate("AP15BE3333")       # 'AP15BE3333'
operator = "BAJF"                             # FASTag provider code

try:
    res = client.bill_fetch(
        number=number,
        operator_code=operator,
        txnid=txnid,
        optional1=None,   # we’re ignoring optional
    )
    print("FETCH OK:", res)
except GoterPayError as e:
    print("FETCH FAILED:", str(e))
    print("status_code:", getattr(e, "status_code", None))
    print("payload:", getattr(e, "payload", None))

# FETCH OK: {'operator': 'BAJF', 'status': 'SUCCESS', 'message': 'Bill Fetch successfully', 'dueAmount': '1.0', 'dueDate': None, 'customerName': 'NAGARAJU DIDDI', 'billNumber': 'AP15BE3333', 'billDate': None, 'billPeriod': 'Jan-1970', 'refId': 'G20250901124026426803', 'editable': True}
