微信小程序常用整理

上传文件从会话框选择

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('用户拒绝授权获取手机号码');
    }
  }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值