yfs/common/platform/MiniProgramPlatform.js
2025-05-12 14:58:41 +08:00

168 lines
3.4 KiB
JavaScript

import BasePlatform from './BasePlatform';
/**
* 小程序平台
*/
class MiniProgramPlatform extends BasePlatform {
constructor() {
super();
this.code = 'MP-WEIXIN';
this.env = 'miniProgram';
}
getPayData(url, data) {
return data;
}
pay({
data
}) {
return new Promise((resolve, reject) => {
let provider = "weixin";
uni.requestPayment({
provider,
...data,
success: res => {
// console.log(res)
},
fail: err => {
// console.log('common.wxMpPay-error', err)
},
complete: res => {
console.log('complete (res)', res)
if (res.errMsg == 'requestPayment:fail cancel') {
uni.showToast({
title: '取消支付',
icon: 'none',
duration: 500,
success: () => {
/* 取消订单 */
resolve('cancel')
}
})
}
if (res.errMsg == 'requestPayment:ok') {
uni.showToast({
title: '支付成功',
icon: 'success',
duration: 500,
success: () => {
resolve('success')
}
})
}
}
})
})
}
share({
title,
desc,
image,
url
}) {
wx.showShareMenu({
withShareTicket: true,
menus: ['shareAppMessage', 'shareTimeline']
});
// 监听用户点击分享按钮
wx.onShareAppMessage(() => ({
title,
imageUrl: image
}));
}
/**
* 选择地址
* @returns
*/
chooseAddress() {
return new Promise((resolve, reject) => {
uni.chooseAddress({
success: res => {
res.detailed_address = res.provinceName + res.cityName + res.countyName + res.detailInfo;
resolve(res)
},
fail: err => {
reject(err)
}
});
});
}
downloadFile(url) {
return new Promise((resolve, reject) => {
// 下载图片到本地
wx.downloadFile({
url: url,
success: (res) => {
if (res.statusCode === 200) {
const tempFilePath = res.tempFilePath; // 获取临时文件路径
// 保存图片到相册
wx.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: () => {
uni.showToast({
title: '保存成功',
icon: 'success',
});
},
fail: (err) => {
uni.showToast({
title: '保存失败',
icon: 'none',
});
console.error('保存失败', err);
},
});
} else {
uni.showToast({
title: '图片下载失败',
icon: 'none',
});
console.error('图片下载失败', res);
}
},
fail: (err) => {
uni.showToast({
title: '图片下载失败',
icon: 'none',
});
console.error('图片下载失败', err);
},
});
});
}
AppLaunch(options) {
console.log("AppLaunch", options);
}
getOrderNo() {
return new Promise((resolve, reject) => {
resolve(null);
});
}
delOrderNo(){}
/**
* 重写获取用户中心菜单列表,添加微信小程序特有菜单
* @returns {Array} 菜单项数组
*/
getUserMenuList() {
// 获取基础菜单列表
const baseMenuList = super.getUserMenuList();
// 添加客服菜单项(仅微信小程序)
const customServiceMenu = {
id: 9,
show: true,
title: '客服',
icon: 'my/s9.png',
path: '',
isCustomService: true,
// 客服按钮不需要处理函数,由微信小程序原生组件处理
handler: () => {}
};
// 将客服菜单插入到第二个位置
return [...baseMenuList.slice(0, 1), customServiceMenu, ...baseMenuList.slice(1)];
}
}
export default MiniProgramPlatform;