mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2025-12-19 05:42:48 +00:00
141 lines
4.5 KiB
TypeScript
141 lines
4.5 KiB
TypeScript
// #ifdef H5
|
||
import wx from 'weixin-js-sdk'
|
||
// #endif
|
||
import { getWechatSdkConfig } from '@/app/api/system'
|
||
import { isWeixinBrowser } from '@/utils/common'
|
||
|
||
class Wechat {
|
||
constructor() {
|
||
// #ifdef H5
|
||
// isWeixinBrowser() && this.init()
|
||
// #endif
|
||
}
|
||
|
||
public init(callback: any = null) {
|
||
getWechatSdkConfig({
|
||
url: uni.getSystemInfoSync().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'] // 必填,需要使用的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 转账参数
|
||
*/
|
||
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
|
||
}
|
||
}
|
||
|
||
export default new Wechat()
|