微信小程序 APP 登录 支付的区别
🤖 微信小程序、APP及微信支付中各种凭证的作用与逻辑
微信生态体系使用多种凭证(如code、access_token)来实现身份验证、授权和数据安全访问。这些凭证在调用API时形成一套标准化流程,确保用户隐私和系统安全:
-
Code(临时登录凭证):
- 由小程序或APP前端通过
wx.login()接口生成,有效期约5分钟。 - 作用:作为一次性凭证,传递给后端以换取用户的openid和session_key,避免直接暴露用户敏感信息。
- 逻辑:用户点击登录时触发,前端获取code后发送至业务服务器。
- 由小程序或APP前端通过
-
Access Token(访问令牌):
- 是全局唯一的后台接口调用凭据,用于代表小程序或APP调用微信API(如获取用户信息、支付接口)。
- 获取方式:后端使用appid和appsecret向微信服务器请求生成(例如调用
getAccessToken接口),需妥善存储且不可泄露给前端。 - 作用:身份验证和授权,例如微信支付预下单、数据分析等需权限的操作。
-
OpenID(用户唯一标识):
- 通过后端用code换取,用于标识用户在当前小程序或APP中的唯一身份。
- 作用:关联业务系统用户数据(如订单记录),同一用户在不同小程序中openid不同。
-
Session Key(会话密钥):
- 由后端在换取openid时一并获取,用于解密前端加密数据(如用户手机号)。
- 特点:后端存储,前端不可见;失效条件包括用户重新登录或长时间未使用。
-
UnionID(跨应用统一ID):
- 当小程序绑定微信开放平台时生成,用于同一用户在多个微信应用(如公众号、APP)中的统一标识。
- 作用:打通多应用用户体系,需用户授权相关应用。
🔄 整体调用逻辑时序
-
登录流程:
- 前端调用
wx.login()获取code并传给后端。 - 后端使用code、appid、appsecret调用微信
code2Session接口,换取openid和session_key。 - 后端根据openid创建或关联用户账号,并生成自定义登录态(如session token)供后续业务使用。
- 前端调用
-
支付与API调用:
- 支付等敏感操作需后端先获取access_token(通过appid和appsecret)。
- 调用支付接口时,后端将access_token作为参数传递,确保请求合法性。
️ 安全要点
- Access token和session key必须由后端维护,前端仅处理code和用户交互。
- 定期更新access token(微信建议2小时刷新),避免泄露导致未授权访问。
引用链接:
1.accessToken是啥意思 - 蜜瓜文库姬
2.如何实现微信小程序调用api? - 中二少年学编程
3.微信登陆、支付、事件监听等常见小程序接口调用讲解 - 腾讯云
4.服务端 API - 微信公众平台
5.讨论微信小程序的session_key和access_token的作用 - 掘金开发者社区
6.微信小程序登陆/注册的后端逻辑 - CSDN博客
7.微信小程序 接口调用讲解 (AccessToken、小程序码登录) - 腾讯云
8.微信登录的“时间魔法”:双Token机制无感续期背后的安全博弈 - 哔哩哔哩
9.微信外部APP打开微信小程序 - 知乎
10.微信小程序开发实战:AccessToken管理与小程序码生成_微信小程序码生成-CSDN博客 - CSDN博客
11.微信支付的信任逻辑 - 雪球
12.微信小程序开发框架与组件高效应用实践 - 红点云租租赁系统
13.接入流程 - 微信支付
14.微信小程序组件与API高效开发实战 - 红点云租租赁系统
15.微信支付实名信息小程序授权接口能力【监管原因,暂停开放】官方 - 微信开放社区
16.实名验证(公众号) - 微信支付
17.微信授权全链路打通指南 - 空间实验室
18.微信登录、支付及监听事件等常用接口的使用指南 - 知乎 - 知乎用户Lx9qBx
19.微信开放文档 - 微信开放社区
20.微信小程序-详解微信登陆、微信支付、模板消息 - CSDN博客
21.一文读懂小程序支付流程 - 支付宝开放平台
22.微信小程序开发:appid和secret的获取方法 - 腾讯云
23.uni-app支付功能实现-支付宝支付功能-微信支付-小程序支付 - 哔哩哔哩
24.微信、支付宝小程序如何运作?前端与后端揭秘 - 度小视
25.uniapp商城微信小程序,企业实战项目,完整支付流程。 - 哔哩哔哩
26.【2025】微信小程序开发教程,真正适合零基础小白的微信小程序实战课程,从零基础到项目发布全流程,带你一天速通微信小程序,学完即可创建属于自己的小程序! - 哔哩哔哩
27.微信小程序如何开发制作?企业为什么要开发小程序?微笑小程序开发制作攻略! - 分媒互动
以下是微信小程序与原生APP在登录流程和支付环节的核心区别对比,结合微信生态技术规范整理:
📱 登录流程对比
| 环节 | 微信小程序 | 原生APP |
|---|---|---|
| 1. 获取凭证 | 调用 wx.login() 直接生成临时登录凭证 code(5分钟有效) |
需构造OAuth2.0授权链接跳转(如 snsapi_base静默授权或 snsapi_privateinfo手动授权) |
| 2. 用户授权 | 前端调用 wx.getUserInfo 触发弹窗授权(需用户主动确认) |
授权页面由微信服务器提供,用户同意后返回 code 至回调链接 |
| 3. 换取身份标识 | 后端用 code + appid + secret 请求微信接口,返回 openid 和 session_key | 后端用 code + appid + secret 换取 access_token 和用户 UserId |
| 4. 登录态管理 | 依赖微信封闭环境自动维护会话,session_key 用于解密数据 | 需手动维护登录态(如生成自定义Token存储于客户端) |
💳 支付流程对比
| 环节 | 微信小程序 | 原生APP |
|---|---|---|
| 1. 预支付请求 | 前端调用 wx.requestPayment(),后端需用 access_token 调微信统一下单接口生成支付参数 |
需集成微信SDK(如Android的 IWXAPI),后端同样需 access_token 生成预支付订单 |
| 2. 安全校验 | 支付签名由后端计算,前端仅传递参数 | 需处理商户密钥签名,且需防范中间人攻击(如APK反编译风险) |
| 3. 环境依赖 | 强制在微信客户端内完成支付 | 需依赖用户手机安装的微信客户端 |
⚠️ 关键差异总结
-
开发复杂度
- 小程序:流程标准化,无需处理域名校验和跨域。
- APP:需独立实现OAuth2.0授权跳转、签名校验及多端兼容。
-
用户隐私获取
- 小程序:通过
wx.getUserInfo直接获取加密数据,需后端用 session_key 解密。 - APP:用户信息包含在授权后返回的 access_token 中。
- 小程序:通过
-
安全性
- 小程序:封闭环境降低中间人攻击风险,但需保护 session_key。
- APP:需严格保护 appsecret,避免源码泄露导致令牌被盗。
注:两者均需后端维护 access_token(2小时刷新),用于调用微信API(如支付、消息推送)。
如需完整时序图或代码示例,可进一步说明具体场景。
引用链接:
1.生成普通 access_token - 微信开放社区
2.微信小程序获取登录用户信息、openid和access_token_openid和access token-CSDN博客 - CSDN博客
3.微信access_token、appid、appsecret区别 - CSDN博客
4.企业微信小程序与H5应用登录对接流程区别 - 上海天正信息科技有限公司
5.讨论微信小程序的session_key和access_token的作用 - 掘金开发者社区
6.微信登陆、支付、事件监听等常见小程序接口调用讲解 - 腾讯云
7.微信小程序开发:实现微信授权登录技术全攻略 - CSDN博客
8.授权码与Access Token的区别详解 - CSDN博客
9.微信小程序 接口调用讲解 (AccessToken、小程序码登录) - 腾讯云
10.微信登录的“时间魔法”:双Token机制无感续期背后的安全博弈 - 哔哩哔哩
11.微信小程序认证怎么操作 - 数界信使
12.微信小程序认证 - 文狐游港岛
13.小程序认证 - 通讯探索者
14.小程序账号认证流程详解:费用、资料与步骤全解析 - 度小视
15.微信小程序认证全流程详解,快速上手操作步骤 - 萌呀呀
16.微信小程序认证全流程,如何避免支付费用 - 栖舟.
17.生物认证 - 微信开放社区
18.小程序token百科-如何利用小程序获取AccessToken? - HiShop
19.对微信公众号Access_Token的一点心得 - 微信开放社区
20.Web、APP和小程序账户登录机制差异 - 孤竹
21.微信支付实名信息小程序授权接口能力【监管原因,暂停开放】官方 - 微信开放社区
22.彻底理解 Cookie、Session、Token、JWT这些登录授权方法 - 腾讯云
浙公网安备 33010602011771号