html5Utils.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import base from '@/config/baseUrl';
  2. import store from '@/store';
  3. import $http from '@/config/requestConfig'
  4. import {
  5. getLocation,
  6. setShare
  7. } from '@/plugins/wxJsSDK';
  8. /**
  9. * APP内嵌网页 -- 安卓IOS交互
  10. */
  11. export const appMutual = (name, query = null, errCallback) => {
  12. if (/android/i.test(navigator.userAgent)) {
  13. if (window.shangChengView) {
  14. if (typeof(query) == "object") {
  15. query = JSON.stringify(query);
  16. }
  17. window.shangChengView[name](query);
  18. } else {
  19. errCallback && errCallback();
  20. }
  21. } else if (/ios|iphone|ipod|pad/i.test(navigator.userAgent)) {
  22. if (window.webkit) {
  23. window.webkit.messageHandlers[name].postMessage(query)
  24. } else {
  25. errCallback && errCallback();
  26. }
  27. }
  28. };
  29. /**
  30. * 获取url中的参数
  31. */
  32. export const getUrlData = () => {
  33. var strs;
  34. var url = window.location.href; //获取url中"?"符后的字串
  35. var theRequest = new Object();
  36. if (url.indexOf("?") != -1) {
  37. url = url.substr(url.indexOf("?"));
  38. var str = url.substr(1);
  39. strs = str.split("&");
  40. for (var i = 0; i < strs.length; i++) {
  41. var index = strs[i].indexOf("=");
  42. theRequest[strs[i].slice(0, index)] = unescape(strs[i].slice(index + 1, strs[i].length));
  43. }
  44. }
  45. return theRequest;
  46. }
  47. //公众号微信支付
  48. export const wxPublicPay = (payInfo, callback) => {
  49. $http.get("api/pay/v1/pay_public_wx", {
  50. orderNo: payInfo.orderNo
  51. }).then(data => {
  52. let wxConfigObj = {
  53. appId: data.appId,
  54. timeStamp: data.timeStamp,
  55. nonceStr: data.nonceStr,
  56. package: data.package,
  57. signType: data.signType,
  58. paySign: data.sign
  59. };
  60. function onBridgeReady() {
  61. window.WeixinJSBridge.invoke("getBrandWCPayRequest", wxConfigObj, function(
  62. res
  63. ) {
  64. if (res.err_msg == "get_brand_wcpay_request:ok") {
  65. callback && callback(res);
  66. } else // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
  67. if (res.err_msg == "get_brand_wcpay_request:cancel") {
  68. // common.loadWarn('支付遇到问题,您取消了支付');
  69. } else
  70. if (res.err_msg == "get_brand_wcpay_request:fail") {
  71. // common.myConfirm('支付遇到问题,您可能需要重新登录', '', function () {
  72. // obj.wxLoginOAuth();
  73. // });
  74. }
  75. });
  76. }
  77. if (typeof window.WeixinJSBridge == "undefined") {
  78. if (document.addEventListener) {
  79. document.addEventListener("WeixinJSBridgeReady", onBridgeReady, false);
  80. } else if (document.attachEvent) {
  81. document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
  82. document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
  83. }
  84. } else {
  85. onBridgeReady();
  86. }
  87. });
  88. };
  89. // 浏览器判断
  90. // export const getBrowser = () => {
  91. // let ua = navigator.userAgent.toLowerCase();
  92. // if (ua.match(/MicroMessenger/i) == "micromessenger") {
  93. // return "微信";
  94. // }
  95. // return "其他";
  96. // };
  97. // 获取地址信息(公众号获取 或 内嵌APP获取)
  98. export const getLatLonH5 = function(successCallback, errCallback) {
  99. if (getBrowser() == '微信') {
  100. getLocation().then(res => {
  101. successCallback(res);
  102. }, err => {
  103. console.log("位置信息错误", err);
  104. errCallback("位置信息获取失败");
  105. });
  106. } else {
  107. let clearTime = setTimeout(() => {
  108. errCallback("获取经纬度超时");
  109. }, 5000);
  110. window.getAppLatLon = function(res) {
  111. clearTimeout(clearTime);
  112. successCallback(res);
  113. }
  114. appMutual("getAppLatLon", true);
  115. }
  116. };
  117. // 公众号分享
  118. export const publicShareFun = function(info = {}, callback) {
  119. if (getBrowser() == "微信") {
  120. let shareInfo = {
  121. title: info.shareTitle || info.title || base.share.title,
  122. desc: info.desc || info.shareContent || base.share.desc,
  123. imgUrl: info.imgUrl || info.shareImg || base.share.imgUrl,
  124. link: info.link || info.shareUrl || base.share.link,
  125. };
  126. setShare(shareInfo, callback);
  127. }
  128. }
  129. // export const h5Login = function(type = "judge", callback) {
  130. // // var getRequest = getUrlData();
  131. // if (getBrowser() == "微信") {
  132. // uni.reLaunch({
  133. // url: "/pages/login/login"
  134. // });
  135. // } else {
  136. // appMutual("jumpLogin", null, function() {
  137. // if (type == "force") {
  138. // uni.reLaunch({
  139. // url: "/pages/login/login"
  140. // });
  141. // }else{
  142. // uni.showModal({
  143. // title:"提示",
  144. // content:"您还未登录,请先登录~",
  145. // confirmText: "去登录",
  146. // cancelText: "再逛会",
  147. // success: (res) => {
  148. // if(res.confirm){
  149. // uni.reLaunch({
  150. // url: "/pages/login/login"
  151. // });
  152. // }
  153. // }
  154. // });
  155. // }
  156. // });
  157. // }
  158. // }