mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2025-12-20 06:12:48 +00:00
190 lines
6.5 KiB
TypeScript
190 lines
6.5 KiB
TypeScript
// #ifdef H5
|
||
import wx from 'weixin-js-sdk'
|
||
// #endif
|
||
import { getWechatSdkConfig } from '@/app/api/system'
|
||
import { isWeixinBrowser } from '@/utils/common'
|
||
import useSystemStore from "@/stores/system";
|
||
|
||
class Wechat {
|
||
constructor() {
|
||
// #ifdef H5
|
||
// isWeixinBrowser() && this.init()
|
||
// #endif
|
||
}
|
||
|
||
public init(callback: any = null) {
|
||
const systemStore = useSystemStore()
|
||
getWechatSdkConfig({
|
||
url: systemStore.systemInfo.platform == 'ios' ? uni.getStorageSync('initUrl') : location.href
|
||
}).then((res: any) => {
|
||
const { data } = res
|
||
wx.config({
|
||
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
|
||
appId: data.appId, // 必填,公众号的唯一标识
|
||
timestamp: data.timestamp, // 必填,生成签名的时间戳
|
||
nonceStr: data.nonceStr, // 必填,生成签名的随机串
|
||
signature: data.signature,// 必填,签名
|
||
jsApiList: ['chooseWXPay', 'updateAppMessageShareData', 'updateTimelineShareData', 'scanQRCode', 'getLocation','hideMenuItems'] // 必填,需要使用的JS接口列表
|
||
});
|
||
if (callback) callback();
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 发起支付
|
||
*/
|
||
public pay(options: WeixinJsSdk.ChooseWXPayOptions) {
|
||
wx.ready(() => {
|
||
wx.chooseWXPay(options)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 分享设置
|
||
*/
|
||
public share(options: WeixinJsSdk.OnMenuShareAppMessageOptions) {
|
||
wx.ready(() => {
|
||
// 分享给朋友
|
||
wx.updateAppMessageShareData(options)
|
||
// 分享到朋友圈
|
||
wx.updateTimelineShareData(options)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 扫一扫
|
||
* @param {Object} callback
|
||
*/
|
||
public scanQRCode(callback: any) {
|
||
wx.ready(() => {
|
||
wx.scanQRCode({
|
||
needResult: 1,
|
||
scanType: ["qrCode"],
|
||
success: function (res) {
|
||
typeof callback == 'function' && callback(res);
|
||
}
|
||
});
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取地理位置接口
|
||
* @param {Object} callback
|
||
*/
|
||
public getLocation(callback: any) {
|
||
wx.ready(function () {
|
||
wx.getLocation({
|
||
type: 'gcj02',
|
||
success: function (res) {
|
||
typeof callback == 'function' && callback(res);
|
||
}
|
||
});
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 商家转账接口
|
||
* @param {Object} options 转账参数
|
||
* @param callback
|
||
*/
|
||
public transfer(options: any, callback: any) {
|
||
// #ifdef MP
|
||
if (wx.canIUse('requestMerchantTransfer')) {
|
||
wx.requestMerchantTransfer({
|
||
...options,
|
||
success: (res: any) => {
|
||
// console.log('success:', res);
|
||
typeof callback == 'function' && callback(res);
|
||
},
|
||
cancel: (res: any) => {
|
||
typeof callback == 'function' && callback(res);
|
||
// console.log('cancel:', res);
|
||
},
|
||
fail: (err: any) => {
|
||
typeof callback == 'function' && callback(err);
|
||
},
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: '你的微信版本过低,请更新至最新版本。',
|
||
icon: 'none'
|
||
});
|
||
}
|
||
// #endif
|
||
// #ifdef H5
|
||
wx.ready(() => {
|
||
wx.checkJsApi({
|
||
jsApiList: ['requestMerchantTransfer'],
|
||
success: function (res) {
|
||
if (res.checkResult['requestMerchantTransfer']) {
|
||
WeixinJSBridge.invoke('requestMerchantTransfer', options, (res: any) => {
|
||
typeof callback == 'function' && callback(res);
|
||
}
|
||
)
|
||
} else {
|
||
alert('你的微信版本过低,请更新至最新版本。');
|
||
}
|
||
},
|
||
fail: function (err) {
|
||
// console.log('err:', err);
|
||
typeof callback == 'function' && callback(err);
|
||
},
|
||
cancel: function (err) {
|
||
// console.log('cancel:', err);
|
||
typeof callback == 'function' && callback(err);
|
||
}
|
||
|
||
});
|
||
})
|
||
// #endif
|
||
}
|
||
/**
|
||
* 禁用分享(小程序和公众号)
|
||
*/
|
||
public disableShare() {
|
||
// 公众号(H5)禁用分享
|
||
// #ifdef H5
|
||
if (isWeixinBrowser()) {
|
||
wx.ready(() => {
|
||
// 先检查是否有权限
|
||
wx.checkJsApi({
|
||
jsApiList: ['hideMenuItems'],
|
||
success: (res) => {
|
||
// 若有权限,执行隐藏
|
||
if (res.checkResult.hideMenuItems) {
|
||
wx.hideMenuItems({
|
||
menuList: [
|
||
"menuItem:share:appMessage",
|
||
"menuItem:share:timeline",
|
||
"menuItem:share:qq",
|
||
"menuItem:share:QZone",
|
||
"menuItem:share:weiboApp",
|
||
"menuItem:favorite"
|
||
],
|
||
success: () => console.log("公众号分享已禁用"),
|
||
fail: (err) => console.error("隐藏菜单失败:", err)
|
||
});
|
||
} else {
|
||
console.warn("无hideMenuItems权限,无法禁用分享");
|
||
}
|
||
},
|
||
fail: (err) => console.error("检查权限失败:", err)
|
||
});
|
||
});
|
||
}
|
||
// #endif
|
||
|
||
|
||
// 小程序禁用分享
|
||
// #ifdef MP-WEIXIN
|
||
wx.hideShareMenu({
|
||
menus: ['shareAppMessage', 'shareTimeline'], // 隐藏转发给朋友、朋友圈
|
||
success: () => console.log("小程序分享已禁用"),
|
||
fail: (err) => console.error("小程序禁用分享失败:", err)
|
||
});
|
||
// #endif
|
||
}
|
||
}
|
||
|
||
export default new Wechat()
|