// 公共部分 declare namespace my { // #region 基本参数 interface DataResponse { /** 回调函数返回的内容 */ data: any; /** 开发者服务器返回的 HTTP 状态码 */ status: number; /** 开发者服务器返回的 HTTP Response Header */ headers: object; } interface ErrMsgResponse { /** 成功:ok,错误:详细信息 */ errMsg: "ok" | string; } interface TempFileResponse { /** 文件的临时路径 */ apFilePath: string; } interface BaseOptions { /** 接口调用成功的回调函数 */ success?(res: R): void; /** 接口调用失败的回调函数 */ fail?(res: E): void; /** 接口调用结束的回调函数(调用成功、失败都会执行) */ complete?(res: any): void; } interface ErrCodeResponse { errCode: number; } // #endregion } // 界面 declare namespace my { // #region 导航栏 https://docs.alipay.com/mini/api/ui-navigate interface NavigateToOptions extends BaseOptions { /** 需要跳转的应用内页面的路径 */ url: string; } /** * 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。 * * 注意:为了不让用户在使用小程序时造成困扰, * 我们规定页面路径只能是五层,请尽量避免多层级的交互方式。 */ function navigateTo(options: NavigateToOptions): void; interface RedirectToOptions extends BaseOptions { /** 需要跳转的应用内页面的路径 */ url: string; } /** * 关闭当前页面,跳转到应用内的某个页面。 */ function redirectTo(options: RedirectToOptions): void; interface NavigateBackOptions extends BaseOptions { /** 返回的页面数,如果 delta 大于现有打开的页面数,则返回到首页 */ delta: number; } /** * 关闭当前页面,返回上一级或多级页面。可通过 getCurrentPages 获取当前的页面栈信息,决定需要返回几层。 */ function navigateBack(options?: NavigateBackOptions): void; interface ReLaunchOptions extends BaseOptions { /** * 需要跳转的应用内页面路径 , 路径后可以带参数。 * 参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔 * 如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数 */ url: string; } /** * 关闭所有页面,打开到应用内的某个页面。 */ function reLaunch(options?: ReLaunchOptions): void; interface SetNavigationBarOptions extends BaseOptions { /** 页面标题 */ title: string; /** 图片连接地址,必须是https,请使用3x高清图片。若设置了image则title参数失效 */ image: string; /** 导航栏背景色,支持十六进制颜色值 */ backgroundColor: string; /** 导航栏底部边框颜色,支持十六进制颜色值。若设置了 backgroundColor,则borderBottomColor 不会生效,默认会和 backgroundColor 颜色一样 */ borderBottomColor: string; /** 是否重置导航栏为支付宝默认配色,默认 false */ reset: boolean; } /** * 动态设置当前页面的标题。 */ function setNavigationBar(options: Partial): void; /** * 显示导航栏 loading */ function showNavigationBarLoading(): void; /** 隐藏导航栏 loading。 */ function hideNavigationBarLoading(): void; // #endregion // #region TabBar https://docs.alipay.com/mini/api/ui-tabbar interface SwitchTabOptions extends BaseOptions { /** * 需要跳转的 tabBar 页面的路径 * (需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数 */ url: string; } /** * 跳转到指定 tabBar 页面,并关闭其他所有非 tabBar 页面 */ function switchTab(options: SwitchTabOptions): void; // #endregion // #region 交互反馈 https://docs.alipay.com/mini/api/ui-feedback interface AlertOptions extends BaseOptions { /** alert框的标题 */ title: string; /** alert框的内容 */ content: string; /** 按钮文字,默认确定 */ buttonText: string; } function alert(options: Partial): void; interface ConfirmOptions extends BaseOptions { /** confirm框的标题 */ title: string; /** confirm框的内容 */ content: string; /** 确认按钮文字,默认‘确定’ */ confirmButtonText: string; /** 确认按钮文字,默认‘取消’ */ cancelButtonText: string; success(result: { confirm: boolean }): void; } function confirm(options: Partial): void; interface PromptOptions extends BaseOptions { /** prompt框标题 */ title?: string | undefined; /** prompt框文本,默认‘请输入内容’ */ message?: string | undefined; /** 输入框内的提示文案 */ placeholder?: string | undefined; /** message对齐方式,可用枚举left/center/right,iOS ‘center’, android ‘left’ */ align?: "left" | "center" | "right" | string | undefined; /** 确认按钮文字,默认‘确定’ */ okButtonText: string; /** 确认按钮文字,默认‘取消’ */ cancelButtonText: string; success(result: { ok: boolean; inputValue: string }): void; } function prompt(options: PromptOptions): void; interface ToastOptions extends BaseOptions { /** * 文字内容 */ content: string; /** toast 类型,展示相应图标,默认 none,支持 success / fail / exception / none’。其中 exception 类型必须传文字信息 */ type?: "none" | "success" | "fail" | "exception" | string | undefined; /** * 显示时长,单位为 ms,默认 2000 */ duration?: number | undefined; } /** * 显示消息提示框 */ function showToast(options: Partial): void; function hideToast(): void; interface LoadingOptions extends BaseOptions { /** * loading的文字内容 */ content?: string | undefined; /** * 延迟显示,单位 ms,默认 0。如果在此时间之前调用了 my.hideLoading 则不会显示 */ delay?: number | undefined; } /** * 显示加载提示 */ function showLoading(options?: LoadingOptions): void; interface HideLoadingOptions { /** * 体指当前page实例,某些场景下,需要指明在哪个page执行hideLoading。 */ page: any; } /** * 隐藏消息提示框 */ function hideLoading(options?: HideLoadingOptions): void; interface Badge { /** 需要飘红的选项的索引,从0开始 */ index: number; /** * 飘红类型,支持 none(无红点)/ point(纯红点) / num(数字红点)/ text(文案红点)/ more(...) */ type: "none" | "point" | "num" | "text" | "more" | string; /** * 自定义飘红文案: * * 1、type为none/point/more时本文案可不填 * 2、type为num时本文案为小数或<=0均不显示, >100 显示"..." */ text: string; } interface ActionSheetOptions extends BaseOptions { /** 菜单标题 */ title?: string | undefined; /** * 菜单按钮文字数组 */ items: string[]; /** * 取消按钮文案。默认为‘取消’。注:Android平台此字段无效,不会显示取消按钮。 */ cancelButtonText?: string | undefined; /** * (iOS特殊处理)指定按钮的索引号,从0开始,使用场景:需要删除或清除数据等类似场景,默认红色 */ destructiveBtnIndex?: number | undefined; /** * 需飘红选项的数组,数组内部对象字段见下表 */ badges?: Array> | undefined; /** * 接口调用成功的回调函数 */ success?(res: { /** * 用户点击的按钮,从上到下的顺序,从0开始 */ index: number; }): void; } /** * 显示操作菜单 */ function showActionSheet(options: ActionSheetOptions): void; // #endregion // #region 下拉刷新 https://docs.alipay.com/mini/api/ui-pulldown /** * Page 实现的接口对象 */ interface PageOptions { /** * 下拉刷新 * 在 Page 中定义 onPullDownRefresh 处理函数,监听该页面用户下拉刷新事件。 * 需要在页面对应的 .json 配置文件中配置 "pullRefresh": true 选项,才能开启下拉刷新事件。 * 当处理完数据刷新后,调用 my.stopPullDownRefresh 可以停止当前页面的下拉刷新。 */ onPullDownRefresh?(this: Page): void; } /** * 停止当前页面的下拉刷新。 */ function stopPullDownRefresh(): void; // #endregion // #region 联系人 https://docs.alipay.com/mini/api/ui-contact interface ChoosePhoneContactOptions extends BaseOptions { success(result: { name: string; // 选中的联系人姓名 mobile: string; // 选中的联系人手机号 }): void; /** * 10 没有权限 * 11 用户取消操作(或设备未授权使用通讯录) */ fail?(error: 10 | 11): void; } /** * 选择本地系统通信录中某个联系人的电话。 */ function choosePhoneContact(options: ChoosePhoneContactOptions): void; interface ChooseAlipayContactOptions extends BaseOptions { /** 单次最多选择联系人个数,默认 1,最大 10 */ count: number; success(result: { realName: string; // 账号的真实姓名 mobile: string; // 账号对应的手机号码 email: string; // 账号的邮箱 avatar: string; // 账号的头像链接 userId: string; // 支付宝账号唯一 userId }): void; /** * 10 没有权限 * 11 用户取消操作(或设备未授权使用通讯录) */ fail?(error: 10 | 11): void; } /** * 唤起支付宝通讯录,选择一个或者多个支付宝联系人。 */ function chooseAlipayContact(options: ChooseAlipayContactOptions): void; interface ContactsDic { /** * 支付宝账号唯一 userId */ userId: string; /** * 账号的头像链接 */ avatar: string; /** * 账号对应的手机号码 */ mobile: string; /** * 账号的真实姓名 */ realName: string; /** * 账号的显示名称:也即支付宝设置的备注名称,默认为朋友圈里面的昵称 */ displayName: string; // 账号的显示名称:也即支付宝设置的备注名称,默认为朋友圈里面的昵称 } interface ChooseContactOptions extends BaseOptions { /** 选择类型,值为single(单选)或者 multi(多选) */ chooseType: "single" | "multi" | string; /** 包含手机通讯录联系人的模式:默认为不包含(none)、或者仅仅包含双向通讯录联系人(known)、或者包含手机通讯录联系人(all) */ includeMobileContactMode?: "none" | "known" | "all" | string | undefined; /** 是否包含自己 */ includeMe?: boolean | undefined; /** 最大选择人数,仅 chooseType 为 multi 时才有效 */ multiChooseMax?: number | undefined; /** 多选达到上限的文案,仅 chooseType 为 multi 时才有效 */ multiChooseMaxTips?: string | undefined; success(result: { contactsDicArray: ContactsDic[]; }): void; } /** * 唤起选人组件,默认只包含支付宝联系人,可以通过修改参数包含手机通讯录联系人或者双向通讯录联系人。 */ function chooseContact(options: ChooseContactOptions): void; // #endregion // #region 选择城市 https://docs.alipay.com/mini/api/ui-city interface City { city: string; // 城市名 adCode: string; // 行政区划代码 spell?: string | undefined; // 城市名对应拼音拼写,方便用户搜索 } interface ChooseCityOptions extends BaseOptions { showLocatedCity: boolean; // 是否显示当前定位城市,默认 false showHotCities: boolean; // 是否显示热门城市,默认 true cities: City[]; // 自定义城市列表,列表内对象字段见下表 hotCities: City[]; // 自定义热门城市列表,列表内对象字段见下表 success(result: { city: string; adCode: string }): void; } /** * 打开城市选择列表 * * 如果用户没有选择任何城市直接点击了返回,将不会触发回调函数。 */ function chooseCity(options: Partial): void; // #endregion // #region 选择日期 https://docs.alipay.com/mini/api/ui-date interface DatePickerOptions extends BaseOptions { /** * 返回的日期格式, * 1. yyyy-MM-dd(默认) * 2. HH:mm * 3. yyyy-MM-dd HH:mm * 4. yyyy-MM (最低基础库:1.1.1, 可用 canIUse('datePicker.object.format.yyyy-MM') 判断) * 5. yyyy (最低基础库:1.1.1,可用 canIUse('datePicker.object.format.yyyy') 判断) */ format: "yyyy-MM-dd" | "HH:mm" | "yyyy-MM-dd HH:mm" | "yyyy-MM" | "yyyy"; /** 初始选择的日期时间,默认当前时间 */ currentDate: string; /** 最小日期时间 */ startDate: string; /** 最大日期时间 */ endDate: string; success(result: { date: string }): void; /** 11 用户取消操作 */ fail(error: 11): void; } /** * 打开日期选择列表 */ function datePicker(optiosn: Partial): void; // #endregion // #region 动画 https://docs.alipay.com/mini/api/ui-animation type TimingFunction = | "linear" | "ease" | "ease-in" | "ease-in-out" | "ease-out" | "step-start" | "step-end"; interface CreateAnimationOptions { /** 动画持续时间,单位ms,默认值 400 */ duration: number; /** 定义动画的效果,默认值"linear",有效值:"linear","ease","ease-in","ease-in-out","ease-out","step-start","step-end" */ timeFunction: TimingFunction; /** 动画持续时间,单位 ms,默认值 0 */ delay: number; /** 设置transform-origin,默认为"50% 50% 0" */ transformOrigin: string; } interface Animator { actions: AnimationAction[]; } interface AnimationAction { animates: Animate[]; option: AnimationActionOption; } interface AnimationActionOption { transformOrigin: string; transition: AnimationTransition; } interface AnimationTransition { delay: number; duration: number; timingFunction: TimingFunction; } interface Animate { type: string; args: any[]; } /** * 创建动画实例 animation。调用实例的方法来描述动画,最后通过动画实例的export方法将动画数据导出并传递给组件的animation属性。 * * 注意: export 方法每次调用后会清掉之前的动画操作 */ function createAnimation(options: Partial): Animation; /** 动画实例可以调用以下方法来描述动画,调用结束后会返回自身,支持链式调用的写法。 */ interface Animation { /** * 调用动画操作方法后要调用 step() 来表示一组动画完成, * 可以在一组动画中调用任意多个动画方法, * 一组动画中的所有动画会同时开始, * 一组动画完成后才会进行下一组动画。 * @param options 指定当前组动画的配置 */ step(options?: CreateAnimationOptions): void; /** * 导出动画操作 * * 注意: export 方法每次调用后会清掉之前的动画操作 */ export(): Animator; /** 透明度,参数范围 0~1 */ opacity(value: number): Animation; /** 颜色值 */ backgroundColor(color: string): Animation; /** 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 */ width(length: number): Animation; /** 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 */ height(length: number): Animation; /** 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 */ top(length: number): Animation; /** 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 */ left(length: number): Animation; /** 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 */ bottom(length: number): Animation; /** 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值 */ right(length: number): Animation; /** deg的范围-180~180,从原点顺时针旋转一个deg角度 */ rotate(deg: number): Animation; /** deg的范围-180~180,在X轴旋转一个deg角度 */ rotateX(deg: number): Animation; /** deg的范围-180~180,在Y轴旋转一个deg角度 */ rotateY(deg: number): Animation; /** deg的范围-180~180,在Z轴旋转一个deg角度 */ rotateZ(deg: number): Animation; /** 同transform-function rotate3d */ rotate3d(x: number, y: number, z: number, deg: number): Animation; /** * 一个参数时,表示在X轴、Y轴同时缩放sx倍数; * 两个参数时表示在X轴缩放sx倍数,在Y轴缩放sy倍数 */ scale(sx: number, sy?: number): Animation; /** 在X轴缩放sx倍数 */ scaleX(sx: number): Animation; /** 在Y轴缩放sy倍数 */ scaleY(sy: number): Animation; /** 在Z轴缩放sy倍数 */ scaleZ(sz: number): Animation; /** 在X轴缩放sx倍数,在Y轴缩放sy倍数,在Z轴缩放sz倍数 */ scale3d(sx: number, sy: number, sz: number): Animation; /** * 一个参数时,表示在X轴偏移tx,单位px; * 两个参数时,表示在X轴偏移tx,在Y轴偏移ty,单位px。 */ translate(tx: number, ty?: number): Animation; /** * 在X轴偏移tx,单位px */ translateX(tx: number): Animation; /** * 在Y轴偏移tx,单位px */ translateY(ty: number): Animation; /** * 在Z轴偏移tx,单位px */ translateZ(tz: number): Animation; /** * 在X轴偏移tx,在Y轴偏移ty,在Z轴偏移tz,单位px */ translate3d(tx: number, ty: number, tz: number): Animation; /** * 参数范围-180~180; * 一个参数时,Y轴坐标不变,X轴坐标延顺时针倾斜ax度; * 两个参数时,分别在X轴倾斜ax度,在Y轴倾斜ay度 */ skew(ax: number, ay?: number): Animation; /** 参数范围-180~180;Y轴坐标不变,X轴坐标延顺时针倾斜ax度 */ skewX(ax: number): Animation; /** 参数范围-180~180;X轴坐标不变,Y轴坐标延顺时针倾斜ay度 */ skewY(ay: number): Animation; /** * 同transform-function matrix */ matrix( a: number, b: number, c: number, d: number, tx: number, ty: number, ): Animation; /** 同transform-function matrix3d */ matrix3d( a1: number, b1: number, c1: number, d1: number, a2: number, b2: number, c2: number, d2: number, a3: number, b3: number, c3: number, d3: number, a4: number, b4: number, c4: number, d4: number, ): Animation; } // #endregion // #region 画布 https://docs.alipay.com/mini/api/ui-canvas interface ToTempFilePathOptions extends BaseOptions { x: number; // 画布 x 轴起点,默认为 0 y: number; // 画布 y 轴起点,默认为 0 width: number; // 画布宽度,默认为 canvas 宽度 - x height: number; // 画布高度,默认为 canvas 高度 - y destWidth: number; // 输出的图片宽度,默认为 width destHeight: number; // 输出的图片高度,默认为 height } type Color = string | number[] | number | CanvasAction; interface CanvasAction { /** * 创建一个颜色的渐变点。 * 小于最小 stop 的部分会按最小 stop 的 color 来渲染,大于最大 stop 的部分会按最大 stop 的 color 来渲染。 * * @param stop 渐变点位置,值必须在 [0,1] 范围内 * @param color 颜色值 */ addColorStop(stop: number, color: Color): void; } interface TextMetrics { width: number; } interface ConvasContext { font: string; /** * 把当前画布的内容导出生成图片,并返回文件路径。 */ toTempFilePath(options?: Partial): void; /** * textAlign 是 Canvas 2D API 描述绘制文本时,文本的对齐方式的属性。注意,该对齐是基于 * CanvasRenderingContext2D.fillText 方法的x的值。所以如果 textAlign="center",那么该文本将画在 x-50%*width */ setTextAlign(textAlign: "left" | "right" | "center" | "start" | "end"): void; /** * textBaseline 是 Canvas 2D API 描述绘制文本时,当前文本基线的属性。 */ setTextBaseline(textBaseline: "top" | "hanging" | "middle" | "alphabetic" | "ideographic" | "bottom"): void; /** * 设置填充色。 * * 如果没有设置 fillStyle,则默认颜色为 black。 */ setFillStyle(color: Color): void; /** * 设置边框颜色。 * * 如果没有设置 strokeStyle,则默认颜色为 black。 */ setStrokeStyle(color: Color): void; /** * 设置阴影样式。 * 如果没有设置,offsetX 的默认值为 0, offsetY 的默认值为 0, blur 的默认值为 0,color 的默认值为 black。 * @param offsetX 阴影相对于形状水平方向的偏移 * @param offsetY 阴影相对于形状竖直方向的偏移 * @param blur 0~100 阴影的模糊级别,值越大越模糊 * @param color 阴影颜色 */ setShadow(offsetX: number, offsetY: number, blur: number, color: Color): void; /** * 创建一个线性的渐变色。 * * @param x0 起点 x 坐标 * @param y0 起点 y 坐标 * @param x1 终点 x 坐标 * @param y1 终点 y 坐标 */ createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasAction; /** * 创建一个圆形的渐变色。 * 起点在圆心,终点在圆环。 * 需要使用 addColorStop() 来指定渐变点,至少需要两个。 * @param x 圆心 x 坐标 * @param y 圆心 y 坐标 * @param r 圆半径 * @returns */ createCircularGradient(x: number, y: number, r: number): CanvasAction; /** * 设置线条的宽度。 * @param lineWidth 线条宽度,单位为 px */ setLineWidth(lineWidth: number): void; /** * 设置线条的端点样式。 * * @param lineCap 线条的结束端点样式 */ setLineCap(lineCap: "round" | "butt" | "square"): void; /** * 设置线条的交点样式。 * * @param lineJoin 线条的结束交点样式 */ setLineJoin(lineJoin: "round" | "bevel" | "miter"): void; /** * 设置最大斜接长度,斜接长度指的是在两条线交汇处内角和外角之间的距离。 当 setLineJoin() 为 miter 时才有效。超过最大倾斜长度的,连接处将以 lineJoin 为 bevel 来显示 * * @param miterLimit 最大斜接长度 */ setMiterLimit(miterLimit: number): void; /** * 创建一个矩形。 * * @param x 矩形左上角的 x 坐标 * @param y 矩形左上角的 y 坐标 * @param width 矩形路径宽度 * @param height 矩形路径高度 */ rect(x: number, y: number, width: number, height: number): void; /** * 填充矩形。 * 用 setFillStyle() 设置矩形的填充色,如果没设置则默认是 black。 * @param x 矩形左上角的 x 坐标 * @param y 矩形左上角的 y 坐标 * @param width 矩形路径宽度 * @param height 矩形路径高度 */ fillRect(x: number, y: number, width: number, height: number): void; /** * 画一个矩形(非填充)。 * 用 setFillStroke() 设置矩形线条的颜色,如果没设置默认是 black。 * @param x 矩形左上角的 x 坐标 * @param y 矩形左上角的 y 坐标 * @param width 矩形路径宽度 * @param height 矩形路径高度 */ strokeRect(x: number, y: number, width: number, height: number): void; /** * 清除画布上在该矩形区域内的内容。 * clearRect 并非画一个白色的矩形在地址区域,而是清空,为了有直观感受,可以对 canvas 加了一层背景色。 * @param x 矩形左上角的 x 坐标 * @param y 矩形左上角的 y 坐标 * @param width 矩形路径宽度 * @param height 矩形路径高度 */ clearRect(x: number, y: number, width: number, height: number): void; /** * 对当前路径中的内容进行填充。默认的填充色为黑色。 */ fill(): void; /** * 画出当前路径的边框。默认 black。 * stroke() 描绘的的路径是从 beginPath() 开始计算,但是不会将 strokeRect() 包含进去 */ stroke(): void; /** * 关闭一个路径 * 关闭路径会连接起点和终点。 * 如果关闭路径后没有调用 fill() 或者 stroke() 并开启了新的路径,那之前的路径将不会被渲染。 */ beginPath(): void; /** * 关闭一个路径 * 关闭路径会连接起点和终点。 */ closePath(): void; /** * 把路径移动到画布中的指定点,不创建线条。 * 用 stroke() 方法来画线条 * @param x 目标位置 x 坐标 * @param y 目标位置 y 坐标 */ moveTo(x: number, y: number): void; /** * lineTo 方法增加一个新点,然后创建一条从上次指定点到目标点的线。 * 用 stroke() 方法来画线条 * * @param x 目标位置 x 坐标 * @param y 目标位置 y 坐标 */ lineTo(x: number, y: number): void; /** * 画一条弧线。 * 创建一个圆可以用 arc() 方法指定其实弧度为0,终止弧度为 2 * Math.PI。 * * @param x * @param y * @param r * @param sAngle * @param eAngle */ arc(x: number, y: number, r: number, sAngle: number, eAngle: number): void; /** * 创建三次方贝塞尔曲线路径。 * 曲线的起始点为路径中前一个点。 * @param cp1x * @param cp1y * @param cp2x * @param cp2y * @param x * @param y */ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; /** * 将当前创建的路径设置为当前剪切路径。 */ clip(): void; /** * 创建二次贝塞尔曲线路径。 * 曲线的起始点为路径中前一个点。 * @param cpx 贝塞尔控制点 x 坐标 * @param cpy 贝塞尔控制点 y 坐标 * @param x 结束点 x 坐标 * @param y 结束点 y 坐标 */ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; /** * 在调用scale方法后,之后创建的路径其横纵坐标会被缩放。多次调用scale,倍数会相乘。 * * @param scaleWidth 横坐标缩放倍数 (1 = 100%,0.5 = 50%,2 = 200%) * @param scaleHeight 纵坐标轴缩放倍数 (1 = 100%,0.5 = 50%,2 = 200%) */ scale(scaleWidth: number, scaleHeight: number): void; /** * 以原点为中心,原点可以用 translate方法修改。顺时针旋转当前坐标轴。多次调用rotate,旋转的角度会叠加。 * * @param rotate 旋转角度,以弧度计(degrees * Math.PI/180;degrees 范围为0~360) */ rotate(rotate: number): void; /** * 对当前坐标系的原点(0, 0)进行变换,默认的坐标系原点为页面左上角。 * * @param x 水平坐标平移量 * @param y 竖直坐标平移量 */ translate(x: number, y: number): void; /** * 设置字体大小。 * * @param fontSize 字号 */ setFontSize(fontSize: number): void; /** * 在画布上绘制被填充的文本。 * * @param text 文本 * @param x 绘制文本的左上角 x 坐标 * @param y 绘制文本的左上角 y 坐标 */ fillText(text: string, x: number, y: number): void; /** * 绘制图像,图像保持原始尺寸。 * * @param imageResource 图片资源, 只支持线上 cdn 地址或离线包地址,线上 cdn 需返回头 Access-Control-Allow-Origin: * * @param x 图像左上角 x 坐标 * @param y 图像左上角 y 坐标 * @param width 图像宽度 * @param height 图像高度 */ drawImage(imageResource: string, x: number, y: number, width: number, height: number): void; /** * 设置全局画笔透明度。 * * @param alpha 透明度,0 表示完全透明,1 表示不透明 范围 [0, 1] */ setGlobalAlpha(alpha: number): void; /** * 设置虚线的样式 * * @param segments 一组描述交替绘制线段和间距(坐标空间单位)长度的数字。 如果数组元素的数量是奇数, 数组的元素会被复制并重复。例如, [5, 15, 25] 会变成 [5, 15, 25, 5, 15, 25]。 */ setLineDash(segments: number[]): void; /** * 使用矩阵多次叠加当前变换的方法,矩阵由方法的参数进行描述。你可以缩放、旋转、移动和倾斜上下文。 * * @param scaleX 水平缩放 * @param skewX 水平倾斜 * @param skewY 垂直倾斜 * @param scaleY 垂直缩放 * @param translateX 水平移动 * @param translateY 垂直移动 */ transform( scaleX: number, skewX: number, skewY: number, scaleY: number, translateX: number, translateY: number, ): void; /** * 使用单位矩阵重新设置(覆盖)当前的变换并调用变换的方法,此变换由方法的变量进行描述。 * * @param scaleX 水平缩放 * @param skewX 水平倾斜 * @param skewY 垂直倾斜 * @param scaleY 垂直缩放 * @param translateX 水平移动 * @param translateY 垂直移动 */ setTransform( scaleX: number, skewX: number, skewY: number, scaleY: number, translateX: number, translateY: number, ): void; /** * 保存当前的绘图上下文。 */ save(): void; /** * 恢复之前保存的绘图上下文。 */ restore(): void; /** * 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。 * 绘图上下文需要由 my.createCanvasContext(canvasId) 来创建。 * @param [reserve] 本次绘制是否接着上一次绘制,即 reserve 参数为 false 时则在本次调用 drawCanvas绘制之前 native 层应先清空画布再继续绘制;若 reserver 参数为true 时,则保留当前画布上的内容,本次调用drawCanvas绘制的内容覆盖在上面,默认 false */ draw(reserve?: boolean): void; measureText(text: string): TextMetrics; } /** * 创建 canvas 绘图上下文 * * 该绘图上下文只作用于对应 canvasId 的 */ function createCanvasContext(canvasId: string): ConvasContext; // #endregion // #region 地图 https://docs.alipay.com/mini/api/ui-map interface GetCenterLocationOptions extends BaseOptions { success?(res: { longitude: string; latitude: string }): void; } interface MapContext extends BaseOptions { /** * 获取当前地图中心的经纬度,返回 gcj02 坐标系的值,可以用于 my.openLocation * * @param options */ getCenterLocation(options: GetCenterLocationOptions): void; /** * 将地图中心移动到当前定位点,需要配合 map 组件的 show-location 使用 */ moveToLocation(): void; } /** * 创建并返回一个 map 上下文对象 mapContext。 * * @param mapId * @returns */ function createMapContext(mapId: string): MapContext; // #endregion // #region 键盘 https://docs.alipay.com/mini/api/ui-hidekeyboard /** * 隐藏键盘 */ function hideKeyboard(): void; // #endregion // #region 滚动 https://docs.alipay.com/mini/api/scroll interface PageScrollToOptions { scrollTop: number; // 滚动到页面的目标位置,单位 px } /** * 滚动到页面的目标位置 * * @param options */ function pageScrollTo(options: PageScrollToOptions): void; // #endregion // #region 节点查询 https://docs.alipay.com/mini/api/selector-query interface RectArea { /** 节点的左边界坐标 */ left: number; /** 节点的右边界坐标 */ right: number; /** 节点的上边界坐标 */ top: number; /** 节点的下边界坐标 */ bottom: number; /** 节点的宽度 */ width: number; /** 节点的高度 */ height: number; } interface NodesRefRect extends RectArea { /** 节点的ID */ id: string; /** 节点的dataset */ dataset: any; } interface NodeRefOffset { /** 节点的ID */ id: string; /** 节点的dataset */ dataset: any; /** 节点的水平滚动位置 */ scrollLeft: number; /** 节点的竖直滚动位置 */ scrollTop: number; } interface NodesRef { /** * 添加节点的布局位置的查询请求,相对于显示区域,以像素为单位。 * 其功能类似于DOM的getBoundingClientRect。 * 返回值是nodesRef对应的selectorQuery。 * 返回的节点信息中,每个节点的位置用 * left、right、top、bottom、width、height字段描述。 * 如果提供了callback回调函数,在执行selectQuery的exec方法后 * 节点信息会在callback中返回。 */ boundingClientRect( callback?: (rect: T) => void, ): SelectorQuery; /** * 添加节点的滚动位置查询请求,以像素为单位。 * 节点必须是scroll-view或者viewport。 * 返回值是nodesRef对应的selectorQuery。 * 返回的节点信息中,每个节点的滚动位置用scrollLeft、scrollHeight字段描述。 * 如果提供了callback回调函数,在执行selectQuery的exec方法后,节点信息会在callback中返回。 */ scrollOffset(callback?: (rect: NodeRefOffset) => void): SelectorQuery; // /** // * 获取节点的相关信息,需要获取的字段在fields中指定。 // * 返回值是nodesRef对应的selectorQuery。 // */ // fields( // fields: NodeRefFieldsOptions, // callback?: (result: any) => void // ): SelectorQuery; } /** * SelectorQuery对象实例 */ interface SelectorQuery { // /** // * 将选择器的选取范围更改为自定义组件component内 // * (初始时,选择器仅选取页面范围的节点,不会选取任何自定义组件中的节点 // * @version 1.6.0 // */ // in(component: Component): SelectorQuery; /** * 在当前页面下选择第一个匹配选择器selector的节点,返回一个NodesRef对象实例,可以用于获取节点信息。 * selector类似于CSS的选择器,但仅支持下列语法。 * + ID选择器:#the-id * + class选择器(可以连续指定多个):.a-class.another-class * + 子元素选择器:.the-parent > .the-child * + 后代选择器:.the-ancestor .the-descendant * + 跨自定义组件的后代选择器:.the-ancestor >>> .the-descendant * + 多选择器的并集:#a-node, .some-other-nodes */ select(selector: string): NodesRef; /** * 在当前页面下选择匹配选择器selector的节点,返回一个NodesRef对象实例。 * 与selectorQuery.selectNode(selector)不同的是,它选择所有匹配选择器的节点。 */ selectAll(selector: string): NodesRef; /** * 选择显示区域,可用于获取显示区域的尺寸、滚动位置等信息 * 返回一个NodesRef对象实例。 */ selectViewport(): NodesRef; /** * 执行所有的请求 * 请求结果按请求次序构成数组,在callback的第一个参数中返回。 */ exec(callback?: (result: any[]) => void): void; } /** * 获取一个节点查询对象 SelectorQuery。 * * @param page 可以指定 page 属性,默认为当前页面 * @returns */ function createSelectorQuery(page?: any): SelectorQuery; // #endregion // #region 级联选择 https://docs.alipay.com/mini/api/ewdxl3 interface MultiLevelSelectItem { name: string; subList?: MultiLevelSelectItem[] | undefined; } interface MultiLevelSelectOptions extends BaseOptions { title?: string | undefined; // 标题 list?: MultiLevelSelectItem[] | undefined; // 选择数据列表 name?: string | undefined; // 条目名称 subList?: MultiLevelSelectItem[] | undefined; // 子条目列表 success?(res: { success: boolean; // 是否选择完成,取消返回false result: MultiLevelSelectItem[]; // 选择的结果,如[{“name”:”杭州市”},{“name”:”上城区”},{“name”:”古翠街道”}] }): void; } function multiLevelSelect(options?: MultiLevelSelectOptions): void; // #endregion } // 开放接口 declare namespace my { // #region 用户授权 https://docs.alipay.com/mini/api/openapi-authorize interface GetAuthCodeOptions extends BaseOptions { scopes?: string | string[] | undefined; // 授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用) success?(res: { authCode: string; // 授权码 authErrorScope: { [scope: string]: number; }; // 失败的授权类型,key是授权失败的 scope,value 是对应的错误码 authSucessScope: string[]; // 成功的授权 scope }): void; } /** * 获取授权码。 * 详细用户授权接入参考 [指引](https://docs.alipay.com/mini/introduce/auth)。 */ function getAuthCode(options: GetAuthCodeOptions): void; // #endregion // #region 客户端获取会员信息 https://docs.alipay.com/mini/api/userinfo interface GetAuthUserInfoOptions extends BaseOptions { success?(res: { nickName: string; // 用户昵称 avatar: string; // 用户头像链接 }): void; } /** * 客户端获取会员信息 * 获取会员信息首先需要获取用户授权,详细会员信息获取参考[指引](https://docs.alipay.com/mini/introduce/auth),采用 jsapi 调用的方式。 */ function getAuthUserInfo(options: GetAuthUserInfoOptions): void; // #endregion // #region 小程序唤起支付 https://docs.alipay.com/mini/api/openapi-pay interface TradePayOptions extends BaseOptions { tradeNO?: string | undefined; // 接入小程序支付时传入此参数。此参数为支付宝交易号 success?(res: { // resultCode | 描述 // -----------|------ // 9000 | 订单支付成功 // 8000 | 正在处理中 // 4000 | 订单支付失败 // 6001 | 用户中途取消 // 6002 | 网络连接出错 // 6004 | 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态 // 99 | 用户点击忘记密码导致快捷界面退出(only iOS) resultCode: string; }): void; } /** * 发起支付。 * 详细接入支付方式参考[指引](https://docs.alipay.com/mini/introduce/pay)。 * @param options */ function tradePay(options: TradePayOptions): void; // #endregion // #region 支付代扣签约 https://docs.alipay.com/mini/api/pay-sign interface PaySignCenterOptions extends BaseOptions { signStr: string; // 签约字符串 } /** * 签约中心 * * 返回码 | 含义 * ------|------ * 7000 | 协议签约成功 * 7001 | 签约结果未知(有可能已经签约成功),请根据外部签约号查询签约状态 * 7002 | 协议签约失败 * 6001 | 用户中途取消 * 6002 | 网络连接错误 * @param options */ function paySignCenter(options: PaySignCenterOptions): void; // #endregion // #region 小程序二维码 https://docs.alipay.com/mini/api/openapi-qrcode // @see https://docs.alipay.com/mini/api/openapi-qrcode // @see https://docs.alipay.com/mini/introduce/qrcode // #endregion // #region 跳转支付宝卡包 https://docs.alipay.com/mini/api/card-voucher-ticket /** * 打开支付宝卡列表。 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openCardList(): void; interface OpenMerchantCardList extends BaseOptions { partnerId: string; // 商户编号 } /** * 打开支付宝卡列表。 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) * @param options */ function openMerchantCardList(options: OpenMerchantCardList): void; interface OpenCardDetailOptions extends BaseOptions { passId: string; // 卡实例Id } /** * 打开当前用户的某张卡的详情页 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) * * passId获取方式: * 1)通过alipass创建的卡 * 调用alipay.pass.instance.add(支付宝pass新建卡券实例接口)接口,在出参“result”中可获取 * 2)通过会员卡创建的卡 * 调用alipay.marketing.card.query(会员卡查询)接口,在schema_url中可获取,具体参数为“p=xxx”,xxx即为passId。 */ function openCardDetail(options: OpenCardDetailOptions): void; /** * 打开支付宝券列表 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) * * @param options */ function openVoucherList(): void; interface OpenMerchantVoucherListOptions extends BaseOptions { partnerId: string; // 商户编号 } /** * 打开当前用户的某个商户的券列表 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openMerchantVoucherList(options: OpenMerchantVoucherListOptions): void; interface OpenVoucherDetailOptions1 extends BaseOptions { passId: string; // 券实例Id,调用券发放接口可以获取该参数(如果传入了partnerId和serialNumber则不需传入) } interface OpenVoucherDetailOptions2 extends BaseOptions { partnerId: string; // 商户编号,以 2088 为开头(如果传入了passId则不需传入) serialNumber: string; // 序列号,调用新建卡券模板可以获取该参数(如果传入了passId则不需传入) } /** * 打开当前用户的某张券的详情页(非口碑) * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openVoucherDetail(options: OpenVoucherDetailOptions1 | OpenVoucherDetailOptions2): void; interface OpenKBVoucherDetailOptions1 extends BaseOptions { passId: string; // 卡实例Id(如果传入了partnerId和serialNumber则不需传入) } interface OpenKBVoucherDetailOptions2 extends BaseOptions { partnerId: string; // 商户编号(如果传入了passId则不需传入) serialNumber: string; // 序列号(如果传入了passId则不需传入) } /** * 打开当前用户的某张券的详情页(口碑) * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openKBVoucherDetail(options: OpenKBVoucherDetailOptions1 | OpenKBVoucherDetailOptions2): void; /** * 打开支付宝票列表。 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openTicketList(): void; interface OpenMerchantTicketListOptions extends BaseOptions { partnerId: string; // 商户编号 } /** * 打开某个商户的票列表 * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openMerchantTicketList(options: OpenMerchantTicketListOptions): void; interface OpenTicketDetailOptions1 extends BaseOptions { passId: string; // 卡实例Id(如果传入了partnerId和serialNumber则不需要传入passId) } interface OpenTicketDetailOptions2 extends BaseOptions { partnerId: string; // 商户编号(如果传入了passId则不需要传入partnerId) serialNumber: string; // 序列号(如果传入了passId则不需要传入serialNumber) } /** * 打开当前用户的某张票的详情页 * * 有关支付宝卡包详细功能,见[支付宝卡包产品介绍](https://docs.alipay.com/mini/introduce/voucher) */ function openTicketDetail(options: OpenTicketDetailOptions1 | OpenTicketDetailOptions2): void; // #endregion // #region 会员开卡授权 https://docs.alipay.com/mini/api/add-card-auth interface AddCardAuthResult { success: true | boolean; // true 表示领卡成功 resultStatus: string; // 9000 表示成功 result: { app_id: string; // 应用id auth_code: string; // 授权码,用于换取authtoken state: string; // 授权的state scope: string; // 授权scope template_id: string; // 会员卡模板Id request_id: string; // 会员卡表单信息请求Id out_string: string; // 会员卡领卡链接透传参数 }; } interface AddCardAuthResult { success: false | boolean; // false 表示领卡失败 /** * 失败的错误码 * 领卡失败 code 说明 * 名称 | 类型 | 说明 * -----|-----|----- * JSAPI_SERVICE_TERMINATED | String | 用户取消 * JSAPI_PARAM_INVALID | String | url 为空或非法参数 * JSAPI_SYSTEM_ERROR | String | 系统错误 */ code: string; } interface AddCardAuthOptions extends BaseOptions { /** * 开卡授权的页面地址,从alipay.marketing.card.activateurl.apply接口获取 */ url: string; success?(res: AddCardAuthResult): void; } /** * 小程序唤起会员开卡授权页面,小程序接入会员卡[点此查看](https://docs.alipay.com/mini/introduce/card) */ function addCardAuth(options: AddCardAuthOptions): void; // #endregion // #region 芝麻认证 https://docs.alipay.com/mini/api/zm-service interface StartZMVerifyOptions extends BaseOptions { bizNo: string; // 认证标识 success?(res: { token: string; // 认证标识 passed: string; // 认证是否通过 reason?: string | undefined; // 认证不通过原因 }): void; } /** * 芝麻认证接口,调用此接口可以唤起芝麻认证页面并进行人脸身份验证。 * 有关芝麻认证的产品和接入介绍,详见 [芝麻认证](https://docs.alipay.com/mini/introduce/zm-verify)。 * 需要通过蚂蚁开发平台,调用certification.initialize接口进行[认证初始化](https://docs.alipay.com/zmxy/271/105914)。获得biz_no 后,方能通过以下接口激活芝麻认证小程序。 */ function startZMVerify(options: StartZMVerifyOptions): void; // #endregion // #region 信用借还 https://docs.alipay.com/mini/api/zmcreditborrow interface ZMCreditBorrowOptions extends BaseOptions { /** * 外部订单号,需要唯一,由商户传入,芝麻内部会做幂等控制,格式为:yyyyMMddHHmmss+随机数 */ out_order_no: string; /** * 信用借还的产品码,传入固定值:w1010100000000002858 */ product_code: string; /** * 物品名称,最长不能超过14个汉字 */ goods_name: string; /** * 租金单位,租金+租金单位组合才具备实际的租金意义。 * 取值定义如下: * DAY_YUAN: 元 / 天 * HOUR_YUAN: 元 / 小时 * YUAN: 元 * YUAN_ONCE: 元 / 次 */ rent_unit: string; /** * 租金,租金 + 租金单位组合才具备实际的租金意义。 * > 0.00元,代表有租金 * = 0.00元,代表无租金,免费借用 * 注:参数传值必须 >= 0,传入其他值会报错参数非法 */ rent_amount: string; /** * 押金,金额单位:元。 * 注:不允许免押金的用户按此金额支付押金;当物品丢失时,赔偿金额不得高于该金额。 */ deposit_amount: string; /** * 该字段目前默认传Y; * 是否支持当借用用户信用不够(不准入)时,可让用户支付押金借用: * Y: 支持 * N: 不支持 * 注:支付押金的金额等同于deposit_amount。 */ deposit_state?: string | undefined; // 该字段目前默认传Y; /** * 回调到商户的小程序schema地址。说明:商户的回调地址可以在商户后台里进行配置,服务端回调时,首先根据参数:invoke_type 查询是否有对应的配置地址,如果有,则使用已定义的地址,否则,使用该字段定义的地址执行回调; * 参考表格下方的说明一; * 小程序回调地址参考表格下方的说明三; * 说明一: * 支付宝商户账号登录我的商家服务打开入口链接; * 商家服务中选择“您可能需要->信用借还”或者点击链接; * 场景ID配置->配置新ID,选择对应的业务类型、服务类目和联盟,将生成的场景ID作为credit_biz的值传入即可; * 回调地址配置->设置小程序回调地址,注意:若设置了该回调地址,则接口my.zmCreditBorrow中的入参invoke_return_url将会失效,以该处设置为准; * 说明三: * 小程序回调地址示例一:alipays://platformapi/startapp?appId=1999; * 小程序回调地址示例二:alipays://platformapi/startapp?appId=1999&page=pages/map; */ invoke_return_url?: string | undefined; /** * 商户访问蚂蚁的对接模式,默认传TINYAPP: * TINYAPP:回跳至小程序地址; * WINDOWS:支付宝服务窗,默认值; */ invoke_type?: "TINYAPP" | "TINYAPP" | "WINDOWS" | string | undefined; /** * 信用业务服务,注意:该字段不能为空,且必须根据说明的指引配置商户专属的场景ID,商户自助接入时,登录后台可配置场景ID,将后台配置的场景ID作为该字段的输入; * 参考说明一自助进行配置; */ credit_biz: string; /** * 商户订单创建的起始借用时间,格式:YYYY - MM - DD HH: MM: SS。如果不传入或者为空,则认为订单创建起始时间为调用此接口时的时间。 */ borrow_time?: string | undefined; /** * 到期时间,不允许为空,请根据实际业务合理设置该值,格式:YYYY - MM - DD HH: MM: SS,是指最晚归还时间,表示借用用户如果超过此时间还未完结订单(未归还物品或者未支付租金)将会进入逾期状态,芝麻会给借用用户发送催收提醒;需要晚于borrow_time。 */ expiry_time: string; /** * 借用用户的手机号码,可选字段。推荐商户传入此值,会将此手机号码与用户身份信息进行匹配验证,防范欺诈风险。 */ mobile_no?: string | undefined; /** * 物品借用地点的描述,便于用户知道物品是在哪里借的。可为空 */ borrow_shop_name?: string | undefined; /** * 租金的结算方式,非必填字段,默认是支付宝租金结算支付 merchant:表示商户自行结算,信用借还不提供租金支付能力; alipay:表示使用支付宝支付功能,给用户提供租金代扣及赔偿金支付能力; */ rent_settle_type?: "merchant" | "alipay" | string | undefined; /** * 商户请求状态上下文。商户发起借用服务时,需要在借用结束后返回给商户的参数,格式:json; * 如果json的某一项值包含中文,请使用encodeURIComponent对该值进行编码; * @example * var ext = { * name: encodeURIComponent('名字') * }; * var obj = { * invoke_state: JSON.stringify(ext) * } */ invoke_state?: string | undefined; /** * 租金信息描述, 长度不超过14个汉字,只用于页面展示给C端用户,除此之外无其他意义。 */ rent_info?: string | undefined; /** * 借用用户的真实姓名,非必填字段。但name和cert_no必须同时非空,或者同时为空,一旦传入会对用户身份进行校验。 */ name?: string | undefined; /** * 借用用户的真实身份证号,非必填字段。但name和cert_no必须同时非空,或者同时为空,一旦传入会对用户身份进行校验。 */ cert_no?: string | undefined; /** * 借用用户的收货地址,可选字段,最大长度128。推荐商户传入此值,会将此手机号码与用户身份信息进行匹配验证,防范欺诈风险。 */ address?: string | undefined; success?(res: { /** * 6001 用户取消了业务流程 * 6002 网络异常 * 9000 成功 * 4000 系统异常 */ resultStatus: "6001" | "6002" | "9000" | "4000" | string; result: { /** * 商户发起借用服务时传入的参数,需要在借用结束后返回给商户的参数 * @example * {"user_name":"john"} */ invoke_state: string; /** * 外部订单号,需要唯一,由商户传入,芝麻内部会做幂等控制,格式为:yyyyMMddHHmmss+4位随机数 * @example * 201610010000283627 */ out_order_no: string; /** * 芝麻信用借还订单号 * @example * 10020027631 */ order_no: string; /** * 是否准入:Y:准入;N:不准入(该字段目前无实际意义) */ admit_state: "Y" | "N" | string; /** * 物品借用/租赁者的用户id * @example * 2088202924240029 */ user_id: string; callbackData: any; // todo only in example }; }): void; } function zmCreditBorrow(options: ZMCreditBorrowOptions): void; // #endregion // #region 文本风险识别 https://docs.alipay.com/mini/api/text-identification type TextRiskIdentificationType = "keyword" | "0" | "1" | "2" | "3" | string; interface TextRiskIdentificationOptions extends BaseOptions { /** * 需要进行风险识别的文本内容 */ content: string; /** * 识别类型:keyword 表示关键词、0 表示广告、1表示涉政、2表示涉黄、3表示低俗辱骂 */ type: TextRiskIdentificationType[]; success?(res: { result: { /** * 目标内容文本识别到的类型,keyword 表示关键词、0 表示广告、1表示涉政、2表示涉黄、3表示低俗辱骂 */ type: TextRiskIdentificationType; /** * 仅当识别命中了 type 为 keyword 时,才会返回该字段 */ hitKeywords?: string[] | undefined; /** * 识别命中得分,最高分100分。仅当识别没有命中 keyword ,但入参中包含了广告或涉政或涉黄时,才会返回该字段 */ score?: string | undefined; }; fail?(res: { /** * 识别错误码 */ error: string; /** * 识别错误消息 */ errorMessage: string; }): void; }): void; } /** * 文本风险识别, **支付宝客户端10.1.10及以上版本支持。**详细接入参考[指引](https://docs.alipay.com/mini/introduce/text-identification) */ function textRiskIdentification(options: TextRiskIdentificationOptions): void; // #endregion // #region 小程序跳转 https://docs.alipay.com/mini/api/open-miniprogram interface NavigateToMiniProgramOptions extends BaseOptions { /** * 要跳转的目标小程序appId */ appId: string; /** * 打开的页面路径,如果为空则打开首页 */ path?: string | undefined; /** * 需要传递给目标小程序的数据,目标小程序可在 App.onLaunch() ,App.onShow() 中获取到这份数据 */ extraData?: any; /** * 要打开的小程序版本,有效值 develop(开发版),trial(体验版),release(正式版) ,仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是正式版,则打开的小程序必定是正式版。默认值 release */ envVersion?: "develop" | "trial" | "release" | string | undefined; } /** * 跳转到其他小程序。详细接入参考[指引](https://docs.alipay.com/mini/introduce/open-miniprogram) * @param options */ function navigateToMiniProgram(options: NavigateToMiniProgramOptions): void; interface NavigateBackMiniProgramOptions extends BaseOptions { /** * 需要传递给目标小程序的数据,目标小程序可在 App.onLaunch(),App.onShow() 中获取到这份数据 */ extraData?: any; } /** * 跳转回上一个小程序,只有当另一个小程序跳转到当前小程序时才会能调用成功 */ function navigateBackMiniProgram(options: NavigateBackMiniProgramOptions): void; // #endregion // #region webview组件控制 https://docs.alipay.com/mini/api/webview-context interface WebViewContext { postMessage(param: any): void; } /** * 创建并返回 web-view 上下文 webViewContext 对象。 * * @param webviewId 要创建的web-view所对应的id属性 */ function createWebViewContext(webviewId: string): WebViewContext; // #endregion } // 多媒体 declare namespace my { // #region 图片 https://docs.alipay.com/mini/api/media-image type ImageSourceType = "album" | "camera"; interface ChooseImageOptions extends BaseOptions { /** 最大可选照片数,默认1张 */ count: number; /** 相册选取或者拍照,默认 [‘camera’,‘album’] */ sourceType: ImageSourceType[]; /** 成功则返回图片的本地文件路径列表 tempFilePaths */ success(res: { /** * 图片文件描述 */ apFilePaths: string[]; }): void; } /** * 从本地相册选择图片或使用相机拍照。 */ function chooseImage(options: Partial): void; interface GenerateImageFromCodeOptions extends BaseOptions { code: string; format: "QRCODE"; width: number; /** * @defaultValue 'H' */ correctLevel?: "L" | "M" | "Q" | "H"; success?(res: { image: string }): void; } /** * 生成二维码,由客户端生成,速度快且不耗流量。文档详见(https://opendocs.alipay.com/mini/api/media/image/my.generateimagefromcode) * @param options */ function generateImageFromCode(options: GenerateImageFromCodeOptions): void; interface PreviewImageOptions extends BaseOptions { /** 当当前显示图片索引,默认 0 */ current?: number | undefined; /** 要预览的图片链接列表 */ urls: string[]; } /** * 预览图片。 */ function previewImage(options: PreviewImageOptions): void; interface SaveImageOptions extends BaseOptions { /** * 要保存的图片链接 */ url: string; success?(res: { errMsg: string }): void; } /** * @deprecated * 保存在线图片到手机相册。文档详见(https://opendocs.alipay.com/mini/api/media/image/my.saveimage) */ function saveImage(options: SaveImageOptions): void; interface SaveImageToPhotosAlbumOptions extends BaseOptions { /** * 要保存的图片链接 */ filePath: string; success?(res: { errMsg: string }): void; } /** * 保存在线图片到手机相册。文档详见(https://opendocs.alipay.com/mini/api/media/image/my.saveImagetophotosalbum) * @param options */ function saveImageToPhotosAlbum(options: SaveImageToPhotosAlbumOptions): void; interface CompressImageOptions extends BaseOptions { /** * 要压缩的图片地址数组 */ apFilePaths: string[]; /** * 压缩级别,支持 0 ~ 4 的整数,默认 4。详见「compressLevel表 说明表」 * compressLevel表 * compressLevel | 说明 * --------------|----- * 0 | 低质量 * 1 | 中等质量 * 2 | 高质量 * 3 | 不压缩 * 4 | 根据网络适应 */ compressLevel?: 0 | 1 | 2 | 3 | 4 | undefined; success?(res: { /** * 压缩后的路径数组 */ apFilePaths: string[]; }): void; } /** * 压缩图片。扫码体验: */ function compressImage(options: CompressImageOptions): void; interface GetImageInfoOptions extends BaseOptions { /** * 图片路径,目前支持: * - 网络图片路径 * - apFilePath路径 * - 相对路径 */ src: string; success?(res: { width: number; // 图片宽度(单位px) height: number; // 图片高度(单位px) path: string; // 图片本地路径 orientation: | "up" | "up-mirrored" | "down" | " down-mirrored" | "left-mirrored" | "right" | "lright-mirrored" | "left"; type: "png" | "jpg" | "gif" | "webp" | "hevc" | "bmp" | "heic"; }): void; } /** * 获取图片信息。文档详见(https://opendocs.alipay.com/mini/api/media/image/my.getimageinfo) */ function getImageInfo(options: GetImageInfoOptions): void; // #endregion } // 缓存 declare namespace my { // #region 缓存 https://docs.alipay.com/mini/api/storage interface SetStorageOptions extends BaseOptions { /** 本地缓存中的指定的 key */ key: string; /** 需要存储的内容 */ data: any; } /** * 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的数据。 * 这是异步接口。 */ function setStorage(options: SetStorageOptions): void; /** * 同步将数据存储在本地缓存中指定的 key 中。 * 这是同步接口。 * * @param key 本地缓存中的指定的 key * @param data 需要存储的内容 */ function setStorageSync(options: { key: string; data: any }): void; interface GetStorageOptions extends BaseOptions { /** 本地缓存中的指定的 key */ key: string; /** 接口调用的回调函数,res = {data: key对应的内容} */ success(res: DataResponse): void; } /** * 获取缓存数据。 * 这是异步接口。 */ function getStorage(options: GetStorageOptions): void; /** * 同步获取缓存数据。 * 这是同步接口 */ function getStorageSync(options: { key: string }): any; interface RemoveStorageOptions extends BaseOptions { key: string; } /** * 删除缓存数据。 * 这是异步接口。 */ function removeStorage(options: RemoveStorageOptions): void; /** * 同步删除缓存数据。 * 这是同步接口。 * @param key 缓存数据的key */ function removeStorageSync(options: { key: string }): void; /** * 清除本地数据缓存。 * 这是异步接口。 */ function clearStorage(): void; /** * 同步清除本地数据缓存。 * 这是同步接口。 */ function clearStorageSync(): void; interface StorageInfo { /** * 当前storage中所有的key */ keys: string[]; /** * 当前占用的空间大小, 单位kb */ currentSize: number; /** * 限制的空间大小,单位kb */ limitSize: number; } interface GetStorageInfoOptions extends BaseOptions { success(res: StorageInfo): void; } /** * 异步获取当前storage的相关信息 */ function getStorageInfo(options: GetStorageInfoOptions): void; function getStorageInfoSync(): StorageInfo; // #endregion } // 文件 declare namespace my { // #region 文件 https://docs.alipay.com/mini/api/file interface SavedFileData { /** 文件保存路径 */ apFilePath: string; } interface SaveFileOptions extends BaseOptions { /** 文件路径 */ apFilePath: string; success?(res: SavedFileData): void; } /** * 保存文件到本地(本地文件大小总容量限制:10M) */ function saveFile(options: SaveFileOptions): void; interface GetFileInfoSuccess { /** 文件大小,单位:B */ size: number; /** 摘要结果 */ digest: string; } interface GetFileInfoOptions extends BaseOptions { /** 文件路径 */ apFilePath: string; /** 摘要算法,支持md5和sha1,默认为md5 */ digestAlgorithm?: "md5" | "sha1" | undefined; success?(options: GetFileInfoSuccess): void; } /** * 获取文件信息 * 基础库版本 1.4.0 开始支持,低版本需做兼容处理 */ function getFileInfo(options: GetFileInfoOptions): void; interface SavedFileInfoData { /** * 文件大小,单位B */ size: number; /** * 创建时间 */ createTime: number; } interface GetSavedFileInfoOptions extends BaseOptions { /** 文件路径 */ apFilePath: string; /** 接口调用成功的回调函数 */ success?(res: SavedFileInfoData): void; } /** * 获取保存的文件信息 */ function getSavedFileInfo(options: GetSavedFileInfoOptions): void; interface GetSavedFileListOptions extends BaseOptions { success?(res: { fileList: Array<{ /** 文件大小 */ size: number; /** 创建时间 */ createTime: number; /** 文件路径 */ apFilePath: string; }>; }): void; } function getSavedFileList(options: GetSavedFileListOptions): void; type RemoveSavedFileOptions = GetSavedFileInfoOptions; /** * 删除某个保存的文件 */ function removeSavedFile(options: RemoveSavedFileOptions): void; // #endregion } // 位置 declare namespace my { // #region 位置 https://docs.alipay.com/mini/api/location interface LocationData { /** 经度 */ longitude: string; /** 纬度 */ latitude: string; /** 精确度,单位m */ accuracy: string; /** * 水平精确度,单位m */ horizontalAccuracy: string; /** * 国家(type>0生效) */ country?: string | undefined; /** * 国家编号 (type>0生效) */ countryCode?: string | undefined; /** * 省份(type>0生效) */ province?: string | undefined; /** * 城市(type>0生效) */ city?: string | undefined; /** * 城市级别的地区代码(type>0生效) */ cityAdcode?: string | undefined; /** * 区县(type>0生效) */ district?: string | undefined; /** * 区县级别的地区代码(type>0生效) */ districtAdcode?: string | undefined; /** * 需要街道级别逆地理的才会有的字段,街道门牌信息,结构是:{ street, number } (type > 1生效) */ streetNumber?: { street: string; number: string; } | undefined; /** * 需要POI级别逆地理的才会有的字段, 定位点附近的 POI 信息,结构是:{ name, address } (type > 2生效) */ pois?: | Array<{ name: string; address: string; }> | undefined; } interface GetLocationOptions extends BaseOptions { /** * 支付宝客户端经纬度定位缓存过期时间,单位秒。默认 30s。使用缓存会加快定位速度,缓存过期会重新定位 */ cacheTimeout: number; /** * 0:默认,获取经纬度 * 1:获取经纬度和详细到区县级别的逆地理编码数据 * 2:获取经纬度和详细到街道级别的逆地理编码数据,不推荐使用 * 3:获取经纬度和详细到POI级别的逆地理编码数据,不推荐使用 */ type: 0 | 1 | 2 | 3; /** 接口调用成功的回调函数,返回内容详见返回参数说明。 */ success(res: LocationData): void; } /** * 获取用户当前的地理位置信息 */ function getLocation(options: Partial): void; interface OpenLocationOptions extends BaseOptions { /** 经度 */ longitude: number | string; /** 纬度 */ latitude: number | string; /** 位置名称 */ name: string; /** 地址的详细说明 */ address: string; /** 缩放比例,范围 3~19,默认为 15 */ scale?: number | undefined; } /** * 使用微信内置地图查看位置 */ function openLocation(options: OpenLocationOptions): void; interface ChooseLocationData { /** * 位置名称 */ name: string; /** * 详细地址 */ address: string; /** * 纬度,浮点数,范围为-90~90,负数表示南纬 */ latitude: number; /** * 经度,浮点数,范围为-180~180,负数表示西经 */ longitude: number; } interface ChooseLocationOptions extends BaseOptions { success(res: ChooseLocationData): void; } /** * 使用支付宝内置地图选择地理位置。 */ function chooseLocation(options: ChooseLocationOptions): void; // #endregion } // 网络 declare namespace my { // #region 网络 https://docs.alipay.com/mini/api/network interface RequestHeader { [key: string]: string; } interface RequestOptions extends BaseOptions { /** 目标服务器url */ url: string; /** 设置请求的 HTTP 头,默认 {'Content-Type': 'application/x-www-form-urlencoded'} */ header?: RequestHeader | undefined; /** 默认GET,目前支持GET,POST */ method?: "GET" | "POST" | undefined; /** 请求的参数 */ data?: any; /** * 超时时间,单位ms,默认30000 */ timeout?: number | undefined; /** 期望返回的数据格式,默认json,支持json,text,base64 */ dataType?: "json" | "text" | "base64" | undefined; /** 收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'} */ success?(res: DataResponse): void; } function httpRequest(options: RequestOptions): void; interface UploadFileOptions extends BaseOptions { /** 开发者服务器地址 */ url: string; /** 要上传文件资源的本地定位符 */ filePath: string; /** 文件名,即对应的 key, 开发者在服务器端通过这个 key 可以获取到文件二进制内容 */ fileName: string; /** * 文件类型 */ fileType: "image" | "video" | "audio"; /** HTTP 请求 Header */ header?: RequestHeader | undefined; /** HTTP 请求中其他额外的 form 数据 */ formData?: any; success?(res: { /** 服务器返回的数据 */ data: string; /** HTTP 状态码 */ statusCode: string; header: any; }): void; } /** * 上传本地资源到开发者服务器。 */ function uploadFile(options: UploadFileOptions): void; interface DownloadFileOptions extends BaseOptions { /** 下载文件地址 */ url: string; /** HTTP 请求 Header */ header?: RequestHeader | undefined; /** 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} */ success?(res: TempFileResponse): void; } /** * 下载文件资源到本地。 */ function downloadFile(options: DownloadFileOptions): void; interface ConnectSocketOptions extends BaseOptions { /** 目标服务器url */ url: string; /** 请求的参数 */ data?: any; /** 设置请求的头部 */ header?: RequestHeader | undefined; method?: "GET" | "POST" | undefined; // todo missing in api } /** * 创建一个 WebSocket 的连接; * 一个支付宝小程序同时只能保留一个 WebSocket 连接,如果当前已存在 WebSocket 连接,会自动关闭该连接,并重新创建一个新的 WebSocket 连接。 */ function connectSocket(options: ConnectSocketOptions): void; /** * 监听WebSocket连接打开事件。 */ function onSocketOpen(callback: () => void): void; /** * 监听WebSocket关闭。 */ function onSocketClose(callback: () => void): void; /** * 取消监听WebSocket连接打开事件。 */ function offSocketOpen(callback: () => void): void; /** * 监听WebSocket错误。 */ function onSocketError(callback: (error: any) => void): void; /** * 取消监听WebSocket错误。 */ function offSocketError(callback: (error: any) => void): void; interface SendSocketMessageOptions extends BaseOptions { /** * 需要发送的内容:普通的文本内容 String 或者经 base64 编码后的 String */ data: string | ArrayBuffer; /** * 如果需要发送二进制数据,需要将入参数据经 base64 编码成 String 后赋值 data,同时将此字段设置为true,否则如果是普通的文本内容 String,不需要设置此字段 */ isBuffer?: boolean | undefined; } /** * 通过 WebSocket 连接发送数据,需要先使用 my.connectSocket 发起建连,并在 my.onSocketOpen 回调之后再发送数据。 */ function sendSocketMessage(options: SendSocketMessageOptions): void; /** * 监听WebSocket接受到服务器的消息事件。 */ function onSocketMessage( callback: (res: { /** * 需要发送的内容:普通的文本内容 String 或者经 base64 编码后的 String */ data: string | ArrayBuffer; /** * 如果需要发送二进制数据,需要将入参数据经 base64 编码成 String 后赋值 data,同时将此字段设置为true,否则如果是普通的文本内容 String,不需要设置此字段 */ isBuffer?: boolean | undefined; }) => void, ): void; function offSocketMessage(callback: (error: any) => void): void; interface CloseSocketOptions extends BaseOptions { success?(res: any): void; } /** * 监听WebSocket关闭。 */ function closeSocket(options?: CloseSocketOptions): void; /** * 取消监听WebSocket关闭。 */ function offSocketClose(callback: (error: any) => void): void; // #endregion } // 设备 declare namespace my { // #region canIUse https://docs.alipay.com/mini/api/can-i-use /** * 判断当前小程序的 API、入参或返回值、组件、属性等在当前版本是否支持。 * 参数使用 ${API}.${type}.${param}.${option} 或者 ${component}.${attribute}.${option} 方式来调用 * - API 表示 api 名字 * - type 取值 object/return/callback 表示 api 的判断类型 * - param 表示参数的某一个属性名 * - option 表示参数属性的具体属性值 * - component 表示组件名称 * - attribute 表示组件属性名 * - option 表示组件属性值 */ function canIUse(api: string): boolean; // #endregion // #region 获取基础库版本号 https://docs.alipay.com/mini/api/sdk-version const SDKVersion: string; // #endregion // #region 系统信息 https://docs.alipay.com/mini/api/system-info interface SystemInfo { /** * 手机型号 */ model: string; /** * 设备像素比 */ pixelRatio: number; /** * 窗口宽度 */ windowWidth: number; /** * 窗口高度 */ windowHeight: number; /** * 支付宝设置的语言 */ language: string; /** * 支付宝版本号 */ version: string; /** * 设备磁盘容量 */ storage: string; /** * 当前电量百分比 */ currentBattery: string; /** * 系统版本 */ system: string; /** * 系统名:Android,iOS */ platform: "Android" | "iOS" | string; /** * 屏幕宽度 */ screenWidth: number; /** * 屏幕高度 */ screenHeight: number; /** * 手机品牌 */ brand: string; /** * 用户设置字体大小 */ fontSizeSetting: number; /** * 当前运行的客户端,当前是支付宝则有效值是"alipay" */ app: "alipay" | string; } interface GetSystemInfoOptions extends BaseOptions { success?(res: SystemInfo): void; } function getSystemInfo(options: GetSystemInfoOptions): void; function getSystemInfoSync(): SystemInfo; // #endregion // #region 网络状态 https://docs.alipay.com/mini/api/network-status interface GetNetworkTypeOptions extends BaseOptions { success?(res: { /** 网络是否可用 */ networkAvailable: boolean; /** 网络类型值 UNKNOWN / NOTREACHABLE / WIFI / 3G / 2G / 4G / WWAN */ networkType: NetworkType; }): void; } type NetworkType = "UNKNOWN" | "NOTREACHABLE" | "WIFI" | "3G" | "2G" | "4G" | "WWAN"; function getNetworkType(options: GetNetworkTypeOptions): void; /** * 开始网络状态变化的监听 */ function onNetworkStatusChange( callback: (res: { /** 网络是否可用 */ isConnected: boolean; /** 网络类型值 UNKNOWN / NOTREACHABLE / WIFI / 3G / 2G / 4G / WWAN */ networkType: NetworkType; }) => void, ): void; /** * 取消网络状态变化的监听 */ function offNetworkStatusChange(): void; // #endregion // #region 剪贴板 https://docs.alipay.com/mini/api/clipboard interface GetClipboardOptions extends BaseOptions { success?(res: { text: string; }): void; } function getClipboard(options: GetClipboardOptions): void; interface SetClipboardOptions extends BaseOptions { /** 剪贴板数据 */ text: string; } function setClipboard(options: SetClipboardOptions): void; // #endregion // #region 摇一摇 https://docs.alipay.com/mini/api/shake function watchShake(options: BaseOptions): void; // #endregion // #region 震动 https://docs.alipay.com/mini/api/vibrate /** * 调用震动功能。 */ function vibrate(options?: BaseOptions): void; /** * 调用震动功能。 */ function vibrateLong(options?: BaseOptions): void; /** * 调用震动功能。 */ function vibrateShort(options?: BaseOptions): void; // #endregion // #region 拨打电话 https://docs.alipay.com/mini/api/macke-call interface MakePhoneCallOptions extends BaseOptions { /** * 需要拨打的电话号码 */ number: string; } /** * 拨打电话 */ function makePhoneCall(options: MakePhoneCallOptions): void; // #endregion // #region 获取服务器时间 https://docs.alipay.com/mini/api/get-server-time interface GetServerTimeOptions extends BaseOptions { success?(res: { /** 服务器时间的毫秒数 */ time: number; }): void; } function getServerTime(options: GetServerTimeOptions): void; // #endregion // #region 用户截屏事件 https://docs.alipay.com/mini/api/user-capture-screen /** * 监听用户主动截屏事件,用户使用系统截屏按键截屏时触发此事件 */ function onUserCaptureScreen(callback?: (res: any) => void): void; /** * 取消监听截屏事件。一般需要与 my.onUserCaptureScreen 成对出现。 */ function offUserCaptureScreen(): void; // #endregion // #region 屏幕亮度 https://docs.alipay.com/mini/api/screen-brightness interface SetKeepScreenOnOptions extends BaseOptions { /** 是否保持屏幕常亮 */ keepScreenOn: boolean; success?(res: { errMsg: string }): void; } /** * 设置是否保持常亮状态。 * 仅在当前小程序生效,离开小程序后设置失效。 */ function setKeepScreenOn(options?: SetKeepScreenOnOptions): void; interface GetScreenBrightnessOptions extends BaseOptions { /** 屏幕亮度值,范围 0~1,0 最暗,1 最亮 */ success(value: number): void; } /** * 获取屏幕亮度 */ function getScreenBrightness(options?: GetScreenBrightnessOptions): void; interface SetScreenBrightnessOptions extends BaseOptions { /** 需要设置的屏幕亮度,取值范围0-1 */ brightness: number; } /** * 设置屏幕亮度 */ function setScreenBrightness(options: SetScreenBrightnessOptions): void; // #endregion // #region 权限引导 https://docs.alipay.com/mini/api/show-auth-guide interface showAuthGuideOptions extends BaseOptions { /** * 引导的权限标识,用于标识该权限类型(如 LBS) * 支持的 authType 如下: * * 权限名称 权限码 支持平台 * 后台保活权限 BACKGROUNDER Android * 桌面快捷权限 SHORTCUT Android * 麦克风权限 MICROPHONE iOS * 通讯录权限 ADDRESSBOOK iOS * 相机权限 CAMERA iOS * 照片权限 PHOTO iOS * push通知栏权限 NOTIFICATION iOS * 自启动权限 SELFSTARTING Android * lbs总开关 LBSSERVICE iOS * lbs开关(app) LBS iOS */ authType: | "BACKGROUNDER" | "SHORTCUT" | "MICROPHONE" | "ADDRESSBOOK" | "CAMERA" | "PHOTO" | "NOTIFICATION" | "SELFSTARTING" | "LBSSERVICE" | "LBS"; } function showAuthGuide(options: showAuthGuideOptions): void; // #endregion } // 扫码 declare namespace my { // #region 扫码 https://docs.alipay.com/mini/api/scan type scanType = "qr" | "bar"; interface ScanCodeData { /** * 扫描二维码时返回二维码数据 */ code: string; /** * 所扫码的类型 */ qrCode: string; /** * 扫描条形码时返回条形码数据 */ barCode: string; } interface ScanOptions extends BaseOptions { /** * 扫码样式(默认 qr): * 1. qr,扫码框样式为二维码扫码框 * 1. bar,扫码样式为条形码扫码框 */ type?: scanType | undefined; /** * 是否隐藏相册(不允许从相册选择图片),只能从相机扫码 */ hideAlbum?: boolean | undefined; success?(res: ScanCodeData): void; } /** * 调起客户端扫码界面,扫码成功后返回对应的结果 */ function scan(options: ScanOptions): void; // #endregion } // 蓝牙 declare namespace my { // #region 快速接入 https://docs.alipay.com/mini/api/bluetooth-intro // #endregion // #region API https://docs.alipay.com/mini/api/bluetooth-api interface OpenBluetoothAdapterOptions extends BaseOptions { /** 不传的话默认是true,表示是否在离开当前页面时自动断开蓝牙(仅对android有效) */ autoClose: boolean; success(res: { /** * 是否支持 BLE */ isSupportBLE: boolean; }): void; } /** * 初始化小程序蓝牙模块,生效周期为调用 my.openBluetoothAdapter 至调用 my.closeBluetoothAdapter 或小程序被销毁为止。 在小程序蓝牙适配器模块生效期间,开发者可以正常调用下面的小程序API,并会收到蓝牙模块相关的 on 事件回调。 */ function openBluetoothAdapter(options: Partial): void; interface CloseBluetoothAdapterOptions extends BaseOptions { success(res: any): void; } /** * 关闭本机蓝牙模块 */ function closeBluetoothAdapter(options: CloseBluetoothAdapterOptions): void; interface BluetoothAdapterStateData extends ErrMsgResponse { /** * 是否正在搜索设备 */ discovering: boolean; /** * 蓝牙模块是否可用(需支持 BLE 并且蓝牙是打开状态) */ available: boolean; } interface GetBluetoothAdapterStateOptions extends BaseOptions { success(res: BluetoothAdapterStateData): void; } /** * 获取本机蓝牙适配器状态 */ function getBluetoothAdapterState(options: GetBluetoothAdapterStateOptions): void; interface StartBluetoothDevicesDiscoveryOptions extends BaseOptions { /** * 蓝牙设备主 service 的 uuid 列表 * 某些蓝牙设备会广播自己的主 service 的 uuid。如果这里传入该数组,那么根据该 uuid 列表,只搜索有这个主服务的设备。 */ services?: string[] | undefined; /** * 否允许重复上报同一设备, 如果允许重复上报,则onDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同 */ allowDuplicatesKey?: boolean | undefined; /** * 上报设备的间隔,默认为0,意思是找到新设备立即上报,否则根据传入的间隔上报 */ interval?: number | undefined; } /** * 开始搜寻附近的蓝牙外围设备。搜索结果将在 my.onBluetoothDeviceFound 事件中返回。 */ function startBluetoothDevicesDiscovery(options: StartBluetoothDevicesDiscoveryOptions): void; interface StopBluetoothDevicesDiscoveryOptions extends BaseOptions { success(res: ErrMsgResponse): void; } /** * 停止搜寻附近的蓝牙外围设备。请在确保找到需要连接的设备后调用该方法停止搜索。 */ function stopBluetoothDevicesDiscovery(options: StopBluetoothDevicesDiscoveryOptions): void; /** * 蓝牙设备信息 */ interface BluetoothDevice { /** * 蓝牙设备名称,某些设备可能没有 */ name: string; /** * (兼容旧版本) 值与 name 一致 */ deviceName: string; /** * 广播设备名称 */ localName: string; /** * 设备的 id */ deviceId: string; /** * 设备信号强度 */ RSSI: number; /** * 设备的广播内容 */ advertisData: ArrayBuffer; /** * 设备的manufacturerData */ manufacturerData: ArrayBuffer; } interface GetBluetoothDevicesOptions extends BaseOptions { success( res: { devices: BluetoothDevice[]; } & ErrMsgResponse, ): void; } /** * 获取所有已发现的蓝牙设备,包括已经和本机处于连接状态的设备。 */ function getBluetoothDevices(options: GetBluetoothDevicesOptions): void; interface GetConnectedBluetoothDevicesOptions extends BaseOptions { services?: string[] | undefined; success( res: { devices: BluetoothDevice[]; } & ErrMsgResponse, ): void; } /** * 获取处于已连接状态的设备。 */ function getConnectedBluetoothDevices(options: GetConnectedBluetoothDevicesOptions): void; interface BLEDeviceOptions extends BaseOptions { /** * 蓝牙设备id */ deviceId: string; } /** * 连接低功耗蓝牙设备。 */ function connectBLEDevice(options: BLEDeviceOptions): void; /** * 断开与低功耗蓝牙设备的连接。 */ function disconnectBLEDevice(options: BLEDeviceOptions): void; interface WriteBLECharacteristicValueOptions extends BaseOptions { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 蓝牙特征值对应服务的 uuid */ serviceId: string; /** * 蓝牙特征值的 uuid */ characteristicId: string; /** * 蓝牙设备特征值对应的值,16进制字符串,限制在20字节内 */ value: string; } /** * 向低功耗蓝牙设备特征值中写入数据。 */ function writeBLECharacteristicValue( options: WriteBLECharacteristicValueOptions, ): void; interface ReadBLECharacteristicValueOptions extends BaseOptions { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 蓝牙特征值对应服务的 uuid */ serviceId: string; /** * 蓝牙特征值的 uuid */ characteristicId: string; success( res: { characteristic: { /** * 蓝牙设备特征值的 uuid */ characteristicId: string; /** * 蓝牙设备特征值对应服务的 uuid */ serviceId: string; /** * 蓝牙设备特征值对应的二进制值 */ value: ArrayBuffer; }; } & ErrMsgResponse, ): void; } /** * 读取低功耗蓝牙设备特征值中的数据。调用后在 my.onBLECharacteristicValueChange() 事件中接收数据返回。 */ function readBLECharacteristicValue(options: ReadBLECharacteristicValueOptions): void; interface NotifyBLECharacteristicValueChangeOptions extends BaseOptions { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 蓝牙特征值对应 service 的 uuid */ serviceId: string; /** * 蓝牙特征值的 uuid */ characteristicId: string; /** * notify 的 descriptor 的 uuid (只有android 会用到,非必填,默认值00002902-0000-10008000-00805f9b34fb) */ descriptorId?: string | undefined; /** * 是否启用notify或indicate */ state?: boolean | undefined; } function notifyBLECharacteristicValueChange(optons: NotifyBLECharacteristicValueChangeOptions): void; interface NotifyBLECharacteristicValueChangedOptions extends BaseOptions { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 蓝牙特征值对应服务的 uuid */ serviceId: string; /** * 蓝牙特征值的 uuid */ characteristicId: string; /** * notify 的 descriptor 的 uuid (只有android 会用到,非必填,默认值00002902-0000-10008000-00805f9b34fb) */ descriptorId?: string | undefined; /** * true: 启用 notify; false: 停用 notify */ state: boolean; success(res: ErrMsgResponse): void; } /** * 启用低功耗蓝牙设备特征值变化时的 notify 功能。注意:设备的特征值必须支持 notify/indicate 才可以成功调用,具体参照 characteristic 的 properties 属性 另外,必须先启用 notify 才能监听到设备 characteristicValueChange 事件。 */ function notifyBLECharacteristicValueChanged(options: NotifyBLECharacteristicValueChangedOptions): void; interface GetBLEDeviceServicesOptions extends BaseOptions { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 成功则返回本机蓝牙适配器状态 */ success( res: { services: Array<{ /** * 蓝牙设备服务的 uuid */ serviceId: string; /** * 该服务是否为主服务 */ isPrimary: boolean; }>; } & ErrMsgResponse, ): void; } /** * 获取蓝牙设备所有 service(服务) */ function getBLEDeviceServices(options: GetBLEDeviceServicesOptions): void; interface GetBLEDeviceCharacteristicsOptions extends BaseOptions { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 蓝牙服务 uuid */ serviceId: string; /** * 成功则返回本机蓝牙适配器状态 */ success( res: { characteristics: Array<{ /** * 蓝牙设备特征值的 uuid */ characteristicId: string; /** * 蓝牙设备特征值对应服务的 uuid */ serviceId: string; /** * 蓝牙设备特征值对应的16进制值 */ value: ArrayBuffer; /** * 该特征值支持的操作类型 */ properties: Array<{ /** * 该特征值是否支持 read 操作 */ read: boolean; /** * 该特征值是否支持 write 操作 */ write: boolean; /** * 该特征值是否支持 notify 操作 */ notify: boolean; /** * 该特征值是否支持 indicate 操作 */ indicate: boolean; }>; }>; } & ErrMsgResponse, ): void; } /** * 获取蓝牙设备所有 characteristic(特征值) */ function getBLEDeviceCharacteristics(options: GetBLEDeviceCharacteristicsOptions): void; interface OnBluetoothDeviceFoundOptions extends BaseOptions { success?(res: { devices: BluetoothDevice[]; }): void; } /** * 搜索到新的蓝牙设备时触发此事件。 */ function onBluetoothDeviceFound(options: OnBluetoothDeviceFoundOptions): void; /** * 移除寻找到新的蓝牙设备事件的监听。 */ function offBluetoothDeviceFound(callback?: any): void; interface OnBLECharacteristicValueChangeOptions extends BaseOptions { success?(res: { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 蓝牙特征值对应 service 的 uuid */ serviceId: string; /** * 蓝牙特征值的 uuid */ characteristicId: string; /** * 特征值最新的16进制值 */ value: ArrayBuffer; }): void; } /** * 监听低功耗蓝牙设备的特征值变化的事件。 */ function onBLECharacteristicValueChange(options: OnBLECharacteristicValueChangeOptions): void; interface OnBLEConnectionStateChangedOptions extends BaseOptions { success?(res: { /** * 蓝牙设备 id,参考 device 对象 */ deviceId: string; /** * 连接目前的状态 */ connected: boolean; }): void; } /** * 移除低功耗蓝牙设备的特征值变化事件的监听。 */ function offBLECharacteristicValueChange(callback?: any): void; /** * 监听低功耗蓝牙连接的错误事件,包括设备丢失,连接异常断开等。 */ function onBLEConnectionStateChanged(options: OnBLEConnectionStateChangedOptions): void; /** * 移除低功耗蓝牙连接状态变化事件的监听。 */ function offBLEConnectionStateChanged(): void; interface BluetoothAdapterState { /** * 蓝牙适配器是否可用 */ available: boolean; /** * 蓝牙适配器是否处于搜索状态 */ discovering: boolean; } /** * 监听本机蓝牙状态变化的事件。 */ function onBluetoothAdapterStateChange(callback: (res: BluetoothAdapterState) => void): void; /** * 移除本机蓝牙状态变化的事件的监听。 */ function offBluetoothAdapterStateChange(): void; // #endregion } // iBeacon declare namespace my { // #region iBeacon https://docs.alipay.com/mini/api/yqleyc interface StartBeaconDiscoveryOptions extends BaseOptions { /** * iBeacon设备广播的 uuids */ uuids: string[]; success?(res: ErrMsgResponse): void; } /** * 开始搜索附近的iBeacon设备 */ function startBeaconDiscovery(options: StartBeaconDiscoveryOptions): void; interface StopBeaconDiscoveryOptions extends BaseOptions { success?(res: ErrMsgResponse): void; } /** * 停止搜索附近的iBeacon设备 */ function stopBeaconDiscovery(options: StopBeaconDiscoveryOptions): void; interface Beacon { /** iBeacon 设备广播的 uuid */ uuid: string; /** iBeacon 设备的主 id */ major: string; /** iBeacon 设备的次 id */ minor: string; /** 表示设备距离的枚举值(0-3分别代表:未知、极近、近、远) */ proximity: 0 | 1 | 2 | 3; /** iBeacon 设备的距离 */ accuracy: number; /** iBeacon 信号强度 */ rssi: number; } interface GetBeaconsSuccess { beacons: Beacon[]; /** * errorCode=0 ,接口调用成功 */ errCode: string; /** * ok */ errMsg: string; } interface GetBeaconsOptions extends BaseOptions { success?(options: GetBeaconsSuccess): void; } /** * 获取所有已搜索到的iBeacon设备 */ function getBeacons(options: GetBeaconsOptions): void; interface BeaconUpdateOptions extends BaseOptions { success?(res: { beacons: Beacon[]; }): void; } /** * 监听 iBeacon 设备的更新事件 */ function onBeaconUpdate(options: BeaconUpdateOptions): void; interface BeaconServiceChangeOptions extends BaseOptions { success?(res: { /** * 服务目前是否可用 */ available: boolean; /** * 目前是否处于搜索状态 */ discovering: boolean; }): void; } /** * 监听 iBeacon 服务的状态变化 */ function onBeaconServiceChange(options: BeaconServiceChangeOptions): void; // #endregion } // 数据安全 declare namespace my { // #region 数据安全 https://docs.alipay.com/mini/api/data-safe interface RsaOptions extends BaseOptions { /** * 使用rsa加密还是rsa解密,encrypt加密,decrypt解密 */ action: string; /** * 要处理的文本,加密为原始文本,解密为Base64编码格式文本 */ text: string; /** * rsa秘钥,加密使用公钥,解密使用私钥 */ key: string; success?(res: { /** * 经过处理过后得到的文本,加密为Base64编码文本,解密为原始文本 */ text: string; }): void; } /** * 非对称加密。 */ function rsa(options: RsaOptions): void; // #endregion } // 分享 declare namespace my { // #region 分享 https://docs.alipay.com/mini/api/share_app // #endregion } // 自定义分析 declare namespace my { // #region 自定义分析 https://docs.alipay.com/mini/api/report /** * 自定义分析数据的上报接口。使用前需要在小程序管理后台的事件管理中新建事件,并配置好事件名和字段。 * * @param eventName 自定义事件名,需申请 * @param data 上报的数据 */ function reportAnalytics(eventName: string, data: any): void; /** * 隐藏分享按钮。 */ function hideShareMenu(options?: BaseOptions): void; // #endregion } declare namespace my { interface LaunchOptions { /** * 打开小程序的路径 */ path: string; /** * 打开小程序的query */ query: object; /** * 打开小程序的[场景值] */ scene: number; /** * shareTicket,详见 获取更多[转发信息] */ shareTicket: string; /** * 当场景为由从另一个小程序或公众号或App打开时,返回此字段 */ referrerInfo: object; /** * 来源小程序或公众号或App的 appId,详见下方说明 */ "referrerInfo.appId": string; /** * 来源小程序传过来的数据,scene=1037或1038时支持 */ "referrerInfo.extraData": object; // #endregion } interface AppOptions { /** * 监听小程序初始化。 * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) * 生命周期函数 */ onLaunch?: ((this: App, option: LaunchOptions) => void) | undefined; /** * 监听小程序显示。 * 当小程序启动,或从后台进入前台显示,会触发 onShow * 生命周期函数 */ onShow?: ((this: App, option: LaunchOptions) => void) | undefined; /** * 监听小程序隐藏。 * 当小程序从前台进入后台,会触发 onHide * 生命周期函数 */ onHide?: ((this: App) => void) | undefined; /** * 错误监听函数 * 当小程序发生脚本错误或者 api 调用失败时 * 会触发 onError 并带上错误信息 */ onError?: ((this: App, msg: string) => void) | undefined; /** * 小程序退出时触发 */ onUnlaunch?: ((this: App) => void) | undefined; /** * 全局Data */ globalData?: object | undefined; [key: string]: any; } interface CreateIntersectionObserverOption { thresholds?: [number, number] | undefined; initialRatio?: number | undefined; selectAll?: boolean | undefined; } interface Margins { left?: number | undefined; right?: number | undefined; top?: number | undefined; bottom?: number | undefined; } interface ObserveResponse { id: string; dataset: any; time: number; intersectionRatio: number; // 相交区域占目标节点的布局区域的比例 boundingClientRect: RectArea; intersectionRect: RectArea; relativeRect: RectArea; } interface IntersectionObserver { relativeTo(selector?: string, margins?: Margins): IntersectionObserver; relativeToViewport(margins?: Margins): IntersectionObserver; observe( selector?: string, callback?: (response: ObserveResponse) => void, ): IntersectionObserver; disconnect(): void; } interface ComponentRelation { /** 目标组件的相对关系,可选的值为 parent 、 child 、 ancestor 、 descendant */ type: "parent" | "child" | "ancestor" | "descendant"; /** 如果这一项被设置,则它表示关联的目标节点所应具有的behavior,所有拥有这一behavior的组件节点都会被关联 */ target?: string | undefined; /** 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件attached生命周期之后 */ linked?: ((target: Component) => void) | undefined; /** 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件moved生命周期之后 */ linkChanged?: ((target: Component) => void) | undefined; /** 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件detached生命周期之后 */ unlinked?: ((target: Component) => void) | undefined; } interface Component { /** * 组件的文件路径 */ is: string; /** * 节点id */ id: string; /** * 节点dataset */ dataset: string; /** * 组件数据,包括内部数据和属性值 */ data: any; /** * 组件数据,包括内部数据和属性值(与 data 一致) */ properties: any; /** * 将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值 * 1. 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。 * 2. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。 * 3. 请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题 * @param data object 以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value * @param [callback] callback 是一个回调函数,在这次setData对界面渲染完毕后调用 */ setData( data: any, callback?: () => void, ): void; hasBehavior(behavior: any): boolean; triggerEvent( name: string, details?: any, options?: Partial<{ bubbles: boolean; composed: boolean; capturePhase: boolean; }>, ): void; createSelectorQuery(): SelectorQuery; createIntersectionObserver( options?: CreateIntersectionObserverOption, ): IntersectionObserver; /** * 使用选择器选择组件实例节点 * 返回匹配到的第一个组件实例对象 */ selectComponent(selector: string): Component; /** * selector 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组 */ selectAllComponents(selector: string): Component[]; getRelationNodes(relationKey: string): ComponentRelation[]; } interface Page extends Component { /** * data */ data: any; /** * 强制更新 */ forceUpdate(): void; /** * 字段可以获取到当前页面的路径。 */ route(): void; /** * 更新 */ update(): void; /** * 将页面滚动到目标位置。 * * scrollTop 滚动到页面的目标位置(单位px) * [duration] 滚动动画的时长,默认300ms,单位 ms */ pageScrollTo(option?: PageScrollToOptions): void; [key: string]: any; } interface App { data: any; /** * 获取当前页面 */ getCurrentPage(): Page; [key: string]: any; } interface EventTarget { id: string; tagName: string; dataset: { [name: string]: string }; } type TouchEventType = | "tap" | "touchstart" | "touchmove" | "touchcancel" | "touchend" | "touchforcechange"; type TransitionEventType = | "transitionend" | "animationstart" | "animationiteration" | "animationend"; type EventType = | "input" | "form" | "submit" | "scroll" | TouchEventType | TransitionEventType | "tap" | "longpress"; interface BaseEvent { type: T; timeStamp: number; currentTarget: EventTarget; target: EventTarget; detail: Detail; } interface Options { query: any; // 当前小程序的 query path: string; // 当前小程序的页面地址 } interface PageOptions { data: any; onLaunch(this: Page, options: Options): void; onShow(this: Page, options: Options): void; onHide(this: Page): void; onError(this: Page): void; [key: string]: any; } function postMessage(param: any): void; type onMessageFun = (p: any) => void; let onMessage: onMessageFun; } declare function App(app: Partial): void; declare function getApp(): my.App; declare function Behavior(options?: any): my.Component; declare function Component(options?: any): my.Component; declare function Page(options: Partial): void; declare function getCurrentPages(): my.Page[];