訂單及購物車
先從庫存服務中將 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:產生支付請求(關鍵安全步驟)
商家系統處理:
- 接收使用者訂單資訊
- 建構支付參數(訂單號、金額、商品資訊等)
- 使用商家私密金鑰對支付請求進行數位簽章
- 將簽章後的請求發送給支付寶
支付寶驗證:
- 接收商家的支付請求
- 使用商家公開金鑰驗證請求簽章
- 檢查「這個請求是否可信任」
- 驗證通過後,產生支付 URL
- 將支付 URL 返回給商家系統
安全機制說明:
- 數位簽章確保請求來自合法商家
- 防止惡意第三方偽造支付請求
- 保證請求資料在傳輸過程中未被竄改
步驟 3:使用者支付
- 商家系統將支付 URL 返回給瀏覽器
- 瀏覽器自動跳轉到支付寶支付頁面
- 使用者在支付寶頁面完成支付操作(輸入密碼、選擇支付方式等)
步驟 4:支付結果通知(關鍵安全步驟)
支付寶處理:
- 處理使用者支付操作
- 產生支付結果通知
- 使用支付寶私密金鑰對通知進行數位簽章
- 將簽章後的通知發送給商家系統
商家系統驗證:
- 接收支付寶的支付通知
- 使用支付寶公開金鑰驗證通知簽章
- 確認通知來自支付寶官方
- 驗證支付結果和訂單資訊
- 更新訂單狀態,完成交易
安全機制說明:
- 數位簽章確保通知來自支付寶官方
- 防止惡意第三方偽造支付成功通知
- 保證支付結果資料的真實性和完整性
數位簽章工作原理
數位簽章的本質:
- 使用私密金鑰對資料進行加密,產生「簽章」
- 使用對應的公開金鑰驗證簽章,確認資料來源和完整性
- 就像現實中的手寫簽名,但更加安全和不可偽造
在支付流程中的應用:
- 商家簽章:商家用私密金鑰簽章 → 支付寶用商家公開金鑰驗證
- 支付寶簽章:支付寶用私密金鑰簽章 → 商家用支付寶公開金鑰驗證
安全防護機制
防偽造攻擊:
- 沒有私密金鑰無法產生有效簽章
- 公開金鑰只能驗證,不能偽造簽章
防竄改攻擊:
- 資料被修改後,簽章驗證會失敗
- 確保傳輸過程中的資料完整性
防重放攻擊:
- 通常配合時間戳和亂數使用
- 防止惡意重複提交相同的支付請求
加密技術應用
- 對稱加密:用於大量支付資料的快速加密傳輸
- 非對稱加密:用於數位簽章和身份驗證
- 公開金鑰驗證:確保通訊雙方的真實性和資料完整性
支付寶開發平台
環境配置
沙箱環境(測試)
- 使用支付寶沙箱環境進行測試
- 配置沙箱應用 ID 和金鑰
- 設定回呼通知地址
生產環境
- 申請正式應用並審核通過
- 配置正式環境金鑰
- 設定 HTTPS 回呼地址
接入注意事項
- 金鑰管理
- 妥善保管應用私密金鑰,不能洩露
- 定期更換金鑰
- 使用環境變數儲存敏感資訊
- 通訊安全
- 所有介面呼叫必須使用 HTTPS
- 驗證支付寶公開金鑰的真實性
- 對敏感資料進行加密傳輸
- 資料驗證
- 驗證支付通知的簽章
- 檢查訂單金額和狀態
- 防止重複處理通知
沙箱環境的公開金鑰和私密金鑰
主題測試文章,只做測試使用。發佈者:Walker,轉轉請注明出處:https://walker-learn.xyz/archives/4781