上传文件从会话框选择
wx.chooseMessageFile()
wx.chooseMessageFile({
count: 10,//限制选择的文件数量
type: 'file',//非图片和视频的文件,不选默认为all
//type:'video',//视频
//type:'image',//图片
success(res) {
// tempFilePath可以作为img标签的src属性显示图片
const tempFilePaths = res.tempFiles
resolve(tempFilePaths)
},
fail: function(err) {
console.log('失败' + err)
reject(false)
}
})
微信支付
wx.requestPayment()
wx.requestPayment({
timeStamp: '', // 时间戳,从1970年1月1日00:00:00至今的秒数,即当前的时间
nonceStr: '', // 随机字符串,长度为32个字符以下。
package: '', // 统一下单接口返回的 prepay_id 参数值,格式如“prepay_id=*”
signType: 'MD5', // 签名算法类型,默认为 MD5,支持RSA等其他加密算法
paySign: '', // 签名,详见签名生成算法
success: function (res) {
// 支付成功后的回调函数, res.errMsg = 'requestPayment:ok'
},
fail: function (res) {
// 支付失败或取消支付后的回调函数, res.errMsg = 'requestPayment:fail cancel' 取消支付;res.errMsg = 'requestPayment:fail (detail error message)'
}
})
微信登录
wx.login({
success: function(res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://example.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
});
获取当前环境配置
const accountInfo = wx.getAccountInfoSync(); // 获取当前帐号信息
var envs = {}
// env类型
var env = ""
const baseApi = {
// 开发版
develop: {
api_host: "",
web_view: "",
img_host: "",
},
// 体验版
trial: {
api_host: "",
web_view: "",
img_host: "",
},
// 正式版
release: {
api_host: "",
web_view: "",
img_host: "",
}
};
env = accountInfo.miniProgram.envVersion
// request请求baseURL
envs = baseApi[env];
export default envs;
封装请求
import env from 'env.js';
let service = (config) => {
return new Promise((resolve, reject) => {
wx.showLoading({
title: '加载中',
mask: true
})
wx.request({
url: env.api_host + config.url,
method: config.method || 'POST',
header: {
'cookie': wx.getStorageSync("sessionid") ,
"Content-Type": (config.header && config.header['Content-Type']) || "application/json",
},
data: config.data,
success: function (res) {
resolve(res);
},
fail: function (res) {
reject(res);
},
complete: function () {
wx.hideLoading({
fail: () => { },
success: () => { },
complete: (complete) => { }
})
}
})
})
}
export default service;
预览文档
openFile(data){
// open打开 save报存 share分享
wx.showLoading({
title: '加载中',
})
const fileExtName = 'pdf';
const randfile = new Date().getTime() + fileExtName;
const newPath = `${wx.env.USER_DATA_PATH}/${randfile}`;
wx.downloadFile({
url: 'xxx', // 本地服务器上pdf文件的地址
filePath: newPath,
success (res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
var filePath = res.tempFilePath
if (res.statusCode === 200) {
console.log(res)
if(data.open){
wx.openDocument({
filePath: newPath,
showMenu: true,
fileType: 'pdf',
success:function(res){
wx.hideLoading()
}
})
} else if (data.save) {
const fileManager = wx.getFileSystemManager()
fileManager.saveFile({
tempFilePath: res.tempFilePath,
success: (res) => {
console.log(res, '下载成功')
wx.openDocument({
filePath: res.savedFilePath,
showMenu: true
})
}
})
}else if(data.share){
if (apiIsBe()) {
sharePdf(filePath)
}
}
}
},
fail:function(res){
console.log(res)
}
})
}
// 分享pdf
const sharePdf = (file, fileName) => {
console.log('sharePdf', file)
console.log('unknown后缀')
const fs = wx.getFileSystemManager()
const time = new Date().getTime()
if (fileName) {
file = fs.saveFileSync(file, `${wx.env.USER_DATA_PATH}/${fileName}`)
} else {
file = fs.saveFileSync(file, `${wx.env.USER_DATA_PATH}/temp${time}.pdf`)
}
shareFileMessage(file)
}
// 判断是否支持分享
const apiIsBe = () => {
if (wx.shareFileMessage) {
console.log('版本存在功能')
return true
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
console.log('版本不存在功能')
return false
}
}
// 分享文件到聊天记录
const shareFileMessage = (file) => {
console.log(file)
wx.shareFileMessage({
filePath: file,
success() {},
fail: console.error
})
}
分享图片
wx.downloadFile({
filePath: wx.env.USER_DATA_PATH + '/' + 'picture' + '.jpg',//保存路径
url: 'xxx',
success: (res) => {
console.log('res:', res)
const filePath = res.filePath
wx.showShareImageMenu({
path: filePath,
success: () => {
if (wx.getSystemInfoSync().platform == 'android') {
wx.showToast(
{
title: '成功',
icon: 'success'
}
)
}
}
}
)
},
fail: (res) => {
console.log(res)
if (res.errMsg.indexOf('deny') != -1 || res.errMsg.indexOf('denied') != -1) {
wx.showToast({
title: '保存相册失败,请设置权限!',
icon: 'none',
duration: 2000
})
} else {
wx.showToast({
title: '保存相册失败,请重试!',
icon: 'none',
duration: 2000
})
}
}
})
获取用户手机号码(需充值)
获取手机号码按钮比如用button,同时open-type=“getPhoneNumber”,用bindgetphonenumber指定获取的方法。
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
getPhone(e) {
if (e.detail.errMsg == "getPhoneNumber:ok") {
// 可以使用e.detail.encryptedData和e.detail.iv来获取加密的手机号码
const encryptedData = e.detail.encryptedData;
const iv = e.detail.iv;
// 将加密的数据发送到后端解密
wx.request({
url: 'YOUR_BACKEND_ENDPOINT', // 替换为你的后端解密接口地址
method: 'POST',
data: {
encryptedData: encryptedData,
iv: iv
},
success: (res) => {
if (res.statusCode === 200 && res.data.phoneNumber) {
// 后端解密成功,获取到手机号码
console.log('手机号码:', res.data.phoneNumber);
} else {
// 后端解密失败处理
console.error('手机号码解密失败:', res.errMsg);
}
},
fail: (err) => {
// 请求后端接口失败处理
console.error('请求失败:', err.errMsg);
}
});
} else {
// 用户拒绝授权获取手机号码
console.log('用户拒绝授权获取手机号码');
}
}