Skip to content
💻程式#112進階金字塔 · 做
工程師顧問Claude CodeCodexClaude.ai#API整合#技術規格#串接設計

API 整合規格產生器

用途

把第三方 API 文件丟給 AI,讓它產出認證設定、主要 Endpoint 表、可執行程式碼骨架(含錯誤處理)與 Rate Limit 注意事項,讓你跳過翻文件的苦差事直接開始整合。

何時用

  • 適合:要快速串接第三方 API(金流、簡訊、物流、地圖等),想讓 AI 先讀文件產出整合骨架,再由工程師填入業務邏輯時。
  • 不要用:既有串接已在運作但出問題需要除錯——那時用「Debug 根因分析」更直接;也不要用在你自己要設計的 API(那是 API 設計題,不是整合題)。

Prompt

text
請根據以下資訊,幫我產出完整的 API 整合規格。

API 用途:{{這個 API 是做什麼的,例:台灣電子發票 API,用來開立 B2C 發票}}
語言與框架:{{例:Python 3.12 + FastAPI}}
API 文件關鍵段落:
{{貼上 API 文件的認證方式、主要 endpoint、請求/回應格式}}
使用場景:{{你要在什麼時機呼叫這個 API,例:訂單完成後自動開立發票}}

請輸出以下四個部分:

**1. Authentication 設定**
- 認證方式(API Key / OAuth / JWT / ...)
- 環境變數清單(列出需要設定哪些 env vars,不要把真實值寫進程式碼)
- 初始化範例程式碼

**2. 主要 Endpoint 表**
| Endpoint | 方法 | 用途 | 必填參數 | 回應格式 |

**3. 可執行程式碼範例**
- 至少一個完整的呼叫範例,含錯誤處理(4xx / 5xx 分開處理)
- 程式碼要能直接複製貼上執行,不要用假的 placeholder 函式

**4. 常見失敗場景與 Rate Limit**
- 列出至少 3 種常見錯誤回應與處理方式
- Rate Limit 上限與建議的 retry 策略

範例 / 變體

  • 填好變數:API 用途填 台灣電子發票 API(綠界科技)、語言框架填 Python 3.12 + FastAPI、使用場景填 訂單完成後 webhook 觸發開立 B2C 發票、API 文件段落填入官方文件的認證與 Endpoint 部分。
  • 變體(n8n 整合版):語言框架改為 n8n HTTP Request 節點,請 AI 輸出的不是 Python 程式碼,而是 n8n HTTP Request 節點的欄位設定(Method / URL / Headers / Body)。
  • 變體(只要 Endpoint 表):在 prompt 後加「只輸出第 2 部分 Endpoint 表就好,其他略過」,快速掃描 API 涵蓋範圍。

🎯 範例輸出(實測)

Claude.ai 跑這句、把 {{API 用途}} 填成「台灣電子發票 API(綠界科技 ECPay)」、語言框架填「Python 3.12 + FastAPI」、使用場景填「訂單完成後 webhook 觸發開立 B2C 發票」的結果:

點開看 AI 實際輸出

1. Authentication 設定

認證方式:API Key + HashKey/HashIV(SHA-256 簽章驗證)

環境變數清單:

text
ECPAY_MERCHANT_ID=...
ECPAY_HASH_KEY=...
ECPAY_HASH_IV=...
ECPAY_API_URL=https://einvoice.ecpay.com.tw/B2CInvoice/Issue

初始化範例:

text
import hashlib, os
from urllib.parse import urlencode

def sign_payload(params: dict) -> str:
    raw = "HashKey=" + os.environ["ECPAY_HASH_KEY"]
    raw += "&" + urlencode(sorted(params.items()))
    raw += "&HashIV=" + os.environ["ECPAY_HASH_IV"]
    return hashlib.sha256(raw.lower().encode()).hexdigest().upper()

2. 主要 Endpoint 表

Endpoint方法用途必填參數回應格式
/B2CInvoice/IssuePOST開立發票MerchantID, RelateNumber, CustomerEmail, SalesAmountJSON
/B2CInvoice/GetIssuePOST查詢發票MerchantID, RelateNumberJSON
/B2CInvoice/VoidPOST作廢發票MerchantID, InvoiceNumber, VoidReasonJSON

3. 可執行程式碼範例

text
import httpx
from fastapi import HTTPException

async def issue_invoice(order_id: str, amount: int, email: str) -> dict:
    payload = {
        "MerchantID": os.environ["ECPAY_MERCHANT_ID"],
        "RelateNumber": order_id,
        "CustomerEmail": email,
        "SalesAmount": amount,
        "InvType": "07",  # B2C 一般發票
        "TaxType": "1",   # 應稅
    }
    payload["CheckMacValue"] = sign_payload(payload)

    async with httpx.AsyncClient() as client:
        resp = await client.post(os.environ["ECPAY_API_URL"], data=payload, timeout=10)
        resp.raise_for_status()  # 5xx → 拋出 HTTPStatusError

    result = dict(x.split("=") for x in resp.text.split("&"))
    if result.get("RtnCode") != "1":
        # 4xx 業務錯誤(非 HTTP 錯誤)
        raise HTTPException(status_code=400, detail=f"發票開立失敗:{result.get('RtnMsg')}")
    return result

4. 常見失敗場景與 Rate Limit

錯誤代碼說明處理方式
RtnCode=10000001簽章驗證失敗檢查 HashKey/IV 環境變數,重新產生簽章
RtnCode=10200047重複 RelateNumber訂單號已開過發票,查詢後回傳既有發票號
HTTP 503ECPay 維護中Exponential backoff,最多重試 3 次,間隔 2/4/8 秒

Rate Limit:建議每分鐘不超過 60 次呼叫;Retry 策略採指數退避,建議 jitter ±500ms 避免雪崩。

💡 實測心得:把 API 文件的「認證方式」段落貼進去比貼整份文件效果更好——貼整份文件 AI 容易產出不必要的 endpoint;只貼關鍵段落讓輸出更聚焦,工程師調整時間也短。

延伸

簡單來說,這道 prompt 把「翻 API 文件 + 寫整合骨架」這兩件耗時的事交給 AI 做,讓工程師專注在業務邏輯。但 AI 不一定了解你的完整業務脈絡,所以「使用場景」那一欄要填清楚——一樣是金流 API,「結帳時即時授權」和「訂單完成後開發票」的呼叫時機和錯誤處理策略會差很多。

依場景分類 · 一鍵複製 · 持續擴充