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日
    28500
  • Node深入淺出(聖思園教育) 002【學習筆記】

    node 的包管理機制和加載機制 npm search xxxnpm view xxxnpm install xxx nodejs 文件系統操作的 api Node.js 的 fs 模塊提供同步(Sync)與基於回調/Promise 的異步 API,可以操作本地文件與目錄。日常開發中常用的能力包括讀取、寫入、追加、刪除、遍歷目錄、監聽變化等。以下示例基於 C…

    個人 2025年11月24日
    31800
簡體中文 繁體中文 English