import { appRefCode } from "@/assets/js/config"; import service from "@/plugin/axios"; let wxAppId = "wxd2941f9abd7ba978"; // 微信AppId let WeChat = { getCode: (state) => { // 调起授权,获取code。注意:每次调用时先清除已储存的token,避免后续跳转监听到旧的token,一直401 const url = window.location.href; const routeCode = url.split("#")[1]; if (routeCode == 'weChatLogin' || routeCode == '/selectLoginMethod') { window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${wxAppId}&redirect_uri=${encodeURIComponent( 'https://www.tepcb.com/mobile/textbooks/#/personalCenter' )}&response_type=code&scope=snsapi_userinfo&state=${state}`; } else { window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${wxAppId}&redirect_uri=${encodeURIComponent( window.location.href )}&response_type=code&scope=snsapi_userinfo&state=${state}`; } }, getUrlInfo: state => { var url = window.location.search; var theRequest = {}; if (url.indexOf(state) != -1) { var infoStr = url.substr(1); var infoList = infoStr.split("&"); if (infoList.length) { for (var i = 0; i < infoList.length; i++) { let infoItem = infoList[i]; theRequest[infoItem.split("=")[0]] = infoItem.split("=")[1]; } } else { theRequest = null; } } return theRequest; }, login: (code, callback) => { // 公众号登录 service({ url: "/identity/api/LoginByWeChatSocialCode", method: "post", data: { code, appRefCode, platform: appRefCode + "_WeChatLogin" } }).then(res => { if (res.status == "Ok") { if (callback) callback(res.token); } else { // eslint-disable-next-line no-unused-vars let msg = ""; try { msg = "登录失败!" + "errmsg:" + JSON.parse(res.message).errmsg; } catch (error) { msg = "登录失败!"; } } }); }, // 微信支付 pay: (res, callback) => { if (res) { if (typeof WeixinJSBridge === "undefined") { // 微信浏览器内置对象。参考微信官方文档 if (document.addEventListener) { document.addEventListener( "WeixinJSBridgeReady", WeChat.onBridgeReady(res, callback), false ); } else if (document.attachEvent) { document.attachEvent( "WeixinJSBridgeReady", WeChat.onBridgeReady(res, callback) ); document.attachEvent( "onWeixinJSBridgeReady", WeChat.onBridgeReady(res, callback) ); } } else { // 准备调用微信支付 WeChat.onBridgeReady(res, callback); } } }, onBridgeReady: (data, callback) => { const resData = JSON.parse(data); // eslint-disable-next-line WeixinJSBridge.invoke( "getBrandWCPayRequest", { appId: resData.appId, // 公众号名称,由商户传入 timeStamp: resData.timeStamp, // 时间戳 nonceStr: resData.nonceStr, // 随机串 package: resData.package, // 预支付id signType: resData.signType, // 微信签名方式 paySign: resData.paySign // 微信签名 }, function (res) { // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 if (res.err_msg == "get_brand_wcpay_request:ok") { // 支付成功 if (callback) { const flag = true; callback(flag); } } else if (res.err_msg == "get_brand_wcpay_request:cancel") { // 支付取消 if (callback) { const flag = false; callback(flag, "支付取消"); } } else { // 支付失败 if (callback) { const flag = false; callback(flag, res.errMsg || res.err_msg); } } } ); } }; export default WeChat;