全栈小学生 d09a12489d up
2025-03-14 18:33:22 +08:00

141 lines
4.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// #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()