← ClaudeAtlas

payuni-checkoutlisted

Implements PAYUNi UPP checkout integration including AES256 encryption, form submission, and payment callback handling. Use when integrating payment gateway, creating checkout flows, or building 統一金流 payment pages.
Oelshafei1/skills · ★ 1 · Web & Frontend · score 80
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