Go工程师体系课 008【学习笔记】

订单及购物车

先从库存服务中将 srv 的服务代码框架复制过来,查找替换对应的名称(order_srv)

加密技术基础

对称加密(Symmetric Encryption)

原理:

  • 使用同一个密钥进行加密和解密
  • 就像一把钥匙,既能锁门也能开门
  • 加密速度快,适合大量数据传输

使用场景:

  • 本地文件加密
  • 数据库内容加密
  • 大量数据传输时的内容加密
  • 内部系统间的快速通信

优缺点:

  • ✅ 速度快,效率高
  • ❌ 密钥分发困难,容易被截获

非对称加密(Asymmetric Encryption)

原理:

  • 使用一对密钥:公钥和私钥
  • 公钥加密的内容只能用私钥解密
  • 私钥签名的内容可以用公钥验证
  • 就像邮箱地址(公钥)和密码(私钥)

使用场景:

  • 数字签名验证身份
  • 安全传输对称加密的密钥
  • HTTPS 证书验证
  • 区块链交易签名

优缺点:

  • ✅ 安全性高,密钥分发安全
  • ❌ 速度慢,不适合大量数据

支付宝支付流程详细解析

支付流程图

graph TD
    A[用户浏览器] -->|1. 下订单| B[慕学生鲜商户系统]
    B -->|2. 返回支付URL| A
    A -->|3. 跳转支付宝支付| C[支付宝支付平台]
    B -->|发起支付请求| C

    subgraph "商户端密钥管理"
        D[商户私钥<br/>自己留着]
        E[商户公钥<br/>给支付宝]
    end

    subgraph "支付宝端密钥管理"
        F[支付宝私钥<br/>严格保密]
        G[支付宝公钥<br/>给商户]
    end

    subgraph "安全验证机制"
        H[数字签名验证]
        I[请求可信度检查]
        J[通知真实性验证]
    end

    B -.->|使用私钥签名| D
    C -.->|使用公钥验证| E
    C -.->|使用私钥签名| F
    B -.->|使用公钥验证| G

    C -->|4. 支付结果通知| B

    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#e8f5e8
    style D fill:#ffebee
    style E fill:#fff3e0
    style F fill:#ffebee
    style G fill:#fff3e0
    style H fill:#f1f8e9
    style I fill:#f1f8e9
    style J fill:#f1f8e9

系统架构和参与者

三个核心角色:

  • 浏览器(Browser):用户端,负责用户交互
  • 慕学生鲜(商户系统):电商平台的后端服务
  • 支付宝(Alipay):第三方支付平台

密钥管理体系(非对称加密的核心)

商户端密钥管理

  • 私钥(秘钥 - 自己留着)
  • 商户严格保密,绝不外泄
  • 用于对发送给支付宝的请求进行数字签名
  • 证明请求确实来自该商户
  • 公钥(公钥 - 给支付宝)
  • 提供给支付宝平台
  • 支付宝用它来验证商户请求的签名
  • 确保请求的真实性和完整性

支付宝端密钥管理

  • 私钥(秘钥)
  • 支付宝严格保密
  • 用于对支付通知进行数字签名
  • 证明通知确实来自支付宝官方
  • 公钥(公钥 - 给自己的)
  • 提供给商户系统
  • 商户用它来验证支付宝通知的签名
  • 确保支付结果通知的真实性

详细支付流程步骤

步骤 1:用户下单

  • 用户在浏览器中浏览商品
  • 选择商品并提交订单
  • 浏览器向商户系统发送订单请求

步骤 2:生成支付请求(关键安全步骤)

商户系统处理:

  1. 接收用户订单信息
  2. 构造支付参数(订单号、金额、商品信息等)
  3. 使用商户私钥对支付请求进行数字签名
  4. 将签名后的请求发送给支付宝

支付宝验证:

  1. 接收商户的支付请求
  2. 使用商户公钥验证请求签名
  3. 检查"这个请求是否可信任"
  4. 验证通过后,生成支付 URL
  5. 将支付 URL 返回给商户系统

安全机制说明:

  • 数字签名确保请求来自合法商户
  • 防止恶意第三方伪造支付请求
  • 保证请求数据在传输过程中未被篡改

步骤 3:用户支付

  • 商户系统将支付 URL 返回给浏览器
  • 浏览器自动跳转到支付宝支付页面
  • 用户在支付宝页面完成支付操作(输入密码、选择支付方式等)

步骤 4:支付结果通知(关键安全步骤)

支付宝处理:

  1. 处理用户支付操作
  2. 生成支付结果通知
  3. 使用支付宝私钥对通知进行数字签名
  4. 将签名后的通知发送给商户系统

商户系统验证:

  1. 接收支付宝的支付通知
  2. 使用支付宝公钥验证通知签名
  3. 确认通知来自支付宝官方
  4. 验证支付结果和订单信息
  5. 更新订单状态,完成交易

安全机制说明:

  • 数字签名确保通知来自支付宝官方
  • 防止恶意第三方伪造支付成功通知
  • 保证支付结果数据的真实性和完整性

数字签名工作原理

数字签名的本质:

  • 使用私钥对数据进行加密,生成"签名"
  • 使用对应的公钥验证签名,确认数据来源和完整性
  • 就像现实中的手写签名,但更加安全和不可伪造

在支付流程中的应用:

  1. 商户签名:商户用私钥签名 → 支付宝用商户公钥验证
  2. 支付宝签名:支付宝用私钥签名 → 商户用支付宝公钥验证

安全防护机制

防伪造攻击:

  • 没有私钥无法生成有效签名
  • 公钥只能验证,不能伪造签名

防篡改攻击:

  • 数据被修改后,签名验证会失败
  • 确保传输过程中的数据完整性

防重放攻击:

  • 通常配合时间戳和随机数使用
  • 防止恶意重复提交相同的支付请求

加密技术应用

  • 对称加密:用于大量支付数据的快速加密传输
  • 非对称加密:用于数字签名和身份验证
  • 公钥验证:确保通信双方的真实性和数据完整性

支付宝开发平台

环境配置

沙箱环境(测试)

  • 使用支付宝沙箱环境进行测试
  • 配置沙箱应用 ID 和密钥
  • 设置回调通知地址

生产环境

  • 申请正式应用并审核通过
  • 配置正式环境密钥
  • 设置 HTTPS 回调地址

接入注意事项

  1. 密钥管理
  2. 妥善保管应用私钥,不能泄露
  3. 定期更换密钥
  4. 使用环境变量存储敏感信息
  5. 通信安全
  6. 所有接口调用必须使用 HTTPS
  7. 验证支付宝公钥的真实性
  8. 对敏感数据进行加密传输
  9. 数据验证
  10. 验证支付通知的签名
  11. 检查订单金额和状态
  12. 防止重复处理通知

沙箱环境的公钥和私钥

主题测试文章,只做测试使用。发布者:Walker,转转请注明出处:https://www.walker-learn.xyz/archives/4781

(0)
Walker的头像Walker
上一篇 2025年11月25日 09:00
下一篇 2025年11月25日 06:00

相关推荐

  • Go工程师体系课 protoc-gen-validate【学习笔记】

    protoc-gen-validate 简介与使用指南 ✅ 什么是 protoc-gen-validate protoc-gen-validate(简称 PGV)是一个 Protocol Buffers 插件,用于在生成的 Go 代码中添加结构体字段的验证逻辑。 它通过在 .proto 文件中添加 validate 规则,自动为每个字段生成验证代码,避免你手…

    个人 2025年11月25日
    1.4K00
  • 深入理解ES6 003【学习笔记】

    函数 参数默认值,以及一些关于arguments对象,如何使用表达式作为参数、参数的临时死区。 以前设置默认值总是利用在含有逻辑或操作符的表达式中,前一个值是false时,总是返回后面一个的值,但如果我们给参数传0时,就有些麻烦。需要去验证一下类型 function makeRequest(url,timeout,callback){ timeout = t…

    个人 2025年3月8日
    1.3K00
  • 向世界挥手,拥抱无限可能 🌍✨

    站得更高,看到更远 生活就像一座座高楼,我们不断向上攀登,不是为了炫耀高度,而是为了看到更广阔的风景。图中的两位女孩站在城市之巅,伸展双手,仿佛在迎接世界的无限可能。这不仅是一次俯瞰城市的旅程,更是对自由和梦想的礼赞。 勇敢探索,突破边界 每个人的生活都是一场冒险,我们生而自由,就该去探索未知的风景,去经历更多的故事。或许路途中会有挑战,但正是那些攀爬的瞬间…

    个人 2025年2月26日
    1.4K00
  • Go工程师体系课 004【学习笔记】

    需求分析 后台管理系统 商品管理 商品列表 商品分类 品牌管理 品牌分类 订单管理 订单列表 用户信息管理 用户列表 用户地址 用户留言 轮播图管理 电商系统 登录页面 首页 商品搜索 商品分类导航 轮播图展示 推荐商品展示 商品详情页 商品图片展示 商品描述 商品规格选择 加入购物车 购物车 商品列表 数量调整 删除商品 结算功能 用户中心 订单中心 我的…

    2025年11月25日
    28600
  • Node深入浅出(圣思园教育) 002【学习笔记】

    node 的包管理机制和加载机制 npm search xxxnpm view xxxnpm install xxx nodejs 文件系统操作的 api Node.js 的 fs 模块提供同步(Sync)与基于回调/Promise 的异步 API,可以操作本地文件与目录。日常开发中常用的能力包括读取、写入、追加、删除、遍历目录、监听变化等。以下示例基于 C…

    个人 2025年11月24日
    32000
简体中文 繁体中文 English