taiwan-payment-skill 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +197 -0
  2. package/assets/taiwan-payment/CLAUDE.md +297 -0
  3. package/assets/taiwan-payment/EXAMPLES.md +1425 -0
  4. package/assets/taiwan-payment/README.md +306 -0
  5. package/assets/taiwan-payment/SKILL.md +857 -0
  6. package/assets/taiwan-payment/data/error-codes.csv +20 -0
  7. package/assets/taiwan-payment/data/field-mappings.csv +15 -0
  8. package/assets/taiwan-payment/data/operations.csv +8 -0
  9. package/assets/taiwan-payment/data/payment-methods.csv +24 -0
  10. package/assets/taiwan-payment/data/providers.csv +4 -0
  11. package/assets/taiwan-payment/data/reasoning.csv +32 -0
  12. package/assets/taiwan-payment/data/troubleshooting.csv +18 -0
  13. package/assets/taiwan-payment/references/ecpay-payment-api.md +880 -0
  14. package/assets/taiwan-payment/references/newebpay-payment-api.md +677 -0
  15. package/assets/taiwan-payment/references/payuni-payment-api.md +997 -0
  16. package/assets/taiwan-payment/scripts/core.py +288 -0
  17. package/assets/taiwan-payment/scripts/recommend.py +269 -0
  18. package/assets/taiwan-payment/scripts/search.py +185 -0
  19. package/assets/taiwan-payment/scripts/test_payment.py +358 -0
  20. package/assets/templates/base/quick-reference.md +370 -0
  21. package/assets/templates/base/skill-content.md +851 -0
  22. package/assets/templates/platforms/antigravity.json +25 -0
  23. package/assets/templates/platforms/claude.json +26 -0
  24. package/assets/templates/platforms/codebuddy.json +25 -0
  25. package/assets/templates/platforms/codex.json +25 -0
  26. package/assets/templates/platforms/continue.json +25 -0
  27. package/assets/templates/platforms/copilot.json +25 -0
  28. package/assets/templates/platforms/cursor.json +25 -0
  29. package/assets/templates/platforms/gemini.json +25 -0
  30. package/assets/templates/platforms/kiro.json +25 -0
  31. package/assets/templates/platforms/opencode.json +25 -0
  32. package/assets/templates/platforms/qoder.json +25 -0
  33. package/assets/templates/platforms/roocode.json +25 -0
  34. package/assets/templates/platforms/trae.json +25 -0
  35. package/assets/templates/platforms/windsurf.json +25 -0
  36. package/dist/index.js +17095 -0
  37. package/package.json +58 -0
package/README.md ADDED
@@ -0,0 +1,197 @@
1
+ <h1 align="center">taiwan-payment-skill</h1>
2
+
3
+ <h3 align="center">台灣金流 AI 開發技能包</h3>
4
+
5
+ <p align="center">
6
+ <strong>支援 ECPay 綠界 · NewebPay 藍新 · PAYUNi 統一</strong>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/taiwan-payment-skill"><img src="https://img.shields.io/npm/v/taiwan-payment-skill?style=flat-square&logo=npm" alt="npm version"></a>
11
+ <a href="https://www.npmjs.com/package/taiwan-payment-skill"><img src="https://img.shields.io/npm/dm/taiwan-payment-skill?style=flat-square&label=downloads" alt="npm downloads"></a>
12
+ <img src="https://img.shields.io/badge/node-%3E%3D18-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js">
13
+ <img src="https://img.shields.io/badge/platforms-14-blue?style=flat-square" alt="14 Platforms">
14
+ <a href="https://github.com/Moksa1123/taiwan-payment/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Moksa1123/taiwan-payment?style=flat-square" alt="License"></a>
15
+ </p>
16
+
17
+ <p align="center">
18
+ <a href="https://paypal.me/cccsubcom"><img src="https://img.shields.io/badge/PayPal-支持開發-00457C?style=for-the-badge&logo=paypal&logoColor=white" alt="PayPal"></a>
19
+ </p>
20
+
21
+ ---
22
+
23
+ ## 安裝
24
+
25
+ ```bash
26
+ npm install -g taiwan-payment-skill
27
+ ```
28
+
29
+ ---
30
+
31
+ ## 使用方式
32
+
33
+ ```bash
34
+ # 進入專案目錄
35
+ cd /path/to/your/project
36
+
37
+ # 選擇你的 AI 助手
38
+ taiwan-payment init --ai claude # Claude Code
39
+ taiwan-payment init --ai cursor # Cursor
40
+ taiwan-payment init --ai windsurf # Windsurf
41
+ taiwan-payment init --ai copilot # GitHub Copilot
42
+ taiwan-payment init --ai antigravity # Antigravity
43
+ taiwan-payment init --ai all # 全部安裝
44
+ ```
45
+
46
+ <details>
47
+ <summary>完整平台列表</summary>
48
+
49
+ ```bash
50
+ taiwan-payment init --ai kiro # Kiro (AWS)
51
+ taiwan-payment init --ai codex # Codex CLI (OpenAI)
52
+ taiwan-payment init --ai qoder # Qoder
53
+ taiwan-payment init --ai roocode # Roo Code
54
+ taiwan-payment init --ai gemini # Gemini CLI
55
+ taiwan-payment init --ai trae # Trae (ByteDance)
56
+ taiwan-payment init --ai opencode # OpenCode
57
+ taiwan-payment init --ai continue # Continue
58
+ taiwan-payment init --ai codebuddy # CodeBuddy (Tencent)
59
+ ```
60
+
61
+ </details>
62
+
63
+ ---
64
+
65
+ ## 其他指令
66
+
67
+ ```bash
68
+ taiwan-payment list # 列出支援平台
69
+ taiwan-payment info # 顯示技能資訊
70
+ taiwan-payment versions # 列出可用版本
71
+ taiwan-payment update # 檢查更新
72
+ ```
73
+
74
+ ### 選項
75
+
76
+ ```bash
77
+ taiwan-payment init --force # 覆蓋現有檔案
78
+ taiwan-payment init --global # 安裝到全域目錄(所有專案共用)
79
+ ```
80
+
81
+ ### 全域安裝
82
+
83
+ 使用 `--global` 可將技能安裝到使用者目錄,讓所有專案都能使用:
84
+
85
+ ```bash
86
+ taiwan-payment init --ai cursor --global # ~/.cursor/skills/taiwan-payment/
87
+ taiwan-payment init --ai claude --global # ~/.claude/skills/taiwan-payment/
88
+ taiwan-payment init --ai antigravity --global # ~/.gemini/antigravity/global_skills/taiwan-payment/
89
+ ```
90
+
91
+ ---
92
+
93
+ ## 支援平台
94
+
95
+ | 平台 | 說明 | 啟動方式 |
96
+ |------|------|----------|
97
+ | **Claude Code** | Anthropic 官方 CLI | `/taiwan-payment` |
98
+ | **Cursor** | AI 程式編輯器 | `/taiwan-payment` |
99
+ | **Windsurf** | Codeium 編輯器 | 自動 |
100
+ | **Copilot** | GitHub Copilot | `/taiwan-payment` |
101
+ | **Antigravity** | Google AI 助手 | `/taiwan-payment` |
102
+ | **Kiro** | AWS AI 助手 | `/taiwan-payment` |
103
+ | **Codex** | OpenAI CLI | 自動 |
104
+ | **Qoder** | Qodo AI 助手 | 自動 |
105
+ | **RooCode** | VSCode 擴充 | `/taiwan-payment` |
106
+ | **Gemini CLI** | Google Gemini | 自動 |
107
+ | **Trae** | ByteDance AI | 自動 |
108
+ | **OpenCode** | 開源 AI 助手 | 自動 |
109
+ | **Continue** | 開源 AI 助手 | 自動 |
110
+ | **CodeBuddy** | Tencent AI | 自動 |
111
+
112
+ ---
113
+
114
+ ## 金流服務商
115
+
116
+ | 服務商 | 加密方式 | API 風格 | 特點 |
117
+ |--------|---------|---------|------|
118
+ | **ECPay 綠界** | URL Encode + SHA256 | Form POST | 市佔率最高,穩定性佳 |
119
+ | **NewebPay 藍新** | AES-256-CBC + SHA256 | Form POST + AES | 支援最多支付方式 (13 種) |
120
+ | **PAYUNi 統一** | AES-256-GCM + SHA256 | RESTful JSON | RESTful 設計,API 現代化 |
121
+
122
+ ---
123
+
124
+ ## 付款方式支援
125
+
126
+ ### 信用卡支付
127
+ - 一次付清、分期付款 (3/6/12/18/24 期)
128
+ - 信用卡定期定額、信用卡記憶
129
+
130
+ ### 電子錢包
131
+ - Apple Pay、Google Pay、Samsung Pay
132
+ - LINE Pay、台灣 Pay
133
+
134
+ ### 轉帳支付
135
+ - 網路 ATM、ATM 虛擬帳號
136
+
137
+ ### 超商支付
138
+ - 超商代碼、超商條碼
139
+
140
+ ### 其他
141
+ - TWQR、BNPL 無卡分期、AFTEE 先享後付
142
+
143
+ ---
144
+
145
+ ## 智能工具
146
+
147
+ 安裝後包含以下 Python 工具(純 Python,無需外部依賴):
148
+
149
+ ```bash
150
+ # BM25 搜索引擎 - 搜索錯誤碼、欄位映射、付款方式
151
+ python scripts/search.py "10100058" --domain error
152
+ python scripts/search.py "信用卡" --domain payment_method
153
+ python scripts/search.py "CheckMacValue" --domain troubleshoot
154
+
155
+ # 智能推薦系統 - 根據需求推薦金流服務商
156
+ python scripts/recommend.py "高交易量 電商 穩定"
157
+ python scripts/recommend.py "多元支付 LINE Pay Apple Pay"
158
+
159
+ # 連線測試工具 - 測試 API 連線
160
+ python scripts/test_payment.py ecpay
161
+ python scripts/test_payment.py all
162
+ ```
163
+
164
+ ### 搜索域
165
+
166
+ - `provider` - 服務商比較
167
+ - `operation` - API 操作端點
168
+ - `error` - 錯誤碼查詢
169
+ - `field` - 欄位映射
170
+ - `payment_method` - 付款方式
171
+ - `troubleshoot` - 疑難排解
172
+ - `reasoning` - 推薦決策規則
173
+
174
+ ---
175
+
176
+ ## 功能特色
177
+
178
+ - 完整 API 文檔 (ECPay, NewebPay, PAYUNi)
179
+ - BM25 搜索引擎 (311 行)
180
+ - 智能推薦系統 (373 行)
181
+ - 9 組完整代碼範例 (TypeScript/Python)
182
+ - 7 個 CSV 數據檔 (易於維護)
183
+ - 加密實作指南 (SHA256, AES-CBC, AES-GCM)
184
+ - 16 個疑難排解案例
185
+
186
+ ---
187
+
188
+ ## 授權
189
+
190
+ [MIT License](https://github.com/Moksa1123/taiwan-payment/blob/main/LICENSE)
191
+
192
+ ---
193
+
194
+ <p align="center">
195
+ <sub>Made by <strong>Moksa</strong></sub><br>
196
+ <sub>service@moksaweb.com</sub>
197
+ </p>
@@ -0,0 +1,297 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ Taiwan Payment Skill is an AI-powered toolkit for Taiwan Payment Gateway integration, providing API documentation, code examples, and scripts for major payment platforms (ECPay, NewebPay, PAYUNi). It works as a skill/workflow for AI coding assistants (Claude Code, Windsurf, Cursor, etc.).
8
+
9
+ ## Available Scripts
10
+
11
+ ```bash
12
+ # Search API documentation
13
+ python3 taiwan-payment/scripts/search.py "<query>" [--domain <domain>]
14
+
15
+ # Recommend payment provider
16
+ python3 taiwan-payment/scripts/recommend.py "<requirements>"
17
+
18
+ # Test API connectivity
19
+ python3 taiwan-payment/scripts/test_payment.py [--platform <platform>]
20
+ ```
21
+
22
+ **Supported Platforms:** `ecpay`, `newebpay`, `payuni`
23
+
24
+ **Search Domains:** `provider`, `operation`, `error`, `field`, `payment_method`, `troubleshoot`, `reasoning`
25
+
26
+ ## Architecture
27
+
28
+ ```
29
+ taiwan-payment/ # Source of Truth
30
+ ├── SKILL.md # Main skill documentation (857 lines)
31
+ ├── EXAMPLES.md # Code examples and patterns (1425 lines)
32
+ ├── references/ # API documentation
33
+ │ ├── ecpay-payment-api.md
34
+ │ ├── newebpay-payment-api.md
35
+ │ └── payuni-payment-api.md
36
+ ├── scripts/ # Utility scripts
37
+ │ ├── core.py # BM25 search engine (311 lines)
38
+ │ ├── recommend.py # Recommendation system (373 lines)
39
+ │ ├── search.py # Search CLI (150+ lines)
40
+ │ └── test_payment.py # Connection testing (359 lines)
41
+ └── data/ # Data-driven architecture (7 CSVs)
42
+ ├── providers.csv # 3 providers with details
43
+ ├── operations.csv # 8 API operations
44
+ ├── error-codes.csv # 20+ error codes + solutions
45
+ ├── field-mappings.csv # 15 field mappings
46
+ ├── payment-methods.csv # 24 payment methods
47
+ ├── reasoning.csv # 30+ recommendation rules
48
+ └── troubleshooting.csv # 16 troubleshooting cases
49
+
50
+ cli/ # CLI installer (taiwan-payment-skill on npm)
51
+ ├── src/
52
+ │ ├── commands/init.ts # Install command with template generation
53
+ │ ├── utils/template.ts # Template rendering engine
54
+ │ ├── utils/detect.ts # AI type detection
55
+ │ └── utils/logger.ts # Logging utilities
56
+ └── assets/ # Bundled assets
57
+ ├── taiwan-payment/ # Copy of taiwan-payment/
58
+ └── templates/
59
+ ├── base/ # Base templates (skill-content.md, quick-reference.md)
60
+ └── platforms/ # Platform configs (14 platforms)
61
+
62
+ .claude/skills/taiwan-payment/ # Claude Code skill (generated by CLI)
63
+ ```
64
+
65
+ ## Sync Rules
66
+
67
+ **Source of Truth:** `taiwan-payment/`
68
+
69
+ When modifying files:
70
+
71
+ 1. **Skill Content** - Edit in `taiwan-payment/`:
72
+ - `SKILL.md` - Main documentation
73
+ - `EXAMPLES.md` - Code examples
74
+ - `references/*.md` - API documentation
75
+ - `scripts/*.py` - Utility scripts
76
+ - `data/*.csv` - Data files
77
+
78
+ 2. **Templates** - Edit in `cli/assets/templates/`:
79
+ - `base/skill-content.md` - Common skill content
80
+ - `base/quick-reference.md` - Quick reference (Claude only)
81
+ - `platforms/*.json` - Platform-specific configs (14 platforms)
82
+
83
+ 3. **CLI Assets** - Run sync before publishing:
84
+ ```bash
85
+ cp -r taiwan-payment/* cli/assets/taiwan-payment/
86
+ ```
87
+
88
+ 4. **Reference Folders** - No manual sync needed. The CLI generates these from templates during `taiwan-payment init`.
89
+
90
+ ## Supported AI Platforms
91
+
92
+ | Platform | Folder | Install Type |
93
+ |-------------|-------------|--------------|
94
+ | Claude Code | `.claude` | full |
95
+ | Cursor | `.cursor` | full |
96
+ | Windsurf | `.windsurf` | full |
97
+ | Antigravity | `.agent` | full |
98
+ | Copilot | `.github` | full |
99
+ | Kiro | `.kiro` | full |
100
+ | Codex | `.codex` | full |
101
+ | Qoder | `.qoder` | full |
102
+ | Roo Code | `.roo` | full |
103
+ | Gemini | `.gemini` | full |
104
+ | Trae | `.trae` | full |
105
+ | OpenCode | `.opencode` | full |
106
+ | Continue | `.continue` | full |
107
+ | CodeBuddy | `.codebuddy`| full |
108
+
109
+ ## Prerequisites
110
+
111
+ - Node.js 18+ (for CLI)
112
+ - Python 3.x (for scripts, no external dependencies)
113
+
114
+ ## Git Workflow
115
+
116
+ Never push directly to `main`. Always:
117
+
118
+ 1. Create a new branch: `git checkout -b feat/...` or `fix/...`
119
+ 2. Commit changes
120
+ 3. Push branch: `git push -u origin <branch>`
121
+ 4. Create PR: `gh pr create`
122
+
123
+ ## Development Guidelines
124
+
125
+ ### When Working with Payment Integration
126
+
127
+ 1. **Always verify CheckMacValue/CheckSum** - This is the most critical security measure
128
+ 2. **Use test accounts** - Never use production credentials in examples
129
+ 3. **Handle errors gracefully** - Payment failures are common, always provide fallback
130
+ 4. **HTTPS only** - All callback URLs must use HTTPS
131
+ 5. **Amount validation** - Always validate amounts are positive integers
132
+ 6. **Idempotency** - Ensure order IDs are unique to prevent duplicate payments
133
+
134
+ ### Common Pitfalls
135
+
136
+ 1. **CheckMacValue calculation errors**:
137
+ - Must sort parameters alphabetically
138
+ - Must use lowercase URL encoding
139
+ - Must exclude CheckMacValue itself from calculation
140
+
141
+ 2. **AES encryption errors**:
142
+ - NewebPay: Ensure Key=32 bytes, IV=16 bytes, use PKCS7 padding
143
+ - PAYUNi: Must append 16-byte auth tag after encryption
144
+
145
+ 3. **Payment notification handling**:
146
+ - Always verify CheckMacValue before processing
147
+ - Return "1|OK" for ECPay, handle appropriately for others
148
+ - Use database transactions to prevent duplicate processing
149
+
150
+ ### Code Review Checklist
151
+
152
+ - [ ] Sensitive data (HashKey/HashIV) not exposed in frontend
153
+ - [ ] CheckMacValue/CheckSum properly calculated and verified
154
+ - [ ] HTTPS used for all callback URLs
155
+ - [ ] Proper error handling for payment failures
156
+ - [ ] Unique order IDs generated
157
+ - [ ] Test accounts used in examples
158
+ - [ ] Comments explain complex encryption logic
159
+ - [ ] CSV data validated and consistent
160
+
161
+ ## Smart Tools Usage
162
+
163
+ ### BM25 Search
164
+
165
+ Use when user asks about:
166
+ - "What's error code 10100058?"
167
+ - "How to map MerchantID field?"
168
+ - "Which payment methods does ECPay support?"
169
+
170
+ ```bash
171
+ python3 scripts/search.py "<query>" [--domain <domain>] [--format json]
172
+ ```
173
+
174
+ ### Recommendation System
175
+
176
+ Use when user asks:
177
+ - "Which payment provider should I use?"
178
+ - "Best for high-volume e-commerce?"
179
+ - "Need LINE Pay integration"
180
+
181
+ ```bash
182
+ python3 scripts/recommend.py "<requirements>" [--format ascii|json|simple]
183
+ ```
184
+
185
+ ### Connection Testing
186
+
187
+ Use when user wants to:
188
+ - Test API connectivity
189
+ - Verify encryption implementation
190
+ - Check test credentials
191
+
192
+ ```bash
193
+ python3 scripts/test_payment.py [--platform ecpay|newebpay|payuni]
194
+ ```
195
+
196
+ ## Data-Driven Architecture
197
+
198
+ All core logic is in CSV files:
199
+
200
+ - **providers.csv** - Provider details (encryption, API endpoints, test accounts)
201
+ - **operations.csv** - API operations (create, query, refund, etc.)
202
+ - **error-codes.csv** - Error code lookup table
203
+ - **field-mappings.csv** - Field name mappings across providers
204
+ - **payment-methods.csv** - Payment method details
205
+ - **reasoning.csv** - Recommendation rules (30+ scenarios)
206
+ - **troubleshooting.csv** - Common issues and solutions
207
+
208
+ To add new data, edit CSV files directly. No code changes needed.
209
+
210
+ ## Encryption Methods
211
+
212
+ ### ECPay - SHA256
213
+
214
+ ```python
215
+ def generate_check_mac_value(params, hash_key, hash_iv):
216
+ sorted_params = sorted(params.items())
217
+ param_str = '&'.join(f'{k}={v}' for k, v in sorted_params)
218
+ raw = f'HashKey={hash_key}&{param_str}&HashIV={hash_iv}'
219
+ encoded = urllib.parse.quote_plus(raw).lower()
220
+ return hashlib.sha256(encoded.encode('utf-8')).hexdigest().upper()
221
+ ```
222
+
223
+ ### NewebPay - AES-256-CBC + SHA256
224
+
225
+ ```python
226
+ def generate_trade_info(params, hash_key, hash_iv):
227
+ query_string = urllib.parse.urlencode(params)
228
+ cipher = AES.new(hash_key.encode(), AES.MODE_CBC, hash_iv.encode())
229
+ padded = pad(query_string.encode(), AES.block_size)
230
+ return cipher.encrypt(padded).hex()
231
+
232
+ def generate_trade_sha(trade_info, hash_key, hash_iv):
233
+ raw = f'HashKey={hash_key}&{trade_info}&HashIV={hash_iv}'
234
+ return hashlib.sha256(raw.encode()).hexdigest().upper()
235
+ ```
236
+
237
+ ### PAYUNi - AES-256-GCM + SHA256
238
+
239
+ ```python
240
+ def generate_encrypt_info(params, hash_key, hash_iv):
241
+ query_string = urllib.parse.urlencode(params)
242
+ cipher = AES.new(hash_key.encode(), AES.MODE_GCM, nonce=hash_iv.encode())
243
+ encrypted, tag = cipher.encrypt_and_digest(query_string.encode())
244
+ return (encrypted + tag).hex() # Must append tag!
245
+
246
+ def generate_hash_info(encrypt_info, hash_key, hash_iv):
247
+ raw = encrypt_info + hash_key + hash_iv
248
+ return hashlib.sha256(raw.encode()).hexdigest().upper()
249
+ ```
250
+
251
+ ## Test Accounts
252
+
253
+ ### ECPay
254
+ ```
255
+ 商店代號: 3002607
256
+ HashKey: pwFHCqoQZGmho4w6
257
+ HashIV: EkRm7iFT261dpevs
258
+ 測試網址: https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5
259
+ 測試卡號: 4311-9522-2222-2222
260
+ ```
261
+
262
+ ### NewebPay
263
+ ```
264
+ 商店代號: 請至後台申請
265
+ HashKey: 請至後台申請
266
+ HashIV: 請至後台申請
267
+ 測試網址: https://ccore.newebpay.com/MPG/mpg_gateway
268
+ 測試卡號: 4000-2211-1111-1111
269
+ ```
270
+
271
+ ### PAYUNi
272
+ ```
273
+ 商店代號: 請至後台申請
274
+ HashKey: 請至後台申請
275
+ HashIV: 請至後台申請
276
+ 測試網址: https://sandbox-api.payuni.com.tw/api/upp
277
+ 測試卡號: 4000-2211-1111-1111
278
+ ```
279
+
280
+ ## Publishing Workflow
281
+
282
+ Before publishing to npm:
283
+
284
+ 1. Update version in `cli/package.json`
285
+ 2. Sync assets: `cp -r taiwan-payment/* cli/assets/taiwan-payment/`
286
+ 3. Build CLI: `cd cli && npm run build`
287
+ 4. Test locally: `npm test`
288
+ 5. Publish: `npm publish`
289
+
290
+ ## Related Projects
291
+
292
+ - **Taiwan Invoice Skill** - E-Invoice integration (ECPay, SmilePay, Amego)
293
+ - **Taiwan Logistics Skill** - Logistics integration (ECPay, NewebPay, PAYUNi)
294
+
295
+ ---
296
+
297
+ **Last Updated**: 2026-01-29