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日
    31900
簡體中文 繁體中文 English