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://joyjs.cn/archives/4781

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

相关推荐

  • 深入理解ES6 006【学习笔记】

    Symbol和Symbol属性 第6种原始数据类型:Symbol。私有名称原本是为了让开发者们创建非字符串属性名称而设计的,但是一般的技术无法检测这些属性的私有名称 创建Symbol let firstName = Symbol(); let person = {} person[firstName] = "Nicholas"; cons…

    个人 2025年3月8日
    1.2K00
  • Go工程师体系课 007【学习笔记】

    商品微服务 实体结构说明 本模块包含以下核心实体: 商品(Goods) 商品分类(Category) 品牌(Brands) 轮播图(Banner) 品牌分类(GoodsCategoryBrand) 1. 商品(Goods) 描述平台中实际展示和销售的商品信息。 字段说明 字段名 类型 说明 name String 商品名称,必填 brand Pointer …

    个人 2025年11月25日
    17300
  • Go工程师体系课 017【学习笔记】

    限流、熔断与降级入门(含 Sentinel 实战) 结合课件第 3 章(3-1 ~ 3-9)的视频要点,整理一套面向初学者的服务保护指南,帮助理解“为什么需要限流、熔断和降级”,以及如何用 Sentinel 快速上手。 学习路线速览 3-1 理解服务雪崩与限流、熔断、降级的背景 3-2 Sentinel 与 Hystrix 对比,明确技术选型 3-3 Sen…

    个人 2025年11月25日
    14400
  • 无畏前行,拳释力量 🥊💪

    拼搏,是一种态度 生活就像一场比赛,没有捷径可走,只有不断训练、突破、超越,才能站上属于自己的舞台。这不仅是一种对抗,更是一种自我的觉醒——敢于迎战,敢于挑战,敢于成为更强的自己。 运动中的拼搏精神 无论是拳击、跑步,还是力量训练,每一次出拳、每一次挥汗、每一次咬牙坚持,都是对身体与心灵的磨炼。拼搏不是单纯的对抗,而是一种态度——面对挑战,不退缩;面对失败,…

    个人 2025年2月26日
    1.2K00
  • 热爱运动,挑战极限,拥抱自然

    热爱 在这个快节奏的时代,我们被工作、生活的压力所包围,常常忽略了身体的需求。而运动,不仅仅是一种健身方式,更是一种释放自我、挑战极限、与自然共舞的生活态度。无论是滑雪、攀岩、冲浪,还是跑步、骑行、瑜伽,每一种运动都能让我们找到内心的激情,感受到生命的跃动。 运动是一场自我挑战 挑战极限,不仅仅是职业运动员的专属,而是每一个热爱运动的人都可以追求的目标。它可…

    个人 2025年2月26日
    1.3K00

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
欢迎🌹 Coding never stops, keep learning! 💡💻 光临🌹