index.d.ts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. // Type definitions for weixin jssdk 1.6.0
  2. // Project: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
  3. // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
  4. declare namespace wx {
  5. type ImageSizeType = "original" | "compressed";
  6. type ImageSourceType = "album" | "camera";
  7. type VideoSourceType = "album" | "camera";
  8. type ApiMethod =
  9. | "onMenuShareTimeline"
  10. | "onMenuShareAppMessage"
  11. | "onMenuShareQQ"
  12. | "onMenuShareWeibo"
  13. | "onMenuShareQZone"
  14. | "updateAppMessageShareData"
  15. | "updateTimelineShareData"
  16. | "startRecord"
  17. | "stopRecord"
  18. | "onVoiceRecordEnd"
  19. | "playVoice"
  20. | "pauseVoice"
  21. | "stopVoice"
  22. | "onVoicePlayEnd"
  23. | "uploadVoice"
  24. | "downloadVoice"
  25. | "chooseImage"
  26. | "previewImage"
  27. | "uploadImage"
  28. | "downloadImage"
  29. | "translateVoice"
  30. | "getNetworkType"
  31. | "openLocation"
  32. | "getLocation"
  33. | "hideOptionMenu"
  34. | "showOptionMenu"
  35. | "hideMenuItems"
  36. | "showMenuItems"
  37. | "hideAllNonBaseMenuItem"
  38. | "showAllNonBaseMenuItem"
  39. | "closeWindow"
  40. | "scanQRCode"
  41. | "chooseWXPay"
  42. | "openProductSpecificView"
  43. | "addCard"
  44. | "chooseCard"
  45. | "openCard";
  46. // 所有JS接口列表
  47. type jsApiList = ApiMethod[];
  48. // 开放标签列表
  49. // https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
  50. type openTag = "wx-open-launch-weapp" | "wx-open-launch-app" | "wx-open-subscribe" | "wx-open-audio"
  51. type openTagList = openTag[];
  52. // 所有菜单项列表
  53. // 基本类
  54. type menuBase =
  55. | "menuItem:exposeArticle" // 举报
  56. | "menuItem:setFont" // 调整字体
  57. | "menuItem:dayMode" // 日间模式
  58. | "menuItem:nightMode" // 夜间模式
  59. | "menuItem:refresh" // 刷新
  60. | "menuItem:profile" // 查看公众号(已添加)
  61. | "menuItem:addContact"; // 查看公众号(未添加)
  62. // 传播类
  63. type menuShare =
  64. | "menuItem:share:appMessage" // 发送给朋友
  65. | "menuItem:share:timeline" // 分享到朋友圈
  66. | "menuItem:share:qq" // 分享到QQ
  67. | "menuItem:share:weiboApp" // 分享到Weibo
  68. | "menuItem:favorite" // 收藏
  69. | "menuItem:share:facebook" // 分享到FB
  70. | "menuItem:share:QZone"; // 分享到 QQ 空间
  71. // 保护类
  72. type menuProtected =
  73. | "menuItem:editTag" // 编辑标签
  74. | "menuItem:delete" // 删除
  75. | "menuItem:copyUrl" // 复制链接
  76. | "menuItem:originPage" // 原网页
  77. | "menuItem:readMode" // 阅读模式
  78. | "menuItem:openWithQQBrowser" // 在QQ浏览器中打开
  79. | "menuItem:openWithSafari" // 在Safari中打开
  80. | "menuItem:share:email" // 邮件
  81. | "menuItem:share:brand"; // 一些特殊公众号
  82. type menuList = Array<menuBase | menuProtected | menuShare>;
  83. function config(conf: {
  84. debug?: boolean; // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  85. appId: string; // 必填,公众号的唯一标识
  86. timestamp: number; // 必填,生成签名的时间戳
  87. nonceStr: string; // 必填,生成签名的随机串
  88. signature: string; // 必填,签名,见附录1
  89. jsApiList?: jsApiList; // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  90. openTagList?: openTagList;
  91. }): void;
  92. interface Resouce {
  93. localId: string;
  94. }
  95. interface BaseParams {
  96. success?(...args: any[]): void;
  97. /** 接口调用失败的回调函数 */
  98. fail?(...args: any[]): void;
  99. /** 接口取消调用的回调函数 */
  100. cancel?(...args: any[]): void;
  101. /** 接口调用结束的回调函数(调用成功、失败都会执行) */
  102. complete?(...args: any[]): void;
  103. }
  104. function ready(fn: () => void): void;
  105. function error(fn: (err: { errMsg: string }) => void): void;
  106. interface IcheckJsApi extends BaseParams {
  107. jsApiList: jsApiList; // 需要检测的JS接口列表,所有JS接口列表见附录2,
  108. // 以键值对的形式返回,可用的api值true,不可用为false
  109. // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
  110. success(res: {
  111. checkResult: { [api: string]: boolean };
  112. errMsg: string;
  113. }): void;
  114. }
  115. /**
  116. * 判断当前客户端版本是否支持指定JS接口
  117. * 备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,第一期开放的接口均可不使用checkJsApi来检测。
  118. */
  119. function checkJsApi(params: IcheckJsApi): void;
  120. interface IonMenuShareTimeline extends BaseParams {
  121. title: string; // 分享标题
  122. link: string; // 分享链接
  123. imgUrl: string; // 分享图标
  124. // 用户确认分享后执行的回调函数
  125. success(): void;
  126. // 用户取消分享后执行的回调函数
  127. cancel(): void;
  128. }
  129. /*=============================基础接口================================*/
  130. /**
  131. * 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
  132. */
  133. function onMenuShareTimeline(params: IonMenuShareTimeline): void;
  134. interface IonMenuShareAppMessage extends BaseParams {
  135. title: string; // 分享标题
  136. desc: string; // 分享描述
  137. link: string; // 分享链接
  138. imgUrl: string; // 分享图标
  139. type?: "music" | "video或link" | "link"; // 分享类型,music、video或link,不填默认为link
  140. dataUrl?: string; // 如果type是music或video,则要提供数据链接,默认为空
  141. // 用户确认分享后执行的回调函数
  142. success(): void;
  143. // 用户取消分享后执行的回调函数
  144. cancel(): void;
  145. }
  146. /**
  147. * 获取“分享给朋友”按钮点击状态及自定义分享内容接口
  148. */
  149. function onMenuShareAppMessage(params: IonMenuShareAppMessage): void;
  150. interface IonMenuShareQQ extends BaseParams {
  151. title: string; // 分享标题
  152. desc: string; // 分享描述
  153. link: string; // 分享链接
  154. imgUrl: string; // 分享图标
  155. // 用户确认分享后执行的回调函数
  156. success(): void;
  157. // 用户取消分享后执行的回调函数
  158. cancel(): void;
  159. }
  160. /**
  161. * 获取“分享到QQ”按钮点击状态及自定义分享内容接口
  162. */
  163. function onMenuShareQQ(params: IonMenuShareQQ): void;
  164. interface IonMenuShareWeibo extends BaseParams {
  165. title: string; // 分享标题
  166. desc: string; // 分享描述
  167. link: string; // 分享链接
  168. imgUrl: string; // 分享图标
  169. // 用户确认分享后执行的回调函数
  170. success(): void;
  171. // 用户取消分享后执行的回调函数
  172. cancel(): void;
  173. }
  174. /**
  175. * 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
  176. */
  177. function onMenuShareWeibo(params: IonMenuShareWeibo): void;
  178. interface IonMenuShareQZone extends BaseParams {
  179. title: string; // 分享标题
  180. desc: string; // 分享描述
  181. link: string; // 分享链接
  182. imgUrl: string; // 分享图标
  183. // 用户确认分享后执行的回调函数
  184. success(): void;
  185. // 用户取消分享后执行的回调函数
  186. cancel(): void;
  187. }
  188. /**
  189. * 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口
  190. */
  191. function onMenuShareQZone(params: IonMenuShareQZone): void;
  192. interface IupdateAppMessageShareData extends BaseParams {
  193. title: string; // 分享标题
  194. desc: string; // 分享描述
  195. link: string; // 分享链接
  196. imgUrl: string; // 分享图标
  197. // 用户确认分享后执行的回调函数
  198. success(): void;
  199. }
  200. /**
  201. * 获取“分享给朋友”及“分享到QQ”按钮点击状态及自定义分享内容接口(新)
  202. */
  203. function updateAppMessageShareData(params: IupdateAppMessageShareData): void;
  204. interface IupdateTimelineShareData extends BaseParams {
  205. title: string; // 分享标题
  206. link: string; // 分享链接
  207. imgUrl: string; // 分享图标
  208. // 用户确认分享后执行的回调函数
  209. success(): void;
  210. }
  211. /**
  212. * 获取“分享到朋友圈”及“分享到QQ空间”按钮点击状态及自定义分享内容接口
  213. */
  214. function updateTimelineShareData(params: IupdateTimelineShareData): void;
  215. /*=============================基础接口================================*/
  216. /*=============================图像接口================================*/
  217. interface IchooseImage extends BaseParams {
  218. /** 最多可以选择的图片张数,默认9 */
  219. count?: number;
  220. /** original 原图,compressed 压缩图,默认二者都有 */
  221. sizeType?: ImageSizeType[];
  222. /** album 从相册选图,camera 使用相机,默认二者都有 */
  223. sourceType?: ImageSourceType[];
  224. /** 成功则返回图片的本地文件路径列表 tempFilePaths */
  225. success(res: {
  226. sourceType: string; // weixin album camera
  227. localIds: string[];
  228. errMsg: string;
  229. }): void;
  230. cancel(): void;
  231. }
  232. /**
  233. * 从本地相册选择图片或使用相机拍照。
  234. */
  235. function chooseImage(params: IchooseImage): void;
  236. interface IpreviewImage extends BaseParams {
  237. current: string; // 当前显示图片的http链接
  238. urls: string[]; // 需要预览的图片http链接列表
  239. }
  240. /**
  241. * 预览图片接口
  242. */
  243. function previewImage(params: IpreviewImage): void;
  244. interface IuploadResource extends BaseParams {
  245. localId: string; // 需要上传的图片的本地ID,由chooseImage接口获得
  246. isShowProgressTips: number; // 默认为1,显示进度提示
  247. // 返回图片的服务器端ID
  248. success(res: { serverId: string }): void;
  249. }
  250. /**
  251. * 上传图片接口
  252. */
  253. function uploadImage(params: IuploadResource): void;
  254. interface IdownloadResource extends BaseParams {
  255. serverId: string; // 需要下载的图片的服务器端ID,由uploadImage接口获得
  256. isShowProgressTips: number; // 默认为1,显示进度提示
  257. // 返回图片下载后的本地ID
  258. success(res: Resouce): void;
  259. }
  260. /**
  261. * 下载图片接口
  262. */
  263. function downloadImage(params: IdownloadResource): void;
  264. interface IgetLocalImgData extends BaseParams {
  265. localId: string; // 图片的localID
  266. // localData是图片的base64数据,可以用img标签显示
  267. success(res: { localData: string }): void;
  268. }
  269. /**
  270. * 获取本地图片接口
  271. */
  272. function getLocalImgData(params: IgetLocalImgData): void;
  273. /*=============================图像接口================================*/
  274. /*=============================音频接口================================*/
  275. /**
  276. * 开始录音接口
  277. */
  278. function startRecord(): void;
  279. interface IstopRecord extends BaseParams {
  280. success(res: Resouce): void;
  281. }
  282. /**
  283. * 停止录音接口
  284. */
  285. function stopRecord(params: IstopRecord): void;
  286. interface IonVoiceRecordEnd extends BaseParams {
  287. // 录音时间超过一分钟没有停止的时候会执行 complete 回调
  288. complete(res: Resouce): void;
  289. }
  290. /**
  291. * 监听录音自动停止接口
  292. */
  293. function onVoiceRecordEnd(params: IonVoiceRecordEnd): void;
  294. interface IplaypausestopVoice extends BaseParams {
  295. localId: string; // 需要播放的音频的本地ID,由stopRecord接口获得
  296. }
  297. /**
  298. * 播放语音接口
  299. */
  300. function playVoice(params: IplaypausestopVoice): void;
  301. /**
  302. * 暂停播放接口
  303. */
  304. function pauseVoice(params: IplaypausestopVoice): void;
  305. /**
  306. * 停止播放接口
  307. */
  308. function stopVoice(params: IplaypausestopVoice): void;
  309. interface IonVoicePlayEnd extends BaseParams {
  310. success(res: Resouce): void;
  311. }
  312. /**
  313. * 监听语音播放完毕接口
  314. */
  315. function onVoicePlayEnd(params: IonVoicePlayEnd): void;
  316. /**
  317. * 上传语音接口
  318. * 备注:上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器
  319. * ,此处获得的 serverId 即 media_id,参考文档
  320. * ../12 / 58bfcfabbd501c7cd77c19bd9cfa8354.html
  321. * 目前多媒体文件下载接口的频率限制为10000次/ 天,
  322. * 如需要调高频率,请邮件weixin - open@qq.com,
  323. * 邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,
  324. * 附上产品体验链接,并对用户量和使用量进行说明。
  325. */
  326. function uploadVoice(params: IuploadResource): void;
  327. /**
  328. * 下载语音接口
  329. */
  330. function downloadVoice(params: IdownloadResource): void;
  331. /*=============================音频接口================================*/
  332. /*=============================智能接口================================*/
  333. interface ItranslateVoice extends BaseParams {
  334. localId: string; // 需要识别的音频的本地Id,由录音相关接口获得
  335. isShowProgressTips: number; // 默认为1,显示进度提示
  336. success(res: { translateResult: string }): void;
  337. }
  338. /**
  339. * 识别音频并返回识别结果接口
  340. */
  341. function translateVoice(params: ItranslateVoice): void;
  342. /*=============================智能接口================================*/
  343. /*=============================设备信息================================*/
  344. type networkType = "2g" | "3g" | "4g" | "wifi";
  345. interface IgetNetworkType extends BaseParams {
  346. success(res: { networkType: networkType }): void;
  347. }
  348. /**
  349. * 获取网络状态接口
  350. */
  351. function getNetworkType(params: IgetNetworkType): void;
  352. /*=============================设备信息================================*/
  353. /*=============================地理位置================================*/
  354. interface IopenLocation extends BaseParams {
  355. latitude: number; // 纬度,浮点数,范围为90 ~ -90
  356. longitude: number; // 经度,浮点数,范围为180 ~ -180。
  357. name: string; // 位置名
  358. address: string; // 地址详情说明
  359. scale: number; // 地图缩放级别,整形值,范围从1~28。默认为最大
  360. infoUrl: string; // 在查看位置界面底部显示的超链接,可点击跳转
  361. }
  362. /**
  363. * 使用微信内置地图查看位置接口
  364. */
  365. function openLocation(params: IopenLocation): void;
  366. interface IgetLocation extends BaseParams {
  367. type: "wgs84" | "gcj02"; // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  368. success(res: {
  369. latitude: number; // 纬度,浮点数,范围为90 ~ -90
  370. longitude: number; // 经度,浮点数,范围为180 ~ -180。
  371. speed: number; // 速度,以米/每秒计
  372. accuracy: number; // 位置精度
  373. }): void;
  374. }
  375. /**
  376. * 获取地理位置接口
  377. */
  378. function getLocation(params: IgetLocation): void;
  379. /*=============================地理位置================================*/
  380. /*=============================摇一摇周边================================*/
  381. interface IstartSearchBeacons extends BaseParams {
  382. ticket: string; // 摇周边的业务ticket, 系统自动添加在摇出来的页面链接后面
  383. // 开启查找完成后的回调函数
  384. complete(argv: any): void;
  385. }
  386. /**
  387. * 开启查找周边ibeacon设备接口
  388. * 备注:如需接入摇一摇周边功能,请参考:申请开通摇一摇周边
  389. */
  390. function startSearchBeacons(params: IstartSearchBeacons): void;
  391. interface IstopSearchBeacons extends BaseParams {
  392. // 关闭查找完成后的回调函数
  393. complete(res: any): void;
  394. }
  395. /**
  396. * 关闭查找周边ibeacon设备接口
  397. */
  398. function stopSearchBeacons(params: IstopSearchBeacons): void;
  399. interface IonSearchBeacons extends BaseParams {
  400. // 回调函数,可以数组形式取得该商家注册的在周边的相关设备列表
  401. complete(argv: any): void;
  402. }
  403. /**
  404. * 监听周边ibeacon设备接口
  405. */
  406. function onSearchBeacons(params: IonSearchBeacons): void;
  407. /*=============================摇一摇周边================================*/
  408. /*=============================界面操作================================*/
  409. /**
  410. * 隐藏右上角菜单接口
  411. */
  412. function hideOptionMenu(): void;
  413. /**
  414. * 显示右上角菜单接口
  415. */
  416. function showOptionMenu(): void;
  417. /**
  418. * 关闭当前网页窗口接口
  419. */
  420. function closeWindow(): void;
  421. interface IhideMenuItems extends BaseParams {
  422. menuList: Array<menuProtected | menuShare>; // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
  423. }
  424. /**
  425. * 批量隐藏功能按钮接口
  426. */
  427. function hideMenuItems(params: IhideMenuItems): void;
  428. interface IshowMenuItems extends BaseParams {
  429. menuList: menuList; // 要显示的菜单项,所有menu项见附录3
  430. }
  431. /**
  432. * 批量显示功能按钮接口
  433. */
  434. function showMenuItems(params: IshowMenuItems): void;
  435. /**
  436. * 隐藏所有非基础按钮接口
  437. * “基本类”按钮详见附录3
  438. */
  439. function hideAllNonBaseMenuItem(): void;
  440. /**
  441. * 显示所有功能按钮接口
  442. */
  443. function showAllNonBaseMenuItem(): void;
  444. /*=============================界面操作================================*/
  445. /*=============================微信扫一扫================================*/
  446. type scanType = "qrCode" | "barCode";
  447. interface IscanQRCode extends BaseParams {
  448. needResult: 0 | 1; // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  449. scanType: scanType[]; // 可以指定扫二维码还是一维码,默认二者都有
  450. // 当needResult 为 1 时,扫码返回的结果
  451. success(res: { resultStr: string }): void;
  452. }
  453. /**
  454. * 调起微信扫一扫接口
  455. */
  456. function scanQRCode(params: IscanQRCode): void;
  457. /*=============================微信扫一扫================================*/
  458. /*=============================微信小店================================*/
  459. interface IopenProductSpecificView extends BaseParams {
  460. productId: string; // 商品id
  461. viewType: "0" | "1" | "2"; // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页
  462. }
  463. /**
  464. * 跳转微信商品页接口
  465. */
  466. function openProductSpecificView(params: IopenProductSpecificView): void;
  467. /*=============================微信卡券================================*/
  468. interface IchooseCard extends BaseParams {
  469. shopId: string; // 门店Id
  470. cardType: string; // 卡券类型
  471. cardId: string; // 卡券Id
  472. timestamp: number; // 卡券签名时间戳
  473. nonceStr: string; // 卡券签名随机串
  474. signType: string; // 签名方式,默认'SHA1'
  475. cardSign: string; // 卡券签名
  476. success(res: { cardList: string[] }): void;
  477. }
  478. /**
  479. * 拉取适用卡券列表并获取用户选择信息
  480. */
  481. function chooseCard(params: IchooseCard): void;
  482. interface IaddCard extends BaseParams {
  483. cardList: Array<{
  484. cardId: string;
  485. cardExt: string;
  486. }>; // 需要添加的卡券列表
  487. success(res: { cardList: string[] }): void;
  488. }
  489. /**
  490. * 批量添加卡券接口
  491. */
  492. function addCard(): void;
  493. interface IopenCard extends BaseParams {
  494. cardList: Array<{
  495. cardId: string;
  496. code: string;
  497. }>; // 需要打开的卡券列表
  498. }
  499. /**
  500. * 查看微信卡包中的卡券接口
  501. */
  502. function openCard(params: IopenCard): void;
  503. interface IconsumeAndShareCard extends BaseParams {
  504. cardId: string;
  505. code: string;
  506. }
  507. /**
  508. * 核销后再次赠送卡券接口
  509. */
  510. function consumeAndShareCard(params: IconsumeAndShareCard): void;
  511. /*=============================微信卡券================================*/
  512. /*=============================微信支付================================*/
  513. interface IchooseWXPay extends BaseParams {
  514. timestamp: number; // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  515. nonceStr: string; // 支付签名随机串,不长于 32 位
  516. package: string; // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
  517. signType: string; // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  518. paySign: string; // 支付签名
  519. // 支付成功后的回调函数
  520. success(res: any): void;
  521. }
  522. /**
  523. * 发起一个微信支付请求
  524. */
  525. function chooseWXPay(params: IchooseWXPay): void;
  526. /*=============================微信支付================================*/
  527. /*=============================微信小程序==============================*/
  528. interface miniProgramMethodsParams extends BaseParams {
  529. url: string;
  530. }
  531. interface miniProgramMethods {
  532. navigateTo(params: miniProgramMethodsParams): void;
  533. navigateBack(params: miniProgramMethodsParams): void;
  534. switchTab(params: miniProgramMethodsParams): void;
  535. reLaunch(params: miniProgramMethodsParams): void;
  536. redirectTo(params: miniProgramMethodsParams): void;
  537. postMessage(params: { data: any }): void;
  538. getEnv(fn: (res: any) => void): void;
  539. }
  540. const miniProgram: miniProgramMethods;
  541. /*=============================微信小程序==============================*/
  542. }
  543. declare function wx(): void;
  544. /*=============================微信内全局变量==============================*/
  545. declare global {
  546. interface Window {
  547. WeixinJSBridge: any;
  548. __wxjs_environment: any;
  549. }
  550. const WeixinJSBridge: any;
  551. }
  552. export default wx;