wx.d.ts 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. // Type definitions for non-npm package wx-js-sdk 1.4
  2. // Project: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
  3. // Definitions by: Bian Zhongjie <https://github.com/agasbzj>
  4. // Ming Huang <https://github.com/forzoom>
  5. // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
  6. declare namespace WeixinJsSdk {
  7. /** **************************************************************************
  8. * Type definations
  9. ****************************************************************************/
  10. type JSApis =
  11. | "onMenuShareTimeline"
  12. | "onMenuShareAppMessage"
  13. | "onMenuShareQQ"
  14. | "onMenuShareWeibo"
  15. | "onMenuShareQZone"
  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. | "checkJsApi"
  47. | "onRecordEnd"
  48. | "openWXDeviceLib"
  49. | "closeWXDeviceLib"
  50. | "configWXDeviceWiFi"
  51. | "getWXDeviceInfos"
  52. | "sendDataToWXDevice"
  53. | "startScanWXDevice"
  54. | "stopScanWXDevice"
  55. | "connectWXDevice"
  56. | "disconnectWXDevice"
  57. | "getWXDeviceTicket"
  58. | "WeixinJSBridgeReady"
  59. | "onWXDeviceBindStateChange"
  60. | "onWXDeviceStateChange"
  61. | "onScanWXDeviceResult"
  62. | "onReceiveDataFromWXDevice"
  63. | "onWXDeviceBluetoothStateChange";
  64. type Menus =
  65. | "menuItem:exposeArticle" // 举报
  66. | "menuItem:setFont" // 调整字体
  67. | "menuItem:dayMode" // 日间模式
  68. | "menuItem:nightMode" // 夜间模式
  69. | "menuItem:refresh" // 刷新
  70. | "menuItem:profile" // 查看公众号(已添加)
  71. | "menuItem:addContact" // 查看公众号(未添加)
  72. | "menuItem:share:appMessage" // 发送给朋友
  73. | "menuItem:share:timeline" // 分享到朋友圈
  74. | "menuItem:share:qq" // 分享到 QQ
  75. | "menuItem:share:weiboApp" // 分享到 Weibo
  76. | "menuItem:favorite" // 收藏
  77. | "menuItem:share:facebook" // 分享到 Facebook
  78. | "menuItem:share:QZone" // 分享到 QQ 空间
  79. | "menuItem:editTag" // 编辑标签
  80. | "menuItem:delete" // 删除
  81. | "menuItem:copyUrl" // 复制链接
  82. | "menuItem:originPage" // 原网页
  83. | "menuItem:readMode" // 阅读模式
  84. | "menuItem:openWithQQBrowser" // 在QQ浏览器中打开
  85. | "menuItem:openWithSafari" // 在Safari中打开
  86. | "menuItem:share:email" // 邮件
  87. | "menuItem:share:brand"; // 一些特殊公众号
  88. type scanTypes =
  89. | "qrCode" // 二维码
  90. | "barCode"; // 一维码
  91. type ImageSize = "original" | "compressed";
  92. type SourceType = "album" | "camera";
  93. /** **************************************************************************
  94. * Interface definations
  95. ****************************************************************************/
  96. interface ConfigOptions {
  97. /**
  98. * 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,
  99. * 可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  100. */
  101. debug?: boolean;
  102. /**
  103. * 公众号的唯一标识
  104. */
  105. appId: string;
  106. /**
  107. * 生成签名的时间戳
  108. */
  109. timestamp: string | number;
  110. /**
  111. * 生成签名的随机串
  112. */
  113. nonceStr: string;
  114. /**
  115. * 签名
  116. */
  117. signature: string;
  118. /**
  119. * 需要使用的JS接口列表
  120. */
  121. jsApiList: JSApis[];
  122. /* beta */
  123. beta: boolean;
  124. [x: string]: any;
  125. }
  126. /**
  127. * 所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,
  128. * 除了每个接口本身需要传的参数之外,还有以下通用参数
  129. */
  130. interface Callbacks {
  131. /**
  132. * 接口调用成功时执行的回调函数。
  133. */
  134. success?: (res: any) => void;
  135. /**
  136. * 接口调用失败时执行的回调函数。
  137. */
  138. fail?: (res: any) => void;
  139. /**
  140. * 接口调用完成时执行的回调函数,无论成功或失败都会执行。
  141. */
  142. complete?: (res: any) => void;
  143. /**
  144. * 用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
  145. */
  146. cancel?: (res: any) => void;
  147. }
  148. interface MenuCallbacks extends Callbacks {
  149. /**
  150. * 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
  151. */
  152. trigger?: (res: any) => void;
  153. }
  154. interface CheckJsApiOptions extends Callbacks {
  155. /**
  156. * 需要检测的JS接口列表
  157. */
  158. jsApiList: JSApis[];
  159. }
  160. interface OnMenuShareTimelineOptions extends MenuCallbacks {
  161. /**
  162. * 分享标题
  163. */
  164. title: string;
  165. /**
  166. * 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  167. */
  168. link: string;
  169. /**
  170. * 分享图标
  171. */
  172. imgUrl?: string;
  173. }
  174. interface OnMenuShareAppMessageOptions extends OnMenuShareTimelineOptions {
  175. /**
  176. * 分享描述
  177. */
  178. desc?: string;
  179. /**
  180. * 分享类型,music、video或link,不填默认为link
  181. */
  182. type?: "music" | "video" | "link";
  183. /**
  184. * 如果type是music或video,则要提供数据链接,默认为空
  185. */
  186. dataUrl?: string;
  187. }
  188. interface OnMenuShareQQ extends OnMenuShareTimelineOptions {
  189. /**
  190. * 分享描述
  191. */
  192. desc?: string;
  193. }
  194. interface OnMenuShareWeibo extends OnMenuShareTimelineOptions {
  195. /**
  196. * 分享描述
  197. */
  198. desc?: string;
  199. }
  200. interface OnMenuShareQZone extends OnMenuShareTimelineOptions {
  201. /**
  202. * 分享描述
  203. */
  204. desc?: string;
  205. }
  206. interface ChooseImageOptions extends Callbacks {
  207. /**
  208. * 一次可选择图片数量
  209. *
  210. * 默认为 9
  211. */
  212. count?: number;
  213. /**
  214. * 可以指定是原图还是压缩图,默认二者都有
  215. */
  216. sizeType?: ImageSize[];
  217. /**
  218. * 可以指定来源是相册还是相机,默认二者都有
  219. */
  220. sourceType?: SourceType[];
  221. }
  222. interface PreviewImageOptions extends Callbacks {
  223. /**
  224. * 当前显示图片的 http 链接
  225. */
  226. current: string;
  227. /**
  228. * 需要预览的图片 http 链接列表
  229. */
  230. urls: string[];
  231. }
  232. interface UploadImageOptions extends Callbacks {
  233. /**
  234. * 需要上传的图片的本地ID,由chooseImage接口获得
  235. */
  236. localId: string;
  237. /**
  238. * 显示进度提示
  239. */
  240. isShowProgressTips?: boolean;
  241. }
  242. interface DownloadImageOptions extends Callbacks {
  243. /**
  244. * 需要下载的图片的服务器端ID,由uploadImage接口获得
  245. */
  246. serverId: string;
  247. /**
  248. * 显示进度提示
  249. */
  250. isShowProgressTips?: boolean;
  251. }
  252. interface GetLocalImgDataOptions extends Callbacks {
  253. /**
  254. * 图片的localID
  255. */
  256. localId: string;
  257. }
  258. interface LocalVoiceOptions extends Callbacks {
  259. /**
  260. * 本地ID,由 stopRecord 接口获得
  261. */
  262. localId: string;
  263. }
  264. interface UploadVoiceOptions extends LocalVoiceOptions {
  265. /**
  266. * 显示进度提示
  267. */
  268. isShowProgressTips?: boolean;
  269. }
  270. interface DownloadVoiceOptions extends Callbacks {
  271. /**
  272. * 需要下载的音频的服务器端ID,由uploadVoice接口获得
  273. */
  274. serverId: string;
  275. /**
  276. * 显示进度提示
  277. */
  278. isShowProgressTips?: boolean;
  279. }
  280. interface OpenLocationOptions extends Callbacks {
  281. /**
  282. * 纬度,浮点数,范围为90 ~ -90
  283. */
  284. latitude: number;
  285. /**
  286. * 经度,浮点数,范围为180 ~ -180。
  287. */
  288. longitude: number;
  289. /**
  290. * 位置名
  291. */
  292. name: string;
  293. /**
  294. * 地址详情说明
  295. */
  296. address: string;
  297. /**
  298. * 地图缩放级别,整形值,范围从1~28。默认为最大
  299. */
  300. scale?: number;
  301. /**
  302. * 在查看位置界面底部显示的超链接,可点击跳转
  303. */
  304. infoUrl?: string;
  305. }
  306. interface GetLocationOptions extends Callbacks {
  307. /**
  308. * 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  309. */
  310. type: "wgs84" | "gcj02";
  311. }
  312. interface StartSearchBeacons {
  313. /**
  314. * 摇周边的业务ticket, 系统自动添加在摇出来的页面链接后面
  315. */
  316. ticket: string;
  317. }
  318. interface MenuOptions {
  319. menuList: Menus[];
  320. }
  321. interface ScanQRCodeOptions extends Callbacks {
  322. /**
  323. * 默认为0,扫描结果由微信处理,1则直接返回扫描结果
  324. */
  325. needResult?: 0 | 1;
  326. /**
  327. * 可以指定扫二维码还是一维码,默认二者都有
  328. */
  329. scanType?: scanTypes[];
  330. }
  331. interface OpenProductSpecificViewOptions {
  332. /**
  333. * 商品id
  334. */
  335. productId: string;
  336. /**
  337. * 0.默认值,普通商品详情页
  338. * 1.扫一扫商品详情页
  339. * 2.小店商品详情页
  340. */
  341. viewType: 0 | 1 | 2;
  342. }
  343. interface ChooseCardOptions extends Callbacks {
  344. /**
  345. * 门店Id
  346. */
  347. shopId?: string;
  348. /**
  349. * 卡券类型
  350. */
  351. cardType?: string;
  352. /**
  353. * 卡券Id
  354. */
  355. cardId?: string;
  356. /**
  357. * 卡券签名时间戳
  358. */
  359. timestamp: number;
  360. /**
  361. * 卡券签名随机串
  362. */
  363. nonceStr: string;
  364. /**
  365. * 签名方式,默认'SHA1'
  366. */
  367. signType: "SHA1";
  368. /**
  369. * 卡券签名
  370. */
  371. cardSign: string;
  372. }
  373. interface AddCard {
  374. cardId: string;
  375. cardExt: string;
  376. }
  377. interface AddCardOptions extends Callbacks {
  378. cardList: AddCard[];
  379. }
  380. interface OpenCard {
  381. cardId: string;
  382. code: string;
  383. }
  384. interface OpenCardOptions extends Callbacks {
  385. cardList: OpenCard[];
  386. }
  387. interface ChooseWXPayOptions extends Callbacks {
  388. /**
  389. * 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。
  390. * 但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  391. */
  392. timestamp: string;
  393. /**
  394. * 支付签名随机串,不长于 32 位
  395. */
  396. nonceStr: string;
  397. /**
  398. * 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
  399. */
  400. package: string;
  401. /**
  402. * 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  403. */
  404. signType: "SHA1" | "MD5";
  405. /**
  406. * 支付签名
  407. */
  408. paySign: string;
  409. }
  410. /** **************************************************************************
  411. * 配置方法
  412. ****************************************************************************/
  413. /**
  414. * 注入权限验证配置
  415. * 所有需要使用 JS-SDK 的页面必须先注入配置信息,否则将无法调用。
  416. * (同一个 url 仅需调用一次,对于变化 url 的 SPA 的 web app 可在每次url变化时进行调用,
  417. * 目前 Android 微信客户端不支持 pushState 的 H5 新特性,
  418. * 所以使用 pushState 来实现 web app 的页面会导致签名失败,
  419. * 此问题会在 Android6.2中修复。)
  420. */
  421. function config(options: ConfigOptions): void;
  422. /**
  423. * 处理成功验证
  424. *
  425. * config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
  426. * config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
  427. * 则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,
  428. * 则可以直接调用,不需要放在ready函数中。
  429. */
  430. function ready(callback: () => void): void;
  431. /**
  432. * 处理失败验证
  433. *
  434. * config信息验证失败会执行error函数,如签名过期导致验证失败,
  435. * 具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,
  436. * 对于SPA可以在这里更新签名。
  437. */
  438. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  439. function error(callback: (res: any) => void): void;
  440. /**
  441. * 判断当前客户端版本是否支持指定JS接口
  442. *
  443. * 备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,
  444. * 第一期开放的接口均可不使用checkJsApi来检测。
  445. */
  446. function checkJsApi(options: CheckJsApiOptions): void;
  447. /** **************************************************************************
  448. * 分享接口
  449. ****************************************************************************/
  450. /**
  451. * 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
  452. */
  453. function onMenuShareTimeline(options: OnMenuShareTimelineOptions): void;
  454. /**
  455. * 获取“分享给朋友”按钮点击状态及自定义分享内容接口
  456. */
  457. function onMenuShareAppMessage(options: OnMenuShareAppMessageOptions): void;
  458. /**
  459. * 获取“分享到QQ”按钮点击状态及自定义分享内容接口
  460. */
  461. function onMenuShareQQ(options: OnMenuShareQQ): void;
  462. /**
  463. * 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
  464. */
  465. function onMenuShareWeibo(options: OnMenuShareWeibo): void;
  466. /**
  467. * 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口
  468. */
  469. function onMenuShareQZone(options: OnMenuShareQZone): void;
  470. /** **************************************************************************
  471. * 图像接口
  472. ****************************************************************************/
  473. /**
  474. * 拍照或从手机相册中选图接口
  475. */
  476. function chooseImage(options: ChooseImageOptions): void;
  477. /**
  478. * 预览图片接口
  479. */
  480. function previewImage(options: PreviewImageOptions): void;
  481. /**
  482. * 上传图片接口
  483. *
  484. * 备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id。
  485. */
  486. function uploadImage(options: UploadImageOptions): void;
  487. /**
  488. * 下载图片接口
  489. */
  490. function downloadImage(options: DownloadImageOptions): void;
  491. /**
  492. * 获取本地图片接口
  493. */
  494. function getLocalImgData(options: GetLocalImgDataOptions): void;
  495. /** **************************************************************************
  496. * 音频接口
  497. ****************************************************************************/
  498. /**
  499. * 开始录音接口
  500. */
  501. function startRecord(config: {
  502. complete: (data: { errMsg: string }) => void;
  503. }): void;
  504. /**
  505. * 停止录音接口
  506. */
  507. function stopRecord(options: Callbacks): void;
  508. /**
  509. * 监听录音自动停止接口
  510. */
  511. function onVoiceRecordEnd(options: Callbacks): void;
  512. /**
  513. * 播放语音接口
  514. */
  515. function playVoice(options: LocalVoiceOptions): void;
  516. /**
  517. * 暂停播放接口
  518. */
  519. function pauseVoice(options: LocalVoiceOptions): void;
  520. /**
  521. * 停止播放接口
  522. */
  523. function stopVoice(options: LocalVoiceOptions): void;
  524. /**
  525. * 监听语音播放完毕接口
  526. */
  527. function onVoicePlayEnd(options: Callbacks): void;
  528. /**
  529. * 上传语音接口
  530. */
  531. function uploadVoice(options: UploadVoiceOptions): void;
  532. /**
  533. * 下载语音接口
  534. */
  535. function downloadVoice(options: DownloadVoiceOptions): void;
  536. /** **************************************************************************
  537. * 智能接口
  538. ****************************************************************************/
  539. /**
  540. * 识别音频并返回识别结果接口
  541. */
  542. function translateVoice(options: UploadVoiceOptions): void;
  543. /** **************************************************************************
  544. * 设备信息
  545. ****************************************************************************/
  546. /**
  547. * 获取网络状态接口
  548. */
  549. function getNetworkType(options: Callbacks): void;
  550. /** **************************************************************************
  551. * 地理信息
  552. ****************************************************************************/
  553. /**
  554. * 使用微信内置地图查看位置接口
  555. */
  556. function openLocation(options: OpenLocationOptions): void;
  557. /**
  558. * 获取地理位置接口
  559. */
  560. function getLocation(options: GetLocationOptions): void;
  561. /** **************************************************************************
  562. * 摇一摇周边
  563. ****************************************************************************/
  564. /**
  565. * 开启查找周边ibeacon设备接口
  566. */
  567. function startSearchBeacons(options: StartSearchBeacons): void;
  568. /**
  569. * 关闭查找周边ibeacon设备接口
  570. */
  571. function stopSearchBeacons(options: Callbacks): void;
  572. /**
  573. * 监听周边ibeacon设备接口
  574. *
  575. * 备注:上述摇一摇周边接口使用注意事项及更多返回结果说明,请参考:摇一摇周边获取设备信息
  576. */
  577. function onSearchBeacons(options: Callbacks): void;
  578. /** **************************************************************************
  579. * 界面操作
  580. ****************************************************************************/
  581. /**
  582. * 关闭当前网页窗口接口
  583. */
  584. function closeWindow(): void;
  585. /**
  586. * 批量隐藏功能按钮接口
  587. */
  588. function hideMenuItems(options: MenuOptions): void;
  589. /**
  590. * 批量显示功能按钮接口
  591. */
  592. function showMenuItems(options: MenuOptions): void;
  593. /**
  594. * 隐藏所有非基础按钮接口
  595. */
  596. function hideAllNonBaseMenuItem(): void;
  597. /**
  598. * 显示所有功能按钮接口
  599. */
  600. function showAllNonBaseMenuItem(): void;
  601. /** **************************************************************************
  602. * 微信扫一扫
  603. ****************************************************************************/
  604. /**
  605. * 调起微信扫一扫接口
  606. */
  607. function scanQRCode(options: ScanQRCodeOptions): void;
  608. /** **************************************************************************
  609. * 微信小店
  610. ****************************************************************************/
  611. /**
  612. * 跳转微信商品页接口
  613. */
  614. function openProductSpecificView(
  615. options: OpenProductSpecificViewOptions
  616. ): void;
  617. /** **************************************************************************
  618. * 微信卡券
  619. ****************************************************************************/
  620. /**
  621. * 拉取适用卡券列表并获取用户选择信息
  622. */
  623. function chooseCard(options: ChooseCardOptions): void;
  624. /**
  625. * 批量添加卡券接口
  626. */
  627. function addCard(options: AddCardOptions): void;
  628. /**
  629. * 查看微信卡包中的卡券接口
  630. */
  631. function openCard(options: OpenCardOptions): void;
  632. /** **************************************************************************
  633. * 微信支付
  634. ****************************************************************************/
  635. /**
  636. * 发起一个微信支付请求
  637. */
  638. function chooseWXPay(options: ChooseWXPayOptions): void;
  639. function showOptionMenu(): void;
  640. function hideOptionMenu(): void;
  641. }
  642. declare module "weixin-js-sdk" {
  643. export default WeixinJsSdk;
  644. }