整體流程圖
開發者 → 1.註冊賬號/創建應用 → 2.簽約接口權限 → 3.配置密鑰(應用私鑰/支付寶公鑰)
→ 4.調用 SDK/HTTP 請求 → 5.支付寶網關驗簽/業務處理 → 6.返回簽名響應 → 7.驗簽解析業務數據
關鍵步驟詳解
- 沙箱環境調試:
https://openhome.alipay.com/platform/appDaily.htm?tab=info 獲取沙箱 AppID、私鑰,無需實名認證即可測試全流程。
- 請求參數構建(以
alipay.user.get 為例):
AlipayClient client = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do",
APP_ID, APP_PRIVATE_KEY, "json", "UTF-8", ALIPAY_PUBLIC_KEY, "RSA2");
AlipayUserGetRequest request = new AlipayUserGetRequest();
request.setBizContent("{\"auth_token\":\"用戶授權token\"}");
AlipayUserGetResponse response = client.execute(request);
- 參數來源:
app_id:應用創建後自動分配。
auth_token:用戶通過「授權登錄」獲取(OAuth2.0 授權碼模式)。
sign:SDK 自動使用應用私鑰簽名,開發者無需手動計算。
- 響應處理:
if (response.isSuccess()) {
String userId = response.getUserId();
String nickName = response.getNickName();
// 業務邏輯...
} else {
log.error("調用失敗: " + response.getSubMsg());
}
常見坑與避坑指南
| 坑點 | 表現 | 解決 |
| 密鑰配置反了 | 驗簽失敗 40004 | 應用私鑰簽請求,支付寶公鑰驗響應 |
| 字符集不一致 | 中文亂碼/簽名錯誤 | 全鏈路 UTF-8,URL 編碼用 UTF-8 |
| 沙箱/線上環境混用 | AppID 不匹配 | 嚴格區分沙箱 AppID 與線上 AppID |
| 未簽約接口 | 40006 權限不足 | 開放平台「接口簽約」頁面勾選所需接口 |
最佳實踐
- **不要手拼 HTTP 請求**,直接用官方 Java/PHP/Python/Node.js SDK,自動處理簽名、加密、重試。
- 核心參數(AppID、私鑰)放配置中心/環境變量,**嚴禁寫死代碼**。
- 關鍵日誌(請求/響應全量、耗時)必須記錄,便於排查糾紛。