import type { IncomingMessage } from "http"; import * as https from "https"; export interface WechatTokenResponse { access_token?: string; expires_in?: number; errcode?: number; errmsg?: string; } export function httpsGetJson(url: string): Promise { return new Promise((resolve, reject) => { https.get(url, (res: IncomingMessage) => { let data = ""; res.on("data", (chunk: Buffer) => { data += chunk; }); res.on("end", () => { try { resolve(JSON.parse(data) as WechatTokenResponse); } catch (_error) { reject(new Error("Invalid JSON from WeChat API")); } }); }).on("error", reject); }); }