以優質 DX 為目標,提供台灣金流的統一操作介面。
- 單一指令介面操作多家金流(先支援 PAYUNi)
- 統一欄位模型與自動映射
- 同時支援 env、config 檔、CLI flags
- 完整 help 便於 AI 呼叫
- 與 paid‑tw OAuth 整合
# 1) 設定環境變數
export PAYUNI_MERCHANT_ID=your_merchant_id
export PAYUNI_HASH_KEY=your_hash_key
export PAYUNI_HASH_IV=your_hash_iv
# CLI 預設使用正式環境;如需測試請改為 true
export PAYUNI_SANDBOX=true
# 2) 免安裝快速檢查
npx @paid-tw/cli doctor --provider=payuni
# 3) 查詢交易
npx @paid-tw/cli payments get --provider=payuni --id=ORDER-123# 即將推出# 即將推出paid doctor --provider=payunipaid providers listpaid payments create --provider=payuni --amount=100 --currency=TWD --method=card --order-id=...paid payments get --provider=payuni --id=...paid payments refund --provider=payuni --id=... --amount=...paid config set --provider=payuni --merchant-id=...paid config get --provider=payuni
paid‑tw 相關功能會以 paid tw ... 提供,包含 OAuth 登入與雲端加值服務。
paid tw auth login(選用,僅 paid‑tw 功能需要)paid tw auth status(選用,僅 paid‑tw 功能需要)
- CLI flags
- 環境變數
~/.config/paid/config.toml
defaultProvider = "payuni"
outputFormat = "json"
[providers.payuni]
merchantId = "MS12345678"
hashKey = "your_hash_key"
hashIv = "your_hash_iv"
sandbox = true--provider.env- 系統環境變數
config.toml的defaultProvider- 若只設定一個
providers,自動使用該 provider
paid payments get 支援 --format=json|pretty,也可用 config.toml 設定 outputFormat 作為預設值。
PAID_DEFAULT_PROVIDER=payuni
PAID_ENV=sandbox
PAYUNI_MERCHANT_ID=MS12345678
PAYUNI_HASH_KEY=your_hash_key
PAYUNI_HASH_IV=your_hash_iv
PAYUNI_SANDBOX=true若專案根目錄存在 .env,paid 會優先讀取並覆蓋系統環境變數。
paid --help
paid tw --help
paid payments --help
paid payments create --help
paid tw auth --help
paid config --help
paid doctor --help
paid providers ping --help若需要使用 paid‑tw 平台提供的額外服務(例如 OAuth 登入、後續的雲端功能),使用 paid tw ... 子命令。
僅在使用 paid‑tw 平台功能時需要登入。若只是把 paid 當作本地金流 CLI 使用,可忽略此段落。
paid tw auth loginpaid tw auth status快速檢查環境變數與設定是否完整。
paid doctor --provider=payuni各金流的細節說明與錯誤碼請參考對應文件。
- PAYUNi 交易查詢:
cli/docs/payuni/trade-query.md
{
"provider": "payuni",
"id": "9f2c...a1b0",
"status": "created",
"raw": {
"ok": false,
"message": "PAYUNi createPayment 尚未實作",
"input": { "..." : "..." }
}
}{
"provider": "payuni",
"id": "Ax234234jisdi",
"status": "fetched",
"raw": {
"ok": false,
"message": "PAYUNi getPayment 尚未實作",
"input": { "..." : "..." }
}
}{
"provider": "payuni",
"id": "Ax234234jisdi",
"status": "refunded",
"raw": {
"ok": false,
"message": "PAYUNi refundPayment 尚未實作",
"input": { "..." : "..." }
}
}npm i
npm run dev -- --helpnpm i -g @paid-tw/cli
paid --helpnpm run buildcli/
src/
commands/
core/
providers/