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;
|
console.log(window.location.href, 1);
|
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;
|