记录 - 收货地址的坑
项目场景:
调用uni.chooseAddress() api获取收货人的信息
问题描述
在PC的微信开发者工具调试 uni.chooseAddress() 接口没发现报错,操作流程正常
但是真机调试 uni.chooseAddress() 接口调用失败,err 报错,这里需要注意的是这个“张三”的信息是微信提供的默认地址
errMsg: "chooseAddress:fail the api need to be declared in …e requiredPrivateInfos field in app.json/ext.json"}errMsg: "chooseAddress:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json"__proto__: Object
// 选择收货地址async chooseAddress() {// 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能// 返回值是一个数组:第 1 项为错误对象;第 2 项为成功之后的收货地址对象const [err, succ] = await uni.chooseAddress().catch(err => err)if(err !==null){uni.$showMsg('接口调用失败')}// 用户成功的选择了收货地址if (err === null && succ.errMsg === 'chooseAddress:ok') {// 为 data 里面的收货地址对象赋值// this.address = succ// 调用 Store 中提供的 updateAddress 方法,将 address 保存到 Store 里面this.updateAddress(succ)}// 用户没有授权 -- 如果在选择收货地址的时候,用户点击了取消授权,则需要进行特殊的处理,否则用户将无法再次选择收货地址!if (err && (err.errMsg === 'chooseAddress:fail auth deny' || err.errMsg ==='chooseAddress:fail authorize no response')) {this.reAuth()}},
原因分析:
wx.chooseAddress(Object object)
功能描述
获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址。
使用方法
自 2022 年 7 月 14 日后发布的小程序,若使用该接口,需要在 app.json 中进行声明,否则将无法正常使用该接口,2022年7月14日前发布的小程序不受影响。具体规则见公告
申请开通
暂只针对具备与地理位置强相关的使用场景的小程序开放,在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。 接口权限申请入口将于2022年3月11日开始内测,于3月31日全量上线。并从4月18日开始,在代码审核环节将检测该接口是否已完成开通,如未开通,将在代码提审环节进行拦截。
解决方案:
1.在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通wx.chooseAddress(Object object)接口权限
2.如果是使用原生的微信小程序写的则需要在 app.json 中进行声明
我是用uniapp写的,所以打开 manifest.json 文件
在 mp-weixin 里面添加
最后保存编译运行就可以了
收货地址功能核心代码:
// 选择收货地址async chooseAddress() {// 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能// 返回值是一个数组:第 1 项为错误对象;第 2 项为成功之后的收货地址对象const [err, succ] = await uni.chooseAddress().catch(err => err)// const [err, succ] = await wx.chooseAddress().catch(err => err)if(err !==null){uni.$showMsg('接口调用失败')}// 用户成功的选择了收货地址if (err === null && succ.errMsg === 'chooseAddress:ok') {// 为 data 里面的收货地址对象赋值// this.address = succ// 调用 Store 中提供的 updateAddress 方法,将 address 保存到 Store 里面this.updateAddress(succ)}// 用户没有授权 -- 如果在选择收货地址的时候,用户点击了取消授权,则需要进行特殊的处理,否则用户将无法再次选择收货地址!if (err && (err.errMsg === 'chooseAddress:fail auth deny' || err.errMsg ==='chooseAddress:fail authorize no response')) {this.reAuth()}},// 调用此方法,重新发起收货地址的授权async reAuth() {// 3.1 提示用户对地址进行授权const [err2, confirmResult] = await uni.showModal({content: '检测到您没打开地址权限,是否去设置打开?',confirmText: "确认",cancelText: "取消",})// 3.2 如果弹框异常,则直接退出if (err2) return// 3.3 如果用户点击了 “取消” 按钮,则提示用户 “您取消了地址授权!”if (confirmResult.cancel) return uni.$showMsg('您取消了地址授权!')// 3.4 如果用户点击了 “确认” 按钮,则调用 uni.openSetting() 方法进入授权页面,让用户重新进行授权if (confirmResult.confirm) return uni.openSetting({// 3.4.1 授权结束,需要对授权的结果做进一步判断success: (settingResult) => {// 3.4.2 地址授权的值等于 true,提示用户 “授权成功”if (settingResult.authSetting['scope.address']) return uni.$showMsg('授权成功!请选择地址')// 3.4.3 地址授权的值等于 false,提示用户 “您取消了地址授权”if (!settingResult.authSetting['scope.address']) return uni.$showMsg('您取消了地址授权!')}})},
记录 - 收货地址的坑相关推荐
- Django项目实践(商城):十一、收货地址
(根据居然老师直播课内容整理) 一.页面功能简介 在"用户中心"的任一界面,点击左边"收货地址"后,显示下面界面 此界面包括以下4个功能: 新增收货地址 删除当 ...
- DRF 商城项目 - 用户操作(收藏, 留言, 收货地址)
个人收藏 整体逻辑类似于 个人中心 ( 个人中心的相关逻辑梳理详情 点击这里 ) 也是两个序列化组价的分流 查看收藏 ( list ) 详情指向 收藏详情 的组价 创建收藏 ( create ) ...
- jssdk 获取微信收货地址_微信收货地址共享开发接口讲解
写在前面的话:微信开发者文档写的比较清楚,也不容易出错,可是偏偏收货地址共享那儿写的比较绕,同时也会有很多坑,这里总结一下. ======正文开始====== 微信收货地址共享开发接口基本使用场景是: ...
- 微信收货地址开发分享
微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题.虽然坑很多,但是还是把问题解决了. 微信支付的收货地址共享功能,主要是统一的管理微信用户个人 ...
- 设置默认收货地址【项目 商城】
设置默认收货地址[项目 商城] 设置默认收货地址 1. 持久层 1.1 规划SQL语句 1.2 设计抽象方法 1.3 配置SQL映射 测试 2.业务层 2.1 异常规划 2.2 抽象方法 2.3 实现 ...
- mysql收货地址表_收货地址表结构 以及创建修改流程
创建收货地址的过程中, 一共涉及到三张表 一张为PostalAddress contact_mech party_contact_mech 创建的流程 调用createPartyPostal ...
- Java 收货地址智能解析
收货地址智能解析 省市区县文件下载地址:china-area.json TreeUtils 地址:Java 万物皆可 Tree 工具类 BaseEnum 地址:枚举字典管理器 基础类:AreaTree ...
- PHP智能解析收货地址
有问题,可以加入讨论群 QQ群:825042078 这段代码可以实现剥离出:身份证号,手机号,座机号,右边,同时出去字符里面的一些干扰词,只留下用于解析的详细地址 然后详细地址可以,通过第二段程序,分 ...
- SpringBoot电脑商城-收货地址
收货地址 1. 新增收获地址 1.1 数据库表创建 1.2 创建实体类 1.3 持久层 1.4 业务层 1.5 控制层 1.6 前端页面 2. 获取省市区列表 2.1 数据库表 2.2 实体类 2.3 ...
最新文章
- 线性回归之数学:求导公式
- 【Android】Retrofit 2.0 的使用
- Tomcat创建一个windows服务
- Python 技术篇-3行代码搞定图像文字识别,pytesseract库实现
- You C.A.N.大赛 解锁7大行业智能硬件创新密码
- 2018 CVPR GAN 相关论文调研
- SAP Spartacus 中的依赖注入 Dependency Injection 介绍
- JS之数组删除/添加项目方法splice
- redis 3.0 java 工具包_redis分布式锁工具包,提供纯Java方式调用
- python网络监控程序_python linux监控程序
- c语言指数怎么表示_Assembly 浮点表示法
- Gstreamer官方教程汇总2---GStreamer concepts
- linux怎么建立链接文件,Linux 建立文件夹的链接
- iredmail mysql 配置_Iredmail各大组件连接Mysql配置说明
- 服务器晚上自动重启是什么原因,服务器经常自动重启是什么原因
- 启动定时器t0的工作指令是_启动定时器 0 工作的指令是使 TCON 的 ( )_学小易找答案...
- Oracle 基本SQL语句
- 【JavaLearn】 # (2)类和对象、变量、构造方法、普通方法、this关键字
- css实现波浪球效果图,用css实现圆形波浪效果图
- 字节、字、bit、byte到底咋回事
热门文章
- 计算机在科学研究上的意义,浅谈自然辩证法对计算机科学研究的意义
- 2013年图灵奖得主Leslie Lamport:如何写出数学上完美的算法
- AcWing算法提高课-3.1.1热浪
- shiro中devtools:java.lang.ClassCastException: cn.model.User cannot be cast to cn.model.User
- ticktock卖给oracle,ticktock第三章怎么过 ticktock第三章玩家一通关攻略
- C++标准模板库之map及pair
- Tomcat环境变量配置
- Avalon总线(一)Avalon-MM Signals
- 人脸超分辨率阅读论文汇总
- 移动端div背景图出现白边