《十四》微信小程序中的常用 API之登录、获取用户信息、支付、提现、跳转小程序、网络请求、弹框、导航、数据缓存、图片、查看文档、音频、拨打电话、剪贴板、滚动、WXML
微信小程序提供了 wx 这个全局变量,通过这个全局变量可以调用微信小程序的 API。
登录:
wx.login()
:获取登录凭证 code。通过登录凭证 code 进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。
wx.login()
是静默登录的,不必授权,用户是无感知的。
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID 是相同的。
// 1. 调用 wx.login() 方法获取登录登录凭证 code,code 有效期五分钟。
wx.login({success: (res)=>{if(res.code){wx.request({// 2. 调用后端接口,传入 codeurl: 'https://example.com/onLogin',data: {code: res.code, },// 3. 后端调用 auth.code2Session 接口,换取用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识 UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key 等,将 OpenID 和 UnionID 返回给前端success (res) {console.log(res.data)},})}}
})
获取用户信息(只支持获取用户昵称和头像):
wx.getUserProfile()
:用于获取用户信息。页面产生点击事件后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。
//authorize.wxml
<button bindtap="getUserProfile">获取用户信息</button>//authorize.js
getUserProfile() {wx.getUserProfile({desc: '用于完善用户信息', // 声明获取用户个人信息后的用途,会展示在弹窗中success: (res) => {console.log(res.userInfo) // userInfo 中有效信息现在只支持获取到用户昵称和用户头像}
})
支付:
微信支付的实现流程:
- 前端请求后端接口,提交业务相关的订单参数。
- 后端根据订单参数,进行相关的业务逻辑。
- 后端调用微信支付 SDK,生成预订单。
- 后端返回给前端支付 API 所需要的参数。
- 前端调用支付 API,唤起微信支付弹框。
- 用户进行支付/不支付。
- 后端监听支付成功/失败,进行相关的业务逻辑。
- 调用后端接口获取微信支付 API 所需的参数。
- 调用微信支付 API
wx.requestPayment()
发起微信支付。
调用前需在小程序微信公众平台 -功能-微信支付入口申请接入微信支付。
// 1. 调用后端接口获取微信支付 API 所需的参数
const {timeStamp, nonceStr, prepayId, signType, paySign} = data
// 2. 调用微信支付 API 发起微信支付
wx.requestPayment({timeStamp: timeStamp, // 时间戳nonceStr: nonceStr, // 随机字符串package: `prepay_id=${prepayId}`, // 统一下单接口返回的 prepay_id 参数值,需拼接固定格式signType: signType, // 签名算法paySign: paySign, // 签名success (res) { },fail (res) { },
})
提现:
微信小程序没有提现相关的 API,一般用企业付款到零钱功能来实现。
企业付款到零钱功能是微信支付的功能。需要后端去调用微信支付提供的接口,小程序只需要去调用后端的接口即可。
跳转小程序:
wx.navigateToMiniProgram()
打开另一个小程序:
wx.navigateToMiniProgram()
:打开另一个小程序。
需要用户点击才能调用此接口。
在跳转至其他小程序前,会弹窗询问是否跳转,用户确认后才可以跳转其他小程序。
wx.openEmbeddedMiniProgram()
打开半屏小程序:
wx.openEmbeddedMiniProgram()
:打开半屏小程序。
- 需要在小程序管理后台
「设置」-「第三方设置」-「半屏小程序管理」
板块发起申请,最多可以申请10个小程序。 - 被半屏跳转的小程序需要通过来源小程序的调用申请。
- 通过调用
wx.openEmbeddedMiniProgram()
即可半屏跳转小程序。
wx.navigateBackMiniProgram()
返回到上一个小程序:
wx.navigateBackMiniProgram()
:返回到上一个小程序。
只有在当前小程序是被其他小程序打开时可以调用成功。
网络请求:
wx.request()
发起 HTTPS 网络请求:
wx.request()
:发起 HTTPS 网络请求。
// 使用 Promise 对 wx.request() 进行二次封装。
const BASE_URL = "https://test:8080"
const request = ({url, data={}, method = 'GET'}) => new Promise((resolve, reject) => {wx.request({url: BASE_URL + url,methoddata,success(res) {if (res.statusCode < 400) {resolve(res.data)} else {reject(’请求出错,请稍后再试‘)}},fail(err) {reject(err.errMsg)},})})
}// 使用封装的 request 函数
request('/user').then(res => console.log(res)).catch(err => console.log(err))
wx.downloadFile()
下载文件资源到本地:
wx.downloadFile()
:下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径 ,单次下载允许的最大文件为 200MB。
wx.uploadFile()
将本地资源上传到服务器:
wx.uploadFile()
:将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求。
弹框:
wx.showToast()
、wx.hideToast()
消息提示框:
wx.showToast()
、wx.hideToast()
:显示、隐藏消息提示框。
wx.showLoading()
、wx.hideLoading()
loading 提示框:
wx.showLoading()
、wx.hideLoading()
:显示、隐藏 loading 提示框。
wx.showModal()
模态对话框:
wx.showModal()
:显示模态对话框。
wx.showActionSheet()
操作菜单:
wx.showActionSheet()
:显示操作菜单。
导航:
wx.switchTab()
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面:
wx.switchTab()
:跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
wx.reLaunch()
关闭所有页面,打开到应用内的某个页面:
wx.reLaunch()
:关闭所有页面,打开到应用内的某个页面。
wx.redirectTo()
关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到 tabbar 页面:
wx.redirectTo()
:关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到 tabbar 页面。
wx.navigateTo()
保留当前页面,跳转到应用内的某个页面,但是不能跳到 tabbar 页面:
wx.navigateTo()
:保留当前页面,跳转到应用内的某个页面,但是不能跳到 tabbar 页面。
wx.navigateBack()
关闭当前页面,返回上一页面或多级页面:
wx.navigateBack()
:关闭当前页面,返回上一页面或多级页面。
数据缓存:
wx.setStorageSync(key, value)
将数据同步存储在本地缓存指定的 key 中:
wx.setStorageSync(key, value)
:将数据同步存储在本地缓存指定的 key 中。
会覆盖掉原来该 key 对应的内容。
单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
除非用户主动删除小程序或因存储空间原因被系统清理,否则数据都一直可用。
wx.getStorageSync(key)
从本地缓存中同步获取指定 key 的内容:
wx.getStorageSync(key)
:从本地缓存中同步获取指定 key 的内容。
removeStorageSync(key)
从本地缓存中同步移除指定 key:
removeStorageSync(key)
:从本地缓存中同步移除指定 key。
wx.clearStorageSync()
同步清理本地全部的数据缓存:
wx.clearStorageSync()
:同步清理本地全部的数据缓存。
wx.batchSetStorageSync([{key, value}])
将数据同步批量存储在本地缓存中指定的 key 中:
wx.batchSetStorageSync([{key, value}])
:将数据同步批量存储在本地缓存中指定的 key 中。
wx.batchGetStorageSync([key])
从本地缓存中同步批量获取指定 key 的内容:
wx.batchGetStorageSync([key])
:从本地缓存中同步批量获取指定 key 的内容。
图片:
wx.previewImage()
在新页面中全屏预览图片:
wx.previewImage()
:在新页面中全屏预览图片。预览的过程中用户可以进行保存图片、发送给朋友等操作。
预览图片会导致所在页面触发 onHide 生命周期函数。
wx.chooseMedia()
拍摄或从手机相册中选择图片或视频:
wx.chooseMedia()
:拍摄或从手机相册中选择图片或视频。
选择图片或视频会导致所在页面触发 onHide 生命周期函数。
查看文档:
wx.openDocument()
:新开页面打开文档。
- 需要在微信公众平台 --> 开发 --> 开发管理 --> 开发设置 --> 服务器域名中配置 downloadFile 合法域名。
- 首先使用
wx.downloadFile()
下载文件资源到本地,会返回文件的本地路径;然后使用wx.openDocument()
新开页面打开文档。wx.downloadFile({url: 'https://xxxx.xxx.com/test.doc',success: (res) => {const filePath = res.tempFilePath wx.openDocument({filePath: filePath, })}, })
音频:
wx.createInnerAudioContext()
:创建内部 audio 上下文 InnerAudioContext 对象,返回值是 InnerAudioContext 对象。
当锁屏或者小程序切入后台后,音频将停止播放。
- 如果想要在小程序切后台后继续播放音频,可以在 app.json 中配置 requiredBackgroundModes 属性。开发版和体验版上可以直接生效,正式版还需通过审核。
"requiredBackgroundModes": ["audio" ]
- 如果就是想停止播放,但由于页面中有暂停播放的图标,这种非手动点击的情况下暂停了播放,再切入前台会导致图标仍显示播放,但实际并没有播放。可以监听音频的 onPause() 事件,修改显示图标的属性。
//1. wxml 中编代码实现音频的样式//2. js 编写代码实现音频的逻辑
const innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.src = 'xxx'
拨打电话:
wx.makePhoneCall()
:拨打电话。
剪贴板:
wx.setClipboardData()
设置系统剪贴板的内容:
wx.setClipboardData()
:设置系统剪贴板的内容。调用成功后,会弹出 toast 提示"内容已复制",持续 1.5s。
wx.getClipboardData()
获取系统剪贴板的内容:
wx.getClipboardData()
:获取系统剪贴板的内容。
滚动:
wx.pageScrollTo()
:将页面滚动到目标位置,支持选择器和滚动距离两种方式定位。
在自定义组件中,使用
wx.pageScrollTo()
,selector
需要是页面中的元素,使用自定义组件中的元素是无效的。
WXML:
查询节点信息:
wx.createSelectorQuery()
:返回一个节点信息对象来查询节点信息。
在自定义组件中,使用
wx.createSelectorQuery()
可以查询包含自定义组件的页面的节点信息。使用this.createSelectorQuery()
可以查询自定义组件内的节点信息。
查询节点是否可见:
wx.createIntersectionObserver()
:返回一个观察器对象来查询节点是否可见。
在自定义组件中,要使用
this.createIntersectionObserver()
来代替。
《十四》微信小程序中的常用 API之登录、获取用户信息、支付、提现、跳转小程序、网络请求、弹框、导航、数据缓存、图片、查看文档、音频、拨打电话、剪贴板、滚动、WXML相关推荐
- 微信小程序开发之——用户登录-获取用户信息(5),意外收获字节跳动内部资料
{{userInfo.nickName}} {{userInfo.city}} {{userInfo.gender0?"未知":userInfo.gender1?"男&q ...
- 微信小程序授权登录获取用户信息详解
今天来说一下微信小程序的授权登录获取用户信息,首先我们看微信提供的小程序开发文档: https://blog.csdn.net/qq_41971087/article/details/82466647 ...
- 前端的第二十四天(jQuery入门、常用API)
前端的第二十四天(jQuery入门.常用API) 一.jQuery入门 1.jQuery 概述 2.jQuery 的基本使用 官网地址:点我跳转 各个版本的下载:点我跳转 二.jQuery常用API ...
- 【微信小程序】 获取用户信息 UserInfo 不注意的小问题 2022
获取用户信息 小程序官方API更新后 获取用户信息显得繁琐 要去做兼容 判断是否支持wx.getUserProfile 再选择获取用户信息的方式 <view><button wx:i ...
- Spring boot 项目(十三)——实现微信公众号授权登录获取用户信息
引言 微信公众号开发中,必不可少的一环:公众号授权登录.获取微信用户信息 前期准备 内网渗透=>生成本地指定端口映射的外网域名 链接:内网渗透工具natapp使用详解 域名生成之后修改yml文件 ...
- php执行who命令,Linux_在Linux系统中使用who和whoami命令获取用户信息,who用法:who [选项]... [ 文件 | - phpStudy...
在Linux系统中使用who和whoami命令获取用户信息 who用法:who [选项]... [ 文件 | 参数1 参数2 ] 显示当前已登录的用户信息. -a, --all ...
- 微信小程序授权登录获取用户信息并保存至缓存用于下次登录
1.获取用户信息 wx.getUserProfile(Object object) 获取用户信息.页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗 ...
- java对接微信小程序(登录获取用户信息)
需求说明: 用户通过小程序登录,进入到平台系统,进行各功能操作: 解决方案: 首先通过对接小程序,用户通过小程序登录及授权获取用户信息,后端调用接口获取微信用户信息,进行保存到数据库,然后返回toke ...
- 微信小程序授权登录——获取用户信息
小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. 登录流程时序 效果展示: 功能实现: 新建一个login页面 login.js: wx. ...
最新文章
- 浅谈Java内存泄漏问题
- html制作统计期末成绩,JS-结合html综合练习js的对象——班级成绩表制作
- python day5--正则表达式
- [oracle] 组织架构退格显示 connect by
- mysql如何管理空间_管理空间的mysql数据库
- Java环境配置(linux安装jdk8)
- C#LeetCode刷题之#724-寻找数组的中心索引( Find Pivot Index)
- 阿尔伯塔大学知名计算机工程学教授,关于加拿大阿尔伯塔大学电气与计算机工程学院教授来我校作学术报告的通知...
- win10下安装 迅雷精简版,提示阻止此应用
- 软件工程——清华大学《软件工程》课程学习与分享
- python监控进程脚本_进程监控的python脚本
- 前端实现省市县三级联动的功能
- 微信对账单 java_[Java]获取微信api中的下载对账单和下载资金账单功能
- 使用 Cheat Engine 修改 Kingdom Rush 中的金钱、生命、星
- linux关机会自动重启,linux——如何在linux下让系统定时自动重启(关机)
- win7计算机操作知识,WIN7系统电脑的常识操作
- typora+阿里云图床+印象笔记+OneDrive安全保存你的文章
- 如何创建一流技术团队
- 每周一篇 文献阅读—paper13
- 视频通话和聊天工具Jitsi
热门文章
- Java基础 坦克大战01绘制坦克
- Terraform 实战:Terraform入门
- Linux杀死进程的多种方法
- lyuyou消费大数据_从“618”大数据看中国消费新活力-新华网
- 投影仪贵的和便宜的区别?业内公认千元投影仪性价比排行
- Google Earth Engine APP ——制作上传GIF动图并添加全球矢量位置
- BIM模型文件下载——三层Revit商务办公楼模型
- 马上进入2018年了,但愿你还有被剥削的价值!因为AI失业潮真的开始了...
- 简单的Python取款机
- 在Centos 7.5上使能intel UHD 630显卡(Coffee Lake)