jweixin.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  1. !function (e, n) {
  2. 'object' === typeof exports && 'object' === typeof module ? module.exports = n(e) : 'function' === typeof define && (define.amd || define.cmd) ? define(function () {
  3. return n(e)
  4. }) : n(e, !0)
  5. }(window, function (o, e) {
  6. function c(n, e, i) {
  7. o.WeixinJSBridge ? WeixinJSBridge.invoke(n, r(e), function (e) {
  8. a(n, e, i)
  9. }) : d(n, i)
  10. }
  11. function i(n, i, t) {
  12. o.WeixinJSBridge ? WeixinJSBridge.on(n, function (e) {
  13. t && t.trigger && t.trigger(e), a(n, e, i)
  14. }) : d(n, t || i)
  15. }
  16. function r(e) {
  17. return (e = e || {}).appId = M.appId, e.verifyAppId = M.appId, e.verifySignType = 'sha1', e.verifyTimestamp = M.timestamp + '', e.verifyNonceStr = M.nonceStr, e.verifySignature = M.signature, e
  18. }
  19. function n(e) {
  20. return {
  21. timeStamp: e.timestamp + '',
  22. nonceStr: e.nonceStr,
  23. package: e.package,
  24. paySign: e.paySign,
  25. signType: e.signType || 'SHA1'
  26. }
  27. }
  28. function a(e, n, i) {
  29. 'openEnterpriseChat' == e && (n.errCode = n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail;
  30. let t = n.errMsg;
  31. t || (t = n.err_msg, delete n.err_msg, t = function (e, n) {
  32. let i = e, t = f[i];
  33. t && (i = t);
  34. let o = 'ok';
  35. if (n) {
  36. let r = n.indexOf(':');
  37. 'confirm' == (o = n.substring(r + 1)) && (o = 'ok'), 'failed' == o && (o = 'fail'), -1 != o.indexOf('failed_') && (o = o.substring(7)), -1 != o.indexOf('fail_') && (o = o.substring(5)), 'access denied' != (o = (o = o.replace(/_/g, ' ')).toLowerCase()) && 'no permission to execute' != o || (o = 'permission denied'), 'config' == i && 'function not exist' == o && (o = 'ok'), '' == o && (o = 'fail')
  38. }
  39. return n = i + ':' + o
  40. }(e, t), n.errMsg = t), (i = i || {})._complete && (i._complete(n), delete i._complete), t = n.errMsg || '', M.debug && !i.isInnerInvoke && alert(JSON.stringify(n));
  41. let o = t.indexOf(':');
  42. switch (t.substring(o + 1)) {
  43. case'ok':
  44. i.success && i.success(n);
  45. break;
  46. case'cancel':
  47. i.cancel && i.cancel(n);
  48. break;
  49. default:
  50. i.fail && i.fail(n)
  51. }
  52. i.complete && i.complete(n)
  53. }
  54. function s(e) {
  55. if (e) {
  56. for (let n = 0, i = e.length; n < i; ++n) {
  57. let t = e[n], o = p[t];
  58. o && (e[n] = o)
  59. }
  60. return e
  61. }
  62. }
  63. function d(e, n) {
  64. if (!(!M.debug || n && n.isInnerInvoke)) {
  65. let i = f[e];
  66. i && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || '')
  67. }
  68. }
  69. function l() {
  70. return (new Date).getTime()
  71. }
  72. function u(e) {
  73. I && (o.WeixinJSBridge ? e() : t.addEventListener && t.addEventListener('WeixinJSBridgeReady', e, !1))
  74. }
  75. if (!o.jWeixin) {
  76. var p = {
  77. config: 'preVerifyJSAPI',
  78. onMenuShareTimeline: 'menu:share:timeline',
  79. onMenuShareAppMessage: 'menu:share:appmessage',
  80. onMenuShareQQ: 'menu:share:qq',
  81. onMenuShareWeibo: 'menu:share:weiboApp',
  82. onMenuShareQZone: 'menu:share:QZone',
  83. previewImage: 'imagePreview',
  84. getLocation: 'geoLocation',
  85. openProductSpecificView: 'openProductViewWithPid',
  86. addCard: 'batchAddCard',
  87. openCard: 'batchViewCard',
  88. chooseWXPay: 'getBrandWCPayRequest',
  89. openEnterpriseRedPacket: 'getRecevieBizHongBaoRequest',
  90. startSearchBeacons: 'startMonitoringBeacons',
  91. stopSearchBeacons: 'stopMonitoringBeacons',
  92. onSearchBeacons: 'onBeaconsInRange',
  93. consumeAndShareCard: 'consumedShareCard',
  94. openAddress: 'editAddress'
  95. }, f = function () {
  96. let e = {};
  97. for (let n in p) e[p[n]] = n;
  98. return e
  99. }(), t = o.document, m = t.title, g = navigator.userAgent.toLowerCase(), h = navigator.platform.toLowerCase(),
  100. v = !(!h.match('mac') && !h.match('win')), S = -1 != g.indexOf('wxdebugger'),
  101. I = -1 != g.indexOf('micromessenger'), y = -1 != g.indexOf('android'),
  102. _ = -1 != g.indexOf('iphone') || -1 != g.indexOf('ipad'),
  103. w = (O = g.match(/micromessenger\/(\d+\.\d+\.\d+)/) || g.match(/micromessenger\/(\d+\.\d+)/)) ? O[1] : '',
  104. k = {initStartTime: l(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0}, T = {
  105. version: 1,
  106. appId: '',
  107. initTime: 0,
  108. preVerifyTime: 0,
  109. networkType: '',
  110. isPreVerifyOk: 1,
  111. systemType: _ ? 1 : y ? 2 : -1,
  112. clientVersion: w,
  113. url: encodeURIComponent(location.href)
  114. }, M = {}, P = {_completes: []}, x = {state: 0, data: {}};
  115. u(function () {
  116. k.initEndTime = l()
  117. });
  118. var A = !1, V = [], C = {
  119. config: function (e) {
  120. d('config', M = e);
  121. let t = !1 !== M.check;
  122. u(function () {
  123. if (t) c(p.config, {verifyJsApiList: s(M.jsApiList)}, function () {
  124. P._complete = function (e) {
  125. k.preVerifyEndTime = l(), x.state = 1, x.data = e
  126. }, P.success = function (e) {
  127. T.isPreVerifyOk = 0
  128. }, P.fail = function (e) {
  129. P._fail ? P._fail(e) : x.state = -1
  130. };
  131. let t = P._completes;
  132. return t.push(function () {
  133. !function (e) {
  134. if (!(v || S || M.debug || w < '6.0.2' || T.systemType < 0)) {
  135. let i = new Image;
  136. T.appId = M.appId, T.initTime = k.initEndTime - k.initStartTime, T.preVerifyTime = k.preVerifyEndTime - k.preVerifyStartTime, C.getNetworkType({
  137. isInnerInvoke: !0,
  138. success: function (e) {
  139. T.networkType = e.networkType;
  140. let n = 'https://open.weixin.qq.com/sdk/report?v=' + T.version + '&o=' + T.isPreVerifyOk + '&s=' + T.systemType + '&c=' + T.clientVersion + '&a=' + T.appId + '&n=' + T.networkType + '&i=' + T.initTime + '&p=' + T.preVerifyTime + '&u=' + T.url;
  141. i.src = n
  142. }
  143. })
  144. }
  145. }()
  146. }), P.complete = function (e) {
  147. for (let n = 0, i = t.length; n < i; ++n) t[n]();
  148. P._completes = []
  149. }, P
  150. }()), k.preVerifyStartTime = l(); else {
  151. x.state = 1;
  152. for (let e = P._completes, n = 0, i = e.length; n < i; ++n) e[n]();
  153. P._completes = []
  154. }
  155. }), C.invoke || (C.invoke = function (e, n, i) {
  156. o.WeixinJSBridge && WeixinJSBridge.invoke(e, r(n), i)
  157. }, C.on = function (e, n) {
  158. o.WeixinJSBridge && WeixinJSBridge.on(e, n)
  159. })
  160. }, ready: function (e) {
  161. 0 != x.state ? e() : (P._completes.push(e), !I && M.debug && e())
  162. }, error: function (e) {
  163. w < '6.0.2' || (-1 == x.state ? e(x.data) : P._fail = e)
  164. }, checkJsApi: function (e) {
  165. c('checkJsApi', {jsApiList: s(e.jsApiList)}, (e._complete = function (e) {
  166. if (y) {
  167. let n = e.checkResult;
  168. n && (e.checkResult = JSON.parse(n))
  169. }
  170. e = function (e) {
  171. let n = e.checkResult;
  172. for (let i in n) {
  173. let t = f[i];
  174. t && (n[t] = n[i], delete n[i])
  175. }
  176. return e
  177. }(e)
  178. }, e))
  179. }, onMenuShareTimeline: function (e) {
  180. i(p.onMenuShareTimeline, {
  181. complete: function () {
  182. c('shareTimeline', {
  183. title: e.title || m,
  184. desc: e.title || m,
  185. img_url: e.imgUrl || '',
  186. link: e.link || location.href,
  187. type: e.type || 'link',
  188. data_url: e.dataUrl || ''
  189. }, e)
  190. }
  191. }, e)
  192. }, onMenuShareAppMessage: function (n) {
  193. i(p.onMenuShareAppMessage, {
  194. complete: function (e) {
  195. 'favorite' === e.scene ? c('sendAppMessage', {
  196. title: n.title || m,
  197. desc: n.desc || '',
  198. link: n.link || location.href,
  199. img_url: n.imgUrl || '',
  200. type: n.type || 'link',
  201. data_url: n.dataUrl || ''
  202. }) : c('sendAppMessage', {
  203. title: n.title || m,
  204. desc: n.desc || '',
  205. link: n.link || location.href,
  206. img_url: n.imgUrl || '',
  207. type: n.type || 'link',
  208. data_url: n.dataUrl || ''
  209. }, n)
  210. }
  211. }, n)
  212. }, onMenuShareQQ: function (e) {
  213. i(p.onMenuShareQQ, {
  214. complete: function () {
  215. c('shareQQ', {
  216. title: e.title || m,
  217. desc: e.desc || '',
  218. img_url: e.imgUrl || '',
  219. link: e.link || location.href
  220. }, e)
  221. }
  222. }, e)
  223. }, onMenuShareWeibo: function (e) {
  224. i(p.onMenuShareWeibo, {
  225. complete: function () {
  226. c('shareWeiboApp', {
  227. title: e.title || m,
  228. desc: e.desc || '',
  229. img_url: e.imgUrl || '',
  230. link: e.link || location.href
  231. }, e)
  232. }
  233. }, e)
  234. }, onMenuShareQZone: function (e) {
  235. i(p.onMenuShareQZone, {
  236. complete: function () {
  237. c('shareQZone', {
  238. title: e.title || m,
  239. desc: e.desc || '',
  240. img_url: e.imgUrl || '',
  241. link: e.link || location.href
  242. }, e)
  243. }
  244. }, e)
  245. }, updateTimelineShareData: function (e) {
  246. c('updateTimelineShareData', {title: e.title, link: e.link, imgUrl: e.imgUrl}, e)
  247. }, updateAppMessageShareData: function (e) {
  248. c('updateAppMessageShareData', {title: e.title, desc: e.desc, link: e.link, imgUrl: e.imgUrl}, e)
  249. }, startRecord: function (e) {
  250. c('startRecord', {}, e)
  251. }, stopRecord: function (e) {
  252. c('stopRecord', {}, e)
  253. }, onVoiceRecordEnd: function (e) {
  254. i('onVoiceRecordEnd', e)
  255. }, playVoice: function (e) {
  256. c('playVoice', {localId: e.localId}, e)
  257. }, pauseVoice: function (e) {
  258. c('pauseVoice', {localId: e.localId}, e)
  259. }, stopVoice: function (e) {
  260. c('stopVoice', {localId: e.localId}, e)
  261. }, onVoicePlayEnd: function (e) {
  262. i('onVoicePlayEnd', e)
  263. }, uploadVoice: function (e) {
  264. c('uploadVoice', {localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1}, e)
  265. }, downloadVoice: function (e) {
  266. c('downloadVoice', {serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1}, e)
  267. }, translateVoice: function (e) {
  268. c('translateVoice', {localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1}, e)
  269. }, chooseImage: function (e) {
  270. c('chooseImage', {
  271. scene: '1|2',
  272. count: e.count || 9,
  273. sizeType: e.sizeType || ['original', 'compressed'],
  274. sourceType: e.sourceType || ['album', 'camera']
  275. }, (e._complete = function (e) {
  276. if (y) {
  277. let n = e.localIds;
  278. try {
  279. n && (e.localIds = JSON.parse(n))
  280. } catch (e) {
  281. }
  282. }
  283. }, e))
  284. }, getLocation: function (e) {
  285. }, previewImage: function (e) {
  286. c(p.previewImage, {current: e.current, urls: e.urls}, e)
  287. }, uploadImage: function (e) {
  288. c('uploadImage', {localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1}, e)
  289. }, downloadImage: function (e) {
  290. c('downloadImage', {serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1}, e)
  291. }, getLocalImgData: function (e) {
  292. !1 === A ? (A = !0, c('getLocalImgData', {localId: e.localId}, (e._complete = function (e) {
  293. if (A = !1, 0 < V.length) {
  294. let n = V.shift();
  295. wx.getLocalImgData(n)
  296. }
  297. }, e))) : V.push(e)
  298. }, getNetworkType: function (e) {
  299. c('getNetworkType', {}, (e._complete = function (e) {
  300. e = function (e) {
  301. let n = e.errMsg;
  302. e.errMsg = 'getNetworkType:ok';
  303. let i = e.subtype;
  304. if (delete e.subtype, i) e.networkType = i; else {
  305. let t = n.indexOf(':'), o = n.substring(t + 1);
  306. switch (o) {
  307. case'wifi':
  308. case'edge':
  309. case'wwan':
  310. e.networkType = o;
  311. break;
  312. default:
  313. e.errMsg = 'getNetworkType:fail'
  314. }
  315. }
  316. return e
  317. }(e)
  318. }, e))
  319. }, openLocation: function (e) {
  320. c('openLocation', {
  321. latitude: e.latitude,
  322. longitude: e.longitude,
  323. name: e.name || '',
  324. address: e.address || '',
  325. scale: e.scale || 28,
  326. infoUrl: e.infoUrl || ''
  327. }, e)
  328. }, getLocation: function (e) {
  329. c(p.getLocation, {type: (e = e || {}).type || 'wgs84'}, (e._complete = function (e) {
  330. delete e.type
  331. }, e))
  332. }, hideOptionMenu: function (e) {
  333. c('hideOptionMenu', {}, e)
  334. }, showOptionMenu: function (e) {
  335. c('showOptionMenu', {}, e)
  336. }, closeWindow: function (e) {
  337. c('closeWindow', {}, e = e || {})
  338. }, hideMenuItems: function (e) {
  339. c('hideMenuItems', {menuList: e.menuList}, e)
  340. }, showMenuItems: function (e) {
  341. c('showMenuItems', {menuList: e.menuList}, e)
  342. }, hideAllNonBaseMenuItem: function (e) {
  343. c('hideAllNonBaseMenuItem', {}, e)
  344. }, showAllNonBaseMenuItem: function (e) {
  345. c('showAllNonBaseMenuItem', {}, e)
  346. }, scanQRCode: function (e) {
  347. c('scanQRCode', {
  348. needResult: (e = e || {}).needResult || 0,
  349. scanType: e.scanType || ['qrCode', 'barCode']
  350. }, (e._complete = function (e) {
  351. if (_) {
  352. let n = e.resultStr;
  353. if (n) {
  354. let i = JSON.parse(n);
  355. e.resultStr = i && i.scan_code && i.scan_code.scan_result
  356. }
  357. }
  358. }, e))
  359. }, openAddress: function (e) {
  360. c(p.openAddress, {}, (e._complete = function (e) {
  361. let n;
  362. (n = e).postalCode = n.addressPostalCode, delete n.addressPostalCode, n.provinceName = n.proviceFirstStageName, delete n.proviceFirstStageName, n.cityName = n.addressCitySecondStageName, delete n.addressCitySecondStageName, n.countryName = n.addressCountiesThirdStageName, delete n.addressCountiesThirdStageName, n.detailInfo = n.addressDetailInfo, delete n.addressDetailInfo, e = n
  363. }, e))
  364. }, openProductSpecificView: function (e) {
  365. c(p.openProductSpecificView, {pid: e.productId, view_type: e.viewType || 0, ext_info: e.extInfo}, e)
  366. }, addCard: function (e) {
  367. for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
  368. let r = n[t], a = {card_id: r.cardId, card_ext: r.cardExt};
  369. i.push(a)
  370. }
  371. c(p.addCard, {card_list: i}, (e._complete = function (e) {
  372. let n = e.card_list;
  373. if (n) {
  374. for (let i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
  375. let o = n[i];
  376. o.cardId = o.card_id, o.cardExt = o.card_ext, o.isSuccess = !!o.is_succ, delete o.card_id, delete o.card_ext, delete o.is_succ
  377. }
  378. e.cardList = n, delete e.card_list
  379. }
  380. }, e))
  381. }, chooseCard: function (e) {
  382. c('chooseCard', {
  383. app_id: M.appId,
  384. location_id: e.shopId || '',
  385. sign_type: e.signType || 'SHA1',
  386. card_id: e.cardId || '',
  387. card_type: e.cardType || '',
  388. card_sign: e.cardSign,
  389. time_stamp: e.timestamp + '',
  390. nonce_str: e.nonceStr
  391. }, (e._complete = function (e) {
  392. e.cardList = e.choose_card_info, delete e.choose_card_info
  393. }, e))
  394. }, openCard: function (e) {
  395. for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
  396. let r = n[t], a = {card_id: r.cardId, code: r.code};
  397. i.push(a)
  398. }
  399. c(p.openCard, {card_list: i}, e)
  400. }, consumeAndShareCard: function (e) {
  401. c(p.consumeAndShareCard, {consumedCardId: e.cardId, consumedCode: e.code}, e)
  402. }, chooseWXPay: function (e) {
  403. c(p.chooseWXPay, n(e), e)
  404. }, openEnterpriseRedPacket: function (e) {
  405. c(p.openEnterpriseRedPacket, n(e), e)
  406. }, startSearchBeacons: function (e) {
  407. c(p.startSearchBeacons, {ticket: e.ticket}, e)
  408. }, stopSearchBeacons: function (e) {
  409. c(p.stopSearchBeacons, {}, e)
  410. }, onSearchBeacons: function (e) {
  411. i(p.onSearchBeacons, e)
  412. }, openEnterpriseChat: function (e) {
  413. c('openEnterpriseChat', {useridlist: e.userIds, chatname: e.groupName}, e)
  414. }, launchMiniProgram: function (e) {
  415. c('launchMiniProgram', {
  416. targetAppId: e.targetAppId, path: function (e) {
  417. if ('string' === typeof e && 0 < e.length) {
  418. let n = e.split('?')[0], i = e.split('?')[1];
  419. return n += '.html', void 0 !== i ? n + '?' + i : n
  420. }
  421. }(e.path), envVersion: e.envVersion
  422. }, e)
  423. }, miniProgram: {
  424. navigateBack: function (e) {
  425. e = e || {}, u(function () {
  426. c('invokeMiniProgramAPI', {name: 'navigateBack', arg: {delta: e.delta || 1}}, e)
  427. })
  428. }, navigateTo: function (e) {
  429. u(function () {
  430. c('invokeMiniProgramAPI', {name: 'navigateTo', arg: {url: e.url}}, e)
  431. })
  432. }, redirectTo: function (e) {
  433. u(function () {
  434. c('invokeMiniProgramAPI', {name: 'redirectTo', arg: {url: e.url}}, e)
  435. })
  436. }, switchTab: function (e) {
  437. u(function () {
  438. c('invokeMiniProgramAPI', {name: 'switchTab', arg: {url: e.url}}, e)
  439. })
  440. }, reLaunch: function (e) {
  441. u(function () {
  442. c('invokeMiniProgramAPI', {name: 'reLaunch', arg: {url: e.url}}, e)
  443. })
  444. }, postMessage: function (e) {
  445. u(function () {
  446. c('invokeMiniProgramAPI', {name: 'postMessage', arg: e.data || {}}, e)
  447. })
  448. }, getEnv: function (e) {
  449. u(function () {
  450. e({miniprogram: 'miniprogram' === o.__wxjs_environment})
  451. })
  452. }
  453. }
  454. }, L = 1, B = {};
  455. return t.addEventListener('error', function (e) {
  456. if (!y) {
  457. let n = e.target, i = n.tagName, t = n.src;
  458. if (('IMG' == i || 'VIDEO' == i || 'AUDIO' == i || 'SOURCE' == i) && -1 != t.indexOf('wxlocalresource://')) {
  459. e.preventDefault(), e.stopPropagation();
  460. let o = n['wx-id'];
  461. if (o || (o = L++, n['wx-id'] = o), B[o]) return;
  462. B[o] = !0, wx.ready(function () {
  463. wx.getLocalImgData({
  464. localId: t, success: function (e) {
  465. n.src = e.localData
  466. }
  467. })
  468. })
  469. }
  470. }
  471. }, !0), t.addEventListener('load', function (e) {
  472. if (!y) {
  473. let n = e.target, i = n.tagName;
  474. if (n.src, 'IMG' == i || 'VIDEO' == i || 'AUDIO' == i || 'SOURCE' == i) {
  475. let t = n['wx-id'];
  476. t && (B[t] = !1)
  477. }
  478. }
  479. }, !0), e && (o.wx = o.jWeixin = C), C
  480. }
  481. let O
  482. });