payuni-checkoutlisted
Install: claude install-skill Oelshafei1/skills
# 統一金流 UPP 支付串接任務
你的任務是在用戶的專案中實作統一金流 UPP 幕前支付功能。
## 串接 Checklist
完成以下步驟即可完成串接:
- [ ] **環境確認** - 確認框架類型與支付方式需求
- [ ] **環境變數** - 設定 PAYUNI_MERCHANT_ID、HASH_KEY、HASH_IV
- [ ] **支付模組** - 建立加密解密與訂單建立功能
- [ ] **支付表單** - 建立送出至統一金流的 HTML 表單
- [ ] **回調處理** - 建立 NotifyURL 與 ReturnURL 端點
- [ ] **測試驗證** - 使用測試環境驗證
---
## Step 1: 確認專案環境
詢問用戶:
1. **框架類型**:你使用什麼框架?
- PHP (Laravel / CodeIgniter / 原生)
- Node.js (Express / Next.js / NestJS)
- Python (Django / Flask / FastAPI)
- 其他
2. **支付方式**:需要支援哪些支付方式?(可複選)
- 信用卡
- LINE Pay
- Apple Pay / Google Pay
- ATM 轉帳
- 超商代碼/條碼
用戶輸入: `$ARGUMENTS`
## Step 2: 檢查環境變數
搜尋專案中的 `.env` 或設定檔,確認是否已設定:
- `PAYUNI_MERCHANT_ID`
- `PAYUNI_HASH_KEY`
- `PAYUNI_HASH_IV`
若未設定,引導用戶設定環境變數。
## Step 3: 建立支付模組
根據用戶框架建立支付模組檔案。
**建立位置建議:**
- Laravel: `app/Services/PayuniService.php`
- Express: `services/payuni.js` 或 `services/payuni.ts`
- Next.js: `lib/payuni.ts`
- Django: `payments/services.py`
**核心功能:**
1. `encrypt(data)` - AES-256-CBC 加密
2. `decrypt(data)` - AES-256-CBC 解密
3. `generateHashInfo(encryptInfo)` - SHA256 雜湊
4. `createOrder(orderData)` - 建立訂單並回傳表單資料
5. `verifyCallback(payload)` - 驗證回調通知
### Node.js/TypeScript 範例
```typescript
import crypto from 'crypto';
const config = {
merchantId: process.env.PAYUNI_MERCHANT_ID!,
hashKey: process.env.PAYUNI_HASH_KEY!,
hashIV: process.env.PAYUNI_HASH_IV!,
isTest: process.env.PAYUNI_TEST_MODE === 'true',
};
// AES-256-CBC 加密
function encrypt(data: string): string {
const ke