wechat-utils-1.0.js.bak 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. /**
  2. * @author 何秀刚
  3. * @description wechat 工具类,依赖JQuery,如果引入此文件,自动绑定分享事件。
  4. * @version V.1.0
  5. */
  6. // 获取绑定微信JSSDK的配置参数
  7. var getConfigUrl = "//w.iamberry.com/watero/config/get";
  8. // JSSDK是否绑定成功
  9. var jssdkSuccess = true;
  10. //是否隐藏全局菜单
  11. if (window.hiddenAllWechatMenu == null) {
  12. window.hiddenAllWechatMenu = false;
  13. }
  14. // 分享信息全局变量
  15. window.wxFriend = null;
  16. if (window.repleFlag) {
  17. // 自定义
  18. window.wxFriend = window.repleWxData;
  19. } else {
  20. // 使用全局默认
  21. window.wxFriend = {
  22. "appId": "",
  23. "imgUrl":'//m.iamberry.com/common/goods/images/indexShare.jpg',
  24. "link":"//w.iamberry.com/watero/wechat/index.html",
  25. "desc":"Watero水时代商城,开启优雅生活",
  26. "title":"Watero水时代商城,好水,好茶,生活不将就!",
  27. "netError":"您的网络异常,请刷新重试!如多次刷新无效,请向我们反应 ~",
  28. "shareTimeSuccess":"这里是分享朋友圈后调用的文字",
  29. "shareTimeCancel":"这里是取消分享给朋友圈后调用的文字",
  30. "shareAppSuccess":"这里是分享好友后调用的文字",
  31. "shareAppCancel":"这里是取消分享给好友后调用的文字"
  32. };
  33. }
  34. // 微信共享地址数据
  35. window.wechatAddr = {
  36. "status":false, // 是否调用成功,true成功,false失败
  37. "statusMsg":"失败时信息",
  38. "detailInfo":"详细地址",
  39. "postalCode":"邮编",
  40. "userName":"收货人",
  41. "userTel":"收货人电话",
  42. "nationalCode":"收货地址国家码"
  43. };
  44. /** 引入JSSDK1.0基本组件,微信共享地址智能使用1.0版本,并且需要服务器返回参数支持 */
  45. //incoldeJSFile("//res.wx.qq.com/open/js/jweixin-1.0.0.js");
  46. /** 引入JSSDK1.1基本组件 ,支持摇一摇、微信共享地址 */
  47. incoldeJSFile("//res.wx.qq.com/open/js/jweixin-1.1.0.js");
  48. getConfig(); // 配置JSSDK组件
  49. /** 获取服务器JSSDK参数配置 */
  50. function getConfig(){
  51. $.ajax({
  52. type: 'get', url: getConfigUrl, data: {appid: "", url: location.href,"date":new Date().getTime()}, dataType: 'json', timeout: 10000, context: $('body'),
  53. success: function(data){setConfig(data);},
  54. error: function(xhr, type){
  55. getConfig();
  56. mui.alert('网络异常,请刷新重试,否则某些功能不能使用!')
  57. }
  58. });
  59. }
  60. /**配置JS-SDK*/
  61. function setConfig(config){
  62. wx.config({
  63. debug: false,
  64. appId: config.appId,
  65. timestamp: config.timestamp,
  66. nonceStr: config.nonceStr,
  67. signature: config.signature,
  68. jsApiList: [
  69. 'checkJsApi',
  70. 'onMenuShareTimeline',
  71. 'onMenuShareAppMessage',
  72. 'hideMenuItems',
  73. 'showMenuItems'
  74. ]
  75. });
  76. wx.ready(function(){ //JSSDK绑定成功
  77. wxReadySuccess();
  78. });
  79. wx.error(function(res){ // JSSDK绑定失败的方法
  80. wxReadyError();
  81. });
  82. }
  83. /** JSSDK绑定成功调用事件 */
  84. function wxReadySuccess() {
  85. window.jssdkSuccess = true;
  86. shareMessage();
  87. wx.getNetworkType({success: function (res) {}});
  88. if (window.hiddenAllWechatMenu) {
  89. wx.showMenuItems({
  90. menuList: [
  91. ] // 要显示的菜单项,所有menu项见附录3
  92. });
  93. wx.hideMenuItems({
  94. menuList: [
  95. "menuItem:copyUrl",
  96. "menuItem:openWithSafari",
  97. "menuItem:originPage",
  98. "menuItem:share:email",
  99. "menuItem:dayMode",
  100. "menuItem:setFont",
  101. "menuItem:nightMode",
  102. "menuItem:share:qq",
  103. "menuItem:dayMode",
  104. "menuItem:exposeArticle",
  105. "menuItem:nightMode",
  106. "menuItem:openWithQQBrowser",
  107. "menuItem:share:QZone",
  108. "menuItem:favorite",
  109. "menuItem:share:facebook",
  110. "menuItem:share:appMessage",
  111. "menuItem:share:timeline"
  112. ] // 要隐藏的菜单项,所有menu项见附录3
  113. });
  114. } else {
  115. wx.showMenuItems({
  116. menuList: [
  117. "menuItem:share:appMessage",
  118. "menuItem:share:timeline"
  119. ] // 要显示的菜单项,所有menu项见附录3
  120. });
  121. wx.hideMenuItems({
  122. menuList: [
  123. "menuItem:copyUrl",
  124. "menuItem:openWithSafari",
  125. "menuItem:originPage",
  126. "menuItem:share:email",
  127. "menuItem:dayMode",
  128. "menuItem:setFont",
  129. "menuItem:nightMode",
  130. "menuItem:share:qq",
  131. "menuItem:dayMode",
  132. "menuItem:exposeArticle",
  133. "menuItem:nightMode",
  134. "menuItem:openWithQQBrowser",
  135. "menuItem:share:QZone",
  136. "menuItem:favorite",
  137. "menuItem:share:facebook"
  138. ] // 要隐藏的菜单项,所有menu项见附录3
  139. });
  140. }
  141. }
  142. /** JSSDK 绑定失败调用方法 */
  143. function wxReadyError() {
  144. // alert(wxFriend.netError);
  145. }
  146. /** 分享时、分享后调用方法 */
  147. function shareMessage(title, message) {
  148. title = title || wxFriend.title;
  149. message = message || wxFriend.desc;
  150. wx.onMenuShareTimeline({ //分享到朋友圈,只有标题、图标,没有内容简介
  151. title: title, link: wxFriend.link, imgUrl: wxFriend.imgUrl,
  152. success: function () {
  153. if (wxFriend.shareAppSuccess != null && wxFriend.shareAppSuccess != "") {
  154. // alert(wxFriend.shareAppSuccess);
  155. }
  156. },
  157. cancel: function () {
  158. if (wxFriend.shareTimeCancel != null && wxFriend.shareTimeCancel != "") {
  159. // alert(wxFriend.shareTimeCancel);
  160. }
  161. }
  162. });
  163. wx.onMenuShareAppMessage({ // 分享给好友,有标题、内容简介、图标
  164. title: title, desc: message, link: wxFriend.link, imgUrl: wxFriend.imgUrl,
  165. success: function () {
  166. if (wxFriend.shareAppSuccess != null && wxFriend.shareAppSuccess != "") {
  167. // alert(wxFriend.shareAppSuccess);
  168. }
  169. },
  170. cancel: function () {
  171. if (wxFriend.shareTimeCancel != null && wxFriend.shareTimeCancel != "") {
  172. // alert(wxFriend.shareTimeCancel);
  173. }
  174. }
  175. });
  176. }
  177. /**
  178. * 微信支付
  179. * str:微信支付参数,字符串
  180. * paySuccessCallBack:微信支付成功后回调方法,此方法必须为全局时,方可以回调成功
  181. * payCancelCallBack:微信支付失败后回调方法,此方法必须为全局时,方可以回调成功
  182. */
  183. function wechatPay(str, paySuccessCallBack, payCancelCallBack) {
  184. if (typeof WeixinJSBridge == "undefined"){
  185. alert("非微信浏览器!无法发起微信支付请求!");
  186. return;
  187. }
  188. var obj = JSON.parse("{" + str + "}");
  189. WeixinJSBridge.invoke('getBrandWCPayRequest', obj, function(res) {
  190. if(res.err_msg=='get_brand_wcpay_request:ok'){
  191. paySuccessCallBack
  192. }else{
  193. payCancelCallBack
  194. }
  195. });
  196. }
  197. if (typeof WeixinJSBridge == "undefined"){
  198. if( document.addEventListener ){
  199. document.addEventListener('WeixinJSBridgeReady', wechatPay, false);
  200. }else if (document.attachEvent){
  201. document.attachEvent('WeixinJSBridgeReady', wechatPay);
  202. document.attachEvent('onWeixinJSBridgeReady', wechatPay);
  203. }
  204. }
  205. /** 发起微信共享地址Version 1.0 */
  206. function editAddrV0(config) {
  207. WeixinJSBridge.invoke('editAddress', {"appId" : config.appId, "scope" : "jsapi_address", "signType" : "SHA1", "addrSign" : config.addrSign, "timeStamp" : config.timestamp, "nonceStr" : config.nonceStr},
  208. function(res) {
  209. if ("edit_address:ok" == res.err_msg) {
  210. var address = res.proviceFirstStageName + "-" + res.addressCitySecondStageName + "-" + res.addressCountiesThirdStageName + "-" + res.addressDetailInfo;
  211. wechatAddr.status = true;
  212. wechatAddr.detailInfo = address;
  213. wechatAddr.postalCode = res.addressPostalCode;
  214. wechatAddr.userName = res.userName;
  215. wechatAddr.userTel = res.telNumber;
  216. return wechatAddr;
  217. } else if ("edit_address:fail" == res.err_msg) {// 没有选择
  218. wechatAddr.statusMsg = "您没有选择收货地址!";
  219. return wechatAddr;
  220. } else { // 参数过时,请刷新
  221. wechatAddr.statusMsg = "操作过时,请刷新重试!";
  222. return wechatAddr;
  223. }
  224. }
  225. );
  226. }
  227. /**
  228. * 发起微信共享地址Version 1.1<br>
  229. * {<br>
  230. * status : 状态,true:请求成功,false:请求失败<br>
  231. * errorInfo : 请求失败时的提示信息<br>
  232. * res: { 请求成功时的地址信息,失败为空<br>
  233. * userName : 收货人姓名。<br>
  234. * postalCode : 邮编。<br>
  235. * provinceName 国标收货地址第一级地址(省)。<br>
  236. * cityName : 国标收货地址第二级地址(市)。<br>
  237. * countryName : 国标收货地址第三级地址(区)。<br>
  238. * detailInfo : 详细收货地址信息。<br>
  239. * nationalCode : 收货地址国家码。<br>
  240. * telNumber : 收货人电话<br>
  241. * }
  242. * }
  243. */
  244. function editAddrV1(successCallback, errorCallback) {
  245. if (!window.jssdkSuccess) {
  246. mui.alert("错误啦 ~~ 请刷新重试!");
  247. return;
  248. }
  249. wx.openAddress({
  250. success: successCallback,
  251. cancel: errorCallback
  252. });
  253. }
  254. /** 动态引入wechat utils JavaScript */
  255. function incoldeJSFile(jsUrl) {
  256. var typeHand = document.getElementsByTagName('head').item(0);
  257. var typeScript= document.createElement("script");
  258. typeScript.type = "text/javascript";
  259. typeScript.src=jsUrl;
  260. typeHand.appendChild(typeScript);
  261. }