springboot苍穹外卖实战:八、开发小程序准备工作+入门案例+小程序微信用户登录流程

开发小程序准备工作

官方网址:https://mp.weixin.qq.com/cgi-bin/wx?token=&lang=zh_CN

1、微信小程序注册
注册地址:https://mp.weixin.qq.com/wxopen/waregister?action=step1

2、 完善小程序信息
登录小程序后台:https://mp.weixin.qq.com/
完善小程序信息、小程序类目
在开发管理那查看小程序的 AppID

3、下载开发者工具
下载地址: https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html
创建小程序项目
在这里插入图片描述

设置不校验合法域名
在这里插入图片描述

小程序入门案例

小程序项目结构介绍

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:
在这里插入图片描述
**app.js:**必须存在,主要存放小程序的逻辑代码

**app.json:**必须存在,小程序配置文件,主要存放小程序的公共配置

app.wxss: 非必须存在,主要存放小程序公共样式表,类似于前端的CSS样式

对小程序主体三个文件了解后,其实一个小程序又有多个页面。比如说,有商品浏览页面、购物车的页面、订单支付的页面、商品的详情页面等等。那这些页面会放在哪呢?
会存放在pages目录。

每个小程序页面主要由四个文件组成:
在这里插入图片描述
**js文件:**必须存在,存放页面业务逻辑代码,编写的js代码。

**wxml文件:**必须存在,存放页面结构,主要是做页面布局,页面效果展示的,类似于HTML页面。

**json文件:**非必须,存放页面相关的配置。

**wxss文件:**非必须,存放页面样式表,相当于CSS文件。

编写代码

注意,需要把详情中的调试基础库改到2.27.x以下。且保持后端和redis服务端服务都在运行

index.wxml

<view class="container">
  <view>{{msg}}</view>
   <view>
    <button type="default" bindtap="getUserInfo">获取用户信息</button>
    <image style="width: 100px;height: 100px;" src="{{avatarUrl}}"></image>
    {{nickName}}
  </view>
   <view>
    <button type="primary" bindtap="wxlogin">微信登录</button>
    授权码:{{code}}
  </view>
   <view>
    <button type="warn" bindtap="sendRequest">发送请求</button>
    响应结果:{{result}}
  </view>
</view>

index.js

Page({
  data:{
    msg:'hello world',
    avatarUrl:'',
    nickName:'',
    code:'',
    result:''
  },
  getUserInfo:function(){
    wx.getUserProfile({
      desc: '获取用户信息',
      success:(res) => {
        console.log(res)
        this.setData({
          avatarUrl:res.userInfo.avatarUrl,
          nickName:res.userInfo.nickName
        })
      }
    })
  },
  wxlogin:function(){
    wx.login({
      success: (res) => {
        console.log("授权码:"+res.code)
        this.setData({
          code:res.code
        })
      }
    })
  },
  sendRequest:function(){
    wx.request({
      url: 'http://localhost:8080/user/shop/status',
      method:'GET',
      success:(res) => {
        console.log("响应结果:" + res.data.data)
        this.setData({
          result:res.data.data
        })
      }
    })
  }})

上传代码

点击上传按钮后填写版本号等资料,提示上传成功后进到微信公众平台,打开版本管理页面。可以看到当前开发版本中有刚刚上传的版本。
如果真的想要上线,需提交审核,变成审核版本,审核通过后,进行发布,变成线上版本。
一旦成为线上版本,这就说明小程序就已经发布上线了,微信用户就可以在微信里面去搜索和使用这个小程序了。

微信登陆

流程图

在这里插入图片描述

  1. 小程序端,调用wx.login()获取code,就是授权码。
  2. 小程序端,调用wx.request()发送请求并携带code,请求开发者服务器(自己编写的后端服务)。
  3. 开发者服务端,通过HttpClient向微信接口服务发送请求,并携带appId+appsecret+code三个参数。
  4. 开发者服务端,接收微信接口服务返回的数据,session_key+opendId等。opendId是微信用户的唯一标识。
  5. 开发者服务端,自定义登录态,生成令牌(token)和openid等数据返回给小程序端,方便后绪请求身份校验。
  6. 小程序端,收到自定义登录态,存储storage。
  7. 小程序端,后绪通过wx.request()发起业务请求时,携带token。
  8. 开发者服务端,收到请求后,通过携带的token,解析当前登录用户的id。
  9. 开发者服务端,身份校验通过后,继续相关的业务逻辑处理,最终返回业务数据。

接口设计 与表结构设计

官方接口:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当用户第一次使用小程序时,会完成自动注册,把用户信息存储到user表中。

字段名数据类型说明备注
idbigint主键自增
openidvarchar(45)微信用户的唯一标识
namevarchar(32)用户姓名
phonevarchar(11)手机号
sexvarchar(2)性别
id_numbervarchar(18)身份证号
avatarvarchar(500)微信用户头像路径
create_timedatetime注册时间

**说明:**手机号字段比较特殊,个人身份注册的小程序没有权限获取到微信用户的手机号。如果是以企业的资质
注册的小程序就能够拿到微信用户的手机号。

### 黑马苍穹外卖微信小程序概述 黑马苍穹外卖微信小程序是一个综合性的餐饮服务平台,主要提供在线订餐、支付以及配送服务等功能。此类应用通常基于微信公众平台开发,并遵循官方提供的指南和API接口[^1]。 #### 小程序注册与环境搭建 对于想要创建类似项目开发者来说,第一步是在微信公众平台上完成账号注册登录到管理后台进行相应设置。之后可以利用微信提供的开发者工具来构建应用程序原型,在本地环境中测试各项功能是否正常运作。 ```bash # 下载安装微信开发者工具 wget https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html ``` #### 应用架构设计 一个典型的外卖微信小程序会采用分层式的文件夹结构以便于管理和扩展: - `pages` 文件夹下放置各个页面组件; - `utils` 存放公共函数库; - `components` 收集可复用的小部件; - 配置和服务逻辑则分别位于根目录下的特定位置[^3]。 #### 功能模块分析 该类型的项目往往涉及多个核心业务流程,包括但不限于用户认证授权、菜单浏览选购、订单提交跟踪等环节。为了确保良好的用户体验,还需要特别关注性能优化方面的工作,比如图片懒加载机制的应用、网络请求次数的有效控制等等。 #### 技术选型建议 考虑到数据缓存的需求,可以选择合适的第三方库如Jedis/Lettuce/Spring Data Redis作为Redis客户端解决方案之一;而在前后端交互过程中,则推荐RESTful API风格的设计模式以简化通信协议[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shanshandeisu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值