import type { AuthToken } from "./token"; import type { RequestOptions, RequestInternalError } from "@seayoo-web/request"; export declare class WeixinApi { private token; private _appid; private req; /** * 创建微信相关功能接口 * * - authToken 需要导入 AuthToken 进行初始化后传入 * - appid 可以静态设置,也可以在小程序中动态获取,见下示例代码 * * ```js * const info = wx.getAccountInfoSync(); * console.log(info.miniProgram.appId) * ``` * * https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html */ constructor(authToken: AuthToken, appid: string); get appid(): string; /** * 检查缓存中的登录数据 * * 如果没有缓存或缓存数据错误,则需要调用 [wx.login](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html) 后调用 login 方法 * * 也可以直接调用 login 方法,并传入 weixin code 的读取函数 */ getLoginCache(): Promise; /** * 小程序页面微信静默登录,获取 weixinToken / open_id / union_id。 * * 使用场景: * * - 小程序的任意页面打开后应该优先调用此方法以获取登录状态 * * 注意: * * - 登录成功后会将登录信息缓存到本地,重复或并发调用不会引起任何副作用。 * - 由于小程序的存储是以用户维度隔离的,每个微信用户在每个小程序下只要成功调用一次此 API 就会缓存请求结果。 * - 微信公众号网页授权请使用 webLogin 方法 * * 🔕请求静默进行,无消息提示 * * https://kdocs.cn/l/cf2mO2uRLqh9?linkname=GwIZ0givCb */ login(requestOptions?: RequestOptions): Promise; /** * 在微信内嵌网页中调用微信公众号授权登录【暂未启用】 * * 注意: * * - 登录回调地址强制是当前页面,包括 location search 和 location hash 部分 * - 登录跳转返回 code 后,会将 code 从 url 中删除以防止 code 泄露,如需设置分享则需要在此方法执行完毕之后 * * 官方参考资料: * * - [微信网页开发 / 网页授权](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html) * * @param scope - 网页授权作用域 * - snsapi_base 不弹出授权页面,用户无感知,只能获取用户 openid,如果需要获取 union_id 则需要 snsapi_userinfo * - snsapi_userinfo 【默认】弹出授权页面,可拿到 openid、union_id、昵称、头像等信息,但用户也可能会拒绝授权 */ /** * 关联游戏账号,无返回值,全程静默 * * 用于从游戏内跳转至小程序时,将微信用户身份和游戏内身份关联起来,使得后续的企业微信客服流程能够知道该微信用户在游戏内的身份。 * * 🔕请求静默进行,无消息提示 * * https://kdocs.cn/l/cf2mO2uRLqh9?linkname=ci73N833Mk * * @param weixinToken 调用 login 后,得到的 weixinToken,如果 weixinToken 为空则跳过不处理 * @param gameCode 从游戏内跳转至小程序时,通过请求参数 query 携带的 game_code,如果值为空则跳过不处理 */ linkPlayer(weixinToken: string, gameCode: string, requestOptions?: RequestOptions): Promise; /** * 获取集成 JSSDK 所需的签名信息 * * https://kdocs.cn/l/cf2mO2uRLqh9?linkname=CuWOqxr9Ue */ getJSSDKConfig(requestOptions?: RequestOptions): Promise<{ appid: string; nonceStr: string; timestamp: number; signature: string; } | null>; }