05 uniapp/微信小程序 项目day05
一.登录与支付
1.1 登录
1.1.1 条件判断
当我们点击结算应当进行条件判断

第一个如果没有勾选商品
第二个是没选择地址
第三个是未登录

1.1.2 页面布局
应该有两个页面,一个点击登录,一个登陆成功后的页面,所以应该创建两个组件

他们应该按需展示,并且条件为是否有token

然后未登录的页面结构
uni icon的头像icon


1.1.3 获取用户基本信息
由于微信登录并不像pc点击登录就去调用接口,微信登录需要调用自己的登录api,然后获取到一些信息密匙等,而我们的登录接口就需要这些密匙
也会弹出登录授权框

用到一个api
uni.getUserProfile其中desc为这次调用的登陆的信息说明
首先是取消登录的验证

登录成功将我们的用户信息存进vuex


然后组件这边存进来
注意这里做了改造用它规定的回调来写

1.1.4 获取code
我们的登录接口还需要一个参数code
这个码只能通过 uni.login这个api获取
所以我们登录成功获取了profile信息后还应该再去获取code

现在有了code就可以去发起请求了

登录成功应该将token永久存储


state里面也要修改

注意我们的数据回来不仅是要存在storage里面,要让页面能够响应到还应该给她赋一次值

1.2 用户信息
1.2.1 渲染用户头像和昵称
现在组件定义好基本结构

然后从vuex拿回我们之前存进去的数据,并渲染上来

1.2.2 三个面板
接下来是这个页面三个面版的渲染
主要是一些html及css的规划

1.2.3 退出登录
主要就是要用到一个api 来弹出是否退出登录的消息框
uni.showModal

同样的会有两个返回,一个是否为null的错误返回,一个是成功返回,而且promise catch捕获一下错误

如果返回有值,且有confirm这个对象,那么就清空token、userinfo、地址信息

1.2.4 三秒跳转
当未登录的时候在购物车点击结算应该提示未登录,还有多少s跳转到登录页
定义一个初试的秒数

当我们没有token也就是没有登陆的时候就去调用一个定时器每秒钟执行这个提示
注意,toast有一个属性mask,表示开启了面罩不能够点击后面的内容,防止点击穿透

现在要解决的问题,就是让秒数到0后就跳转过去并且停止定时器
创建一个定时器

判断seconds是否小于0,如果是就停止定时器,并且跳转过去,最重要的return返回seconds为3

登录成功后导航跳转
当我们登陆成功应该从哪来回哪去,这里用的方法是
首先在vuex定义一个对象,这个对象应该存储两个信息,opentype以及form,分别表示跳转的方式和跳转的地址


然后我们在点击结算那里进行一个传值
在我们跳转的成功回调里面进行传值

这个时候,我们的登陆成功得到token后面应该去判断一下是否有这两个值,有就跳转,并且把redirectInfo重置为空对象,不然容易出现问题

1.3 微信支付
首先前提:我们需要将请求头改变,因为只有登录之后才能调用支付相关的接口,所以必须为有权限的接口添加请求头字段
在请求拦截器操作,我们的请求拦截器参数,会有url以及Authorization等属性,如果说url里面带有my就是表示需要权限的接口,这个时候就要参数里面的header的authorization属性带上我们的token去发起请求

微信支付三部曲:
首先创建订单
在我们点击结算那里都通过了验证就整合数据,创建订单接口需要的数据

整合数据

然后发起请求并保存下来

订单预支付
然后继续拿这个订单编号去发起预支付的请求,获取到要调用微信支付api的一些参数

实现支付
用到微信支付的api uni.requestPayment
接受两个回调如果有错误就返回错误

如果没有错误还要再次调用我们的接口去判断一些有没有支付成功

二.发布
为什么要进行发布?
因为只要发布后才能被用户搜索到,而且现在体积是偏大的,只有发布后进行压缩了体积才会变小
2.1 发布为小程序
首先发行

需要去dccloud添加应用并重新在manifest.json输入uniappId


发行成功后点击开发者工具上传

上传成功后在微信公众平台提交审核
按照他的步骤一步一步来把详细信息弄完整


审核成功后发布上线即可
2.2 发布为安卓app
首先还是要设置好我们的manifest里面的appid
然后要设置好图标

直接选择云打包


05 uniapp/微信小程序 项目day05的更多相关文章
- 01 uniapp/微信小程序 项目day01
一.起步 1.1 配置uni-app开发环境 什么是uni-app,就是基于vue的一个开发框架,可以将我们写的一套代码,同时发布到ios.安卓.小程序等多个平台 官方推荐使用Hbuilderx来写u ...
- uniapp/微信小程序 项目day03
一.商品列表 1.1 获取数据 首先能够进入商品列表的途径 传的数据有 了解了这个之后就可以开始了,先创建分支 创建编译模式,并分配初试数据 这个时候就可以获取数据了 需要的数据 所以在发起请求之前需 ...
- 04 uniapp/微信小程序 项目day04
一.加入购物车 1.1 购物车数量 先创建购物车git 这里的数据肯定要做全局数据,因为不能只在details这个页面去操作他,他到底有几个也是由购物车页面获取到的 所以需要vuex 创建store文 ...
- 02 uniapp/微信小程序 项目day02
一.分类 1.1 页面布局 首先创建cate的分支 定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件 scroll 这个组件如果是y scroll那就要固定高度,x scroll那就要固定宽 ...
- 使用uni-app(Vue.js)创建运行微信小程序项目步骤
使用uni-app(Vue.js)开发微信小程序项目步骤 1. 新建一个uni-app项目 创建完成后的目录结构 2. 打开微信小程序开发工具端的端口调试功能 3. 运行创建的项目 效果
- 微信小程序项目转换为uni-app项目
一.它是谁? [miniprogram-to-uniapp]转换微信小程序"项目为uni-app项目.原则上混淆过的项目,也可以进转换,因为关键字丢失,不一定会完美. 二.它的原理是什么? ...
- 【重点突破】—— UniApp 微信小程序开发官网学习One
一.初步认识 uni-app官网:https://uniapp.dcloud.io/component/README HBuilderX官方IDE下载地址: http://www.dcloud.io/ ...
- 微信小程序开发01 --- 微信小程序项目结构介绍
一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...
- 高仿Readhub小程序 微信小程序项目【原】
# News #### 项目介绍微信小程序项目涉及功能 https://gitee.com/richard1015/News https://github.com/richard1015/News 高 ...
随机推荐
- 【java】学习路径21-基本类型的包装类
int i =100; //Integer i2 = new Integer(100); //我们发现已被弃用,现在我们一般的方法是使用valueOf Integer i2 = null; i2 = ...
- VS 正则匹配快速查询
**************************************************************************************************** ...
- [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio
目录 1.GNU Radio 是什么 2.我为什么要用 GNU Radio 3.数字信号处理 3.1 一点信号理论 3.2 将数字信号处理应用于无线电传输 4.基于流程图的模块化数字信号处理方法 本文 ...
- ClickHouse(05)ClickHouse数据类型详解
ClickHouse属于分析型数据库,ClickHouse提供了许多数据类型,它们可以划分为基础类型.复合类型和特殊类型.其中基础类型使ClickHouse具备了描述数据的基本能力,而另外两种类型则使 ...
- csp每日习题
欢迎加入:qq群号:1054587486 做题链接:https://csp.ccf.org.cn/csp/index.action?_access_code=1584494752035 点击模拟考试进 ...
- Oracle PLM,协同研发的产品生命周期管理平台
官网:Oracle PLM - 方正璞华 适用企业:电子高科技.机械制造.医疗器械.化工行业等大型企业和中小型企业 咨询热线:4006-160-730 申请试用.预约演示.产品询价 邮箱:jiangc ...
- python 作用域与命名空间
作用域 作用域分为: 全局作用域 局部作用域 在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量 非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量 局部作用域可以使用全局 ...
- Netty内存池的整体架构
一.为什么要实现内存管理? Netty 作为底层网络通信框架,网络IO读写必定是非常频繁的操作,考虑到更高效的网络传输性能,堆外内存DirectByteBuffer必然是最合适的选择.堆外内存在 JV ...
- Linux查看文件内容和压缩文件命令
查看文件内容 一些重要的目录: /usr/share/ 帮助文档.说明文档/var/log/ 日志/var/run/ 运行中程序/var/tmp 临时文件 根 ...
- Kubernetes 调度 - 污点和容忍度详解
当我们使用节点亲和力(Pod 的一个属性)时,它会将Pod吸引到一组节点(作为偏好或硬性要求).污点的行为完全相反,它们允许一个节点排斥一组 Pod. 在 Kubernetes 中,您可以标记(污染) ...