بنقرة واحدة
woomp
Woomp WooCommerce 台灣在地化外掛開發指引。涵蓋 PayUni/綠界/藍新/立吉富金流、超商物流、電子發票整合架構與模組載入機制。開發、除錯或擴充 woomp 外掛任何模組時使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Woomp WooCommerce 台灣在地化外掛開發指引。涵蓋 PayUni/綠界/藍新/立吉富金流、超商物流、電子發票整合架構與模組載入機制。開發、除錯或擴充 woomp 外掛任何模組時使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
ECPay 綠界科技 API 整合助手(官方 + zenbu-site 專案 NestJS/TypeScript 慣例補強)。 核心服務:AIO 全方位金流(導轉式)、ECPG 站內付 2.0(內嵌式 / 綁卡 / 幕後授權 / 幕後取號)、 CheckMacValue SHA256、AES-128-CBC 加密、電子發票(B2C/B2B/離線)、電子收據(一般/公益/政治獻金)、 超商取貨/全方位/跨境物流、ECTicket。 付款方式:信用卡(一次/分期/自費分期/定期定額)、ATM 虛擬帳號、CVS 超商代碼、BARCODE 超商條碼、 WebATM、Apple Pay、TWQR 行動支付、BNPL 先買後付(裕富/中租)、微信支付、銀聯、3D Secure 2.0。 進階功能:Token 綁卡、退款、折讓、對帳、發票作廢、物流追蹤、跨境物流。 整合情境:Shopify、WooCommerce、POS 刷卡機、直播收款。 支援 12 種程式語言(PHP/Python/Node.js/TypeScript/Go/Java/C#/Kotlin/Ruby/Rust/Swift/C/C++)。 本專案 zenbu-site 為 NestJS 11 + TypeORM 0.3 後端, ECPay 整合位於 apps/api-gateway/src/commerce/payments/ecpay/, 完整 NestJS/TypeScript 範例與專案實務陷阱見 references/zenbu-site/nestjs-typescript-integration.md。 當程式碼涉及以下任何情況時,必須使用此 skill: ECPay、綠界、ecpay、CheckMacValue、AioCheckOut、MerchantTradeNo、HashKey、HashIV、 ChoosePayment、ReturnURL、PaymentInfoURL、OrderResultURL、EncryptType、PeriodAmount、 CreditInstallment、ECPG、ecpg.ecpay.com.tw、ecpayment.ecpay.com.tw、payment.ecpay.com.tw、 apps/api-gateway/src/commerce/payments/ecpay/、台灣金流串接、超商代碼繳費、ATM
ezPay 電子發票(藍新金流 NewebPay 旗下品牌)API 完整技術參考,對應官方文件 EZP_INVI_1.2.1「電子發票技術串接手冊(標準版)」(簡單行動支付股份有限公司, 2021-04-01)。台灣電子發票服務商,涵蓋發票全生命週期:開立發票 (即時 / 等待觸發 / 預約自動,B2C / B2B,invoice_issue)、觸發開立發票 (invoice_touch_issue)、作廢發票(invoice_invalid)、開立折讓 (allowance_issue)、觸發確認 / 取消折讓(allowance_touch_issue)、 作廢折讓(allowanceInvalid)、查詢發票(invoice_search)。包含 AES-256-CBC 加密 PostData_(HashKey 32 bytes / HashIV 16 bytes / PKCS#7 padding / hex 輸出)、回應 CheckCode SHA256 驗證機制、載具類別 (手機條碼 0 / 自然人憑證 1 / ezPay 電子發票載具 2)、捐贈碼 LoveCode、 課稅別 TaxType、零稅率報關標記、含稅 / 未稅金額計算邏輯、完整錯誤碼表、 測試與正式環境 endpoint。Use this skill whenever code or tasks involve ezPay、ezpay、藍新電子發票、電子發票、cinv.ezpay.com.tw、inv.ezpay.com.tw、 開立發票、發票作廢、折讓單、開立折讓、作廢折讓、查詢發票、PostData_、 MerchantID_、CheckCode、HashKey、HashIV、CarrierType、載具、LoveCode、 捐贈碼、TaxType、課稅別、invoice_issue、invoice_touch_issue、 invoice_invalid、allowance_issue、allowance_touch_issue、allowanceInvalid、 invoice_search、e-invoice integration、台灣電子發票串接,或在 zenbu-site apps/api-gateway/src/commerce/ 下整合 ezPay 電子發票開立。 本 SKILL 為唯一官方 API reference
NewebPay MPG (Multiple Payment Gateway) complete payment gateway reference for Taiwan, aligned with official NDNF-1.2.2 manual (revised 2026-04-21). Covers MPG Version 2.0 (legacy) and 2.3 (current spec): AES-256-CBC + SHA256 encryption, optional AES-256-GCM (EncryptType=1), all TradeInfo parameters, payment methods (credit card / WebATM / VACC / CVS / BARCODE / CVSCOM / LINE Pay / Apple Pay / TWQR / smart-ATM 2.0 / AFTEE BNPL / e-wallets), callback handling, query trade, credit card close/cancel/refund, e-wallet refund, BNPL refund (NPA-B07) and BNPL settle (NPA-B62), error codes, sandbox endpoints. Use this skill whenever code involves newebpay, TradeInfo, TradeSha, EncryptData_, HashData_, MerchantID + HashKey + HashIV, ccore.newebpay.com / core.newebpay.com (and legacy spgateway.com aliases), MPG/mpg_gateway, /API/QueryTradeInfo, /API/CreditCard/Close, /API/CreditCard/Cancel, /API/EWallet/refund, /API/Bnpl/refund, /API/Bnpl/settle, NewebpayService, newebpay callback/notify handling, AFTEE 先買後付, TWQR 跨機構支付
PayNow(立吉富,paynow.com.tw)台灣第三方支付 + 電子發票服務商 API 完整技術參考, 對應官方文件 docs.paynow.com.tw(2026 最新版)。PayNow 同時存在兩代金流串接: (1) 新版 REST API — PaymentIntent 付款意圖 + Component SDK v2(iframe 內嵌)+ Bearer Token(PrivateKey)認證 + HMAC-SHA256 Webhook 驗簽;端點 api.paynow.com.tw / sandboxapi.paynow.com.tw(建立/查詢/執行付款意圖、退款開立/查詢/列表、 Customer 綁卡 Token、ApplePay session、3DS/OTP session、Partner 商戶綁定)。 (2) 舊版 CashFlow API — HTTP form-post etopm.aspx 導轉式 + 背景交易 PayNowAPI_JS.aspx (請款 CP_gp / 退款 R_gp / 取消授權 CPA_gp / 交易查詢 PQS_gp / 票券核銷 T_S T_G); 簽章用 SHA-1 PassCode、AES256(檢核碼 GP/GK 換鑰)、HMAC-SHA256、TripleDES; 端點 www.paynow.com.tw / test.paynow.com.tw;付款方式信用卡/WebATM/虛擬帳號/超商代碼 (ibon/FamiPort/icash)/超商條碼/銀聯/分期/自動扣款/ApplePay。 (3) 電子發票 API — Bearer Token;端點 invoiceapi-prod.paynow.com.tw / invoiceapi-dev.paynow.com.tw(開立 /api/invoices/issue、作廢 /api/invoices/cancel、 折讓 /api/invoices/allowance、折讓作廢 /api/invoices/cancel-allowance、 查詢 GET /api/invoices、POS 取號 + POS 開立);載具 carrier_type、捐贈碼 npoban、 課稅別 tax_type、零稅率原因 zero_tax_rate_reason。 Use this skill whenever
PAYUNi 統一金流物流工具 V3 完整 API 參考(依據 docs.payuni.com.tw 官方文件 2026-05-04 版重新爬取)。 涵蓋 7-ELEVEN 超商 B2C/C2C/C2B 物流(建立物流單 v1.3、超商門市地圖 v1.1、出貨單列印 v1.0、 退貨便要號 v1.0、店到店轉宅配 v1.0)、黑貓宅配物流(建立宅配單 v1.2、產宅配編號並下載託運單 PDF v1.0、 下載託運單 PDF v1.0、呼叫黑貓 v1.0、建立宅配退貨單 v1.0)、物流單查詢 v1.1、物流單修改 v1.1, 以及 AES-256-GCM + SHA256 加密規範(與 PAYUNi 金流共用)、官方完整錯誤碼表(450+ 條)、 物流貨態狀態碼(91/92/98/21/22/31/32/33/11/41/43/44/46/51/52/53/55/56/81/82)、 超商物流貨態 Notify v1.0 與 宅配貨態 Notify v1.0。 Use this skill whenever the task involves PAYUNi 物流、payuni-logistics、shipping、CVS pickup、 超商取貨、7-ELEVEN B2C/C2C/C2B、Tcat、黑貓宅配、ship_map、ShipTradeNo、ShipStatus、 c2c_to_home_delivery、call_cat、退貨便、託運單 PDF、物流 Notify callback、 或任何 import from 'payuni-logistics' / 'payuni-crypto' / 涉及 ZenbuSite shippingRef、 shippingProvider=payuni、shippingStoreId、shippingOdno、ShipStatus mapping 的程式碼。 本 SKILL 為唯一官方 API reference 來源——不要再去翻 docs.payuni.com.tw。
PAYUNi UNi Embed (免跳轉支付元件 / 內嵌式金流) API Ver 3.0 + JS SDK Ver 2.0 完整技術參考。 iframe 嵌入式信用卡收單,站內付不跳轉,後端 token_get 取 SDK_TOKEN,前端 uniPayment.js 收集卡片資訊取得綁定結果,後端再呼叫 merchant_trade 完成幕後授權。 當程式碼涉及 PAYUNi、統一金流、payuni-uni、UNi Embed、內嵌金流、站內付、tokenization、 iframe 信用卡收單、SDK 整合、uni-payment.js、createSession、getTradeResult、 iframe/token_get、iframe/merchant_trade、IFrameDomain、SDK_TOKEN 時使用。 與 payuni-upp-v3(導轉式整合支付頁)平行;加密規則(AES-256-GCM + SHA256 HashInfo) 與 UPP 完全一致,請參考 payuni-upp-v3 該段。本 SKILL 為 V3 (2025/09 釋出), 若程式碼出現 V2 或 V1 路徑,請勿混用——V3 token_get 階段不送訂單資料。
| name | woomp |
| description | Woomp WooCommerce 台灣在地化外掛開發指引。涵蓋 PayUni/綠界/藍新/立吉富金流、超商物流、電子發票整合架構與模組載入機制。開發、除錯或擴充 woomp 外掛任何模組時使用。 |
| user-invocable | false |
Woomp 是一個單體式 WooCommerce 外掛,將多個子外掛(金流、物流、發票)整合於統一的設定介面下。每個子外掛可獨立啟用或停用。
J7\Payuni\)、a7/autoload(舊版)| 套件 | 版本 | 用途 |
|---|---|---|
oberonlai/wp-metabox | ^1.0 | Metabox 建構器 |
a7/autoload | ^2.1 | 舊版 PayUni v1 自動載入器 |
dennykuo/invoice-porter | ^0.2.2 | 發票工具 |
guzzlehttp/guzzle | ^6.5.8 | HTTP 客戶端 |
yahnis-elsts/plugin-update-checker | ^5.3 | 基於 GitHub 的外掛更新機制 |
woomp/
├── woomp.php # 外掛入口點(版本 header:3.4.81)
├── init.php # 常數定義、WC 檢查、子外掛載入、工具函式
├── Compatibility.php # 相容性輔助工具
├── debug.php # 除錯工具
│
├── admin/ # === 後台功能 ===
│ ├── class-woomp-admin.php # 後台 Hook、資源載入、帳單/運送 meta
│ ├── class-woomp-product.php # 商品後台客製化
│ ├── class-woomp-order.php # 訂單管理、物流單號更新
│ ├── class-woomp-email.php # 自訂郵件動作
│ ├── class-woomp-payment-cod-clone.php # 貨到付款複製
│ ├── class-woomp-shipping-flat-rate.php # 自訂統一運費
│ ├── settings/
│ │ ├── class-woomp-setting.php # 主設定頁籤(好用版擴充)
│ │ ├── class-woomp-setting-gateway.php # 金流子頁籤
│ │ ├── class-woomp-setting-shipping.php # 物流子頁籤
│ │ └── class-woomp-setting-invoice.php # 發票子頁籤
│ ├── resources/
│ │ ├── shop_subscription/index.php # 訂閱資源
│ │ └── class-checkout.php # 結帳後台資源
│ ├── css/ # 後台樣式表
│ ├── js/ # 後台腳本
│ └── partials/ # 後台模板片段
│
├── public/ # === 前台功能 ===
│ ├── class-woomp-public.php # 前台資源載入、虛擬商品自動完成訂單
│ ├── class-woomp-checkout.php # 結帳頁客製化(欄位順序、驗證)
│ ├── class-woomp-order.php # 前台訂單顯示
│ ├── class-woomp-product.php # 前台商品顯示(可變商品 UI)
│ ├── css/ # 前台樣式表
│ │ └── themes/ # 佈景主題專屬覆寫
│ ├── js/ # 前台腳本
│ └── partials/ # 前台模板片段
│
├── includes/ # === 核心類別 + 子外掛模組 ===
│ ├── class-woomp.php # 主外掛類別(Loader Pattern)
│ ├── class-woomp-loader.php # Hook 管理器(add_action/add_filter 收集器)
│ ├── class-woomp-logger.php # 日誌工具
│ ├── class-woomp-i18n.php # 國際化
│ ├── class-woomp-activator.php # 啟用邏輯
│ ├── class-woomp-deactivator.php # 停用邏輯
│ │
│ ├── payuni/ # --- PayUni(統一金流)---
│ │ ├── payuni.php # PayUni 入口 & v1/v3 啟動
│ │ ├── assets/ # v1 前端資源(card.js、card.css)
│ │ ├── settings/ # PayUni 設定
│ │ ├── src/ # v1 原始碼
│ │ │ └── gateways/
│ │ │ ├── AbstractGateway.php # 基底閘道(繼承 WC_Payment_Gateway_CC)
│ │ │ ├── Credit.php # 信用卡 v1
│ │ │ ├── CreditV3.php # 信用卡 v3(UNi Embed)
│ │ │ ├── CreditInstallment.php # 分期付款
│ │ │ ├── CreditSubscription.php # 訂閱付款
│ │ │ ├── Atm.php # ATM 轉帳
│ │ │ ├── Cvs.php # 超商代碼繳費
│ │ │ ├── Request.php # API 請求處理
│ │ │ ├── Response.php # API 回應處理
│ │ │ ├── Refund.php # 退款處理
│ │ │ └── Subscription.php # 訂閱處理
│ │ └── v3/ # v3 PSR-4(命名空間 J7\Payuni\)
│ │ ├── Bootstrap.php # V3 Hook 註冊 & 交易通知處理
│ │ ├── Contracts/DTOs/ # 資料傳輸物件
│ │ │ ├── SdkDTO.php # SDK Token 回應
│ │ │ ├── SettingDTO.php # 閘道設定
│ │ │ ├── TradeReqDTO.php # 交易請求資料
│ │ │ └── TradeReqHashDTO.php # 加密交易請求
│ │ ├── Infrastructure/Http/ # HTTP 層
│ │ │ ├── HttpClient.php # API 客戶端
│ │ │ └── TradeHandler.php # 交易處理
│ │ ├── Shared/
│ │ │ ├── Enums/ # 列舉(EMode 等)
│ │ │ ├── Helpers/ # 輔助類別
│ │ │ └── Utils/ # 工具類別(OrderUtils 等)
│ │ └── Applications/assets/
│ │ ├── css/checkout.css # V3 結帳樣式
│ │ └── js/ # V3 ES6 模組
│ │ ├── checkout.js # 入口點
│ │ ├── env.module.js # jQuery 別名 & 環境偵測
│ │ ├── Elements.module.js # iframe 元素管理
│ │ ├── PayUniService.module.js # PayUni SDK 封裝
│ │ ├── FormState.module.js # 表單狀態管理
│ │ ├── ApiService.module.js # API 呼叫服務
│ │ ├── UIHelper.module.js # UI 輔助工具
│ │ ├── constants.module.js # 選擇器 & 常數
│ │ └── utils.module.js # 共用工具函式
│ │
│ ├── ry-woocommerce-tools/ # --- 綠界 / 藍新 / 速買配 ---
│ │ ├── class.ry-wt.main.php # 主類別(常駐載入)
│ │ ├── icon/ # 付款圖示
│ │ ├── style/ # 樣式
│ │ ├── templates/ # 模板
│ │ └── woocommerce/ # WC 模板覆寫
│ │
│ ├── paynow-payment/ # --- 立吉富金流(條件式載入)---
│ │ ├── includes/class-paynow-payment.php # 金流主類別
│ │ ├── admin/ public/ # 後台 & 前台
│ │ └── languages/ # 翻譯檔
│ │
│ ├── paynow-shipping/ # --- 立吉富物流(條件式載入)---
│ │ ├── includes/
│ │ │ ├── shippings/ # 物流方式類別
│ │ │ │ ├── abstract-paynow-shipping.php
│ │ │ │ ├── class-paynow-shipping-c2c-711.php # 7-11 超商取貨
│ │ │ │ ├── class-paynow-shipping-c2c-family.php # 全家超商取貨
│ │ │ │ ├── class-paynow-shipping-c2c-hilife.php # 萊爾富超商取貨
│ │ │ │ └── class-paynow-shipping-hd-tcat.php # 黑貓宅配
│ │ │ └── api/ # 物流 API
│ │ ├── assets/ templates/ languages/
│ │
│ ├── paynow-einvoice/ # --- 立吉富電子發票(條件式載入)---
│ ├── line-pay-for-woo/ # --- LINE Pay(常駐載入)---
│ ├── PChomePay-Cart-for-WooCommerce/ # --- 支付連(條件式載入)---
│ ├── woomp-ecpay-invoice/ # --- 綠界電子發票(常駐載入)---
│ │ ├── src/ # 發票原始碼
│ │ └── assets/ # 發票靜態資源
│ ├── woomp-ezpay-invoice/ # --- EZPAY 電子發票(常駐載入)---
│ │ ├── src/ # 發票原始碼
│ │ └── assets/ # 發票靜態資源
│ └── woomp-paynow-shipping/ # --- 立吉富物流 v2(條件式載入)---
│
├── woocommerce/checkout/ # WC 結帳模板覆寫
├── languages/ # 多國語系 .po/.mo 檔案
├── e2e/ # Playwright E2E 測試
│ ├── playwright.config.ts # Playwright 設定
│ ├── payuni-checkout.ts # 結帳流程測試
│ ├── payuni-installment.ts # 分期付款測試
│ ├── payuni-invoice-carrier.ts # 發票載具測試
│ └── payuni-tokenization.ts # 記憶卡號測試
├── composer.json # PHP 依賴 & PSR-4 自動載入
├── package.json # Node.js 建置工具
├── build.mjs # 建置腳本(ZIP 打包)
└── phpcs.xml # PHPCS 設定
woomp.php -> init.php -> includes/class-woomp.php -> Woomp::run()
-> (條件式子外掛載入)
-> includes/payuni/payuni.php
每個服務商根據 WordPress 選項載入:
| 選項鍵 | 模組 | 預設值 |
|---|---|---|
wc_woomp_enabled_payuni_gateway | PayUni 金流 | no |
wc_woomp_enabled_payuni_shipping | PayUni 物流 | no |
RY_WT::$option_prefix . 'enabled_ecpay_gateway' | 綠界金流 | no |
RY_WT::$option_prefix . 'enabled_ecpay_shipping' | 綠界物流 | no |
RY_WT::$option_prefix . 'enabled_newebpay_gateway' | 藍新金流 | no |
RY_WT::$option_prefix . 'enabled_newebpay_shipping' | 藍新物流 | no |
RY_WT::$option_prefix . 'enabled_smilepay_gateway' | 速買配金流 | no |
RY_WT::$option_prefix . 'enabled_smilepay_shipping' | 速買配物流 | no |
wc_woomp_setting_paynow_gateway | 立吉富金流 | no |
wc_woomp_setting_paynow_shipping | 立吉富物流 | no |
wc_settings_tab_active_paynow_einvoice | 立吉富電子發票 | no |
wc_woomp_enabled_ecpay_invoice | 綠界電子發票 | no |
wc_woomp_enabled_ezpay_invoice | EZPAY 電子發票 | no |
woocommerce_linepay_enabled | LINE Pay | no |
woocommerce_pchomepay_enabled | 支付連 | no |
常駐載入:ry-woocommerce-tools、line-pay-for-woo、woomp-ecpay-invoice、woomp-ezpay-invoice、PayUni v3 Bootstrap::register_hooks()。
namespace PAYUNI\Gateways;
// 基底類別繼承 WC_Payment_Gateway_CC 以支援信用卡功能
abstract class AbstractGateway extends \WC_Payment_Gateway_CC {
public $id;
protected $mer_id;
protected $hash_key;
protected $hash_iv;
// ... 共用閘道屬性
}
namespace PAYUNI\Gateways;
class MyNewGateway extends AbstractGateway {
public const ID = 'payuni-my-new';
public function __construct() {
$this->id = self::ID;
parent::__construct();
$this->method_title = '我的新閘道';
$this->supports = [ 'products', 'refunds' ];
$this->init_form_fields();
$this->init_settings();
$this->title = $this->get_option( 'title' );
\add_action(
"woocommerce_update_options_payment_gateways_{$this->id}",
[ $this, 'process_admin_options' ]
);
}
public function init_form_fields(): void {
$this->form_fields = [
'enabled' => [
'title' => __( '啟用/停用', 'woocommerce' ),
'type' => 'checkbox',
'label' => sprintf( __( '啟用 %s', 'woomp' ), $this->method_title ),
'default' => 'no',
],
'title' => [
'title' => __( '標題', 'woocommerce' ),
'type' => 'text',
'default' => $this->method_title,
],
];
}
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
// ... 付款處理邏輯
return [
'result' => 'success',
'redirect' => $this->get_return_url( $order ),
];
}
}
金流閘道透過各子外掛初始化檔案中的 woocommerce_payment_gateways 過濾器註冊。
// 物流方式繼承 WC_Shipping_Method
class PayNow_Shipping_C2C_711 extends Abstract_PayNow_Shipping {
// 7-11 超商取貨(C2C 店到店)
}
// 透過 woocommerce_shipping_methods 過濾器註冊
add_filter( 'woocommerce_shipping_methods', function( $methods ) {
$methods['paynow_shipping_c2c_711'] = 'PayNow_Shipping_C2C_711';
return $methods;
});
可用物流類型:
三家發票服務商,皆透過設定開關控制:
woomp-ecpay-invoice/):使用 wc_woomp_enabled_ecpay_invoicewoomp-ezpay-invoice/):使用 wc_woomp_enabled_ezpay_invoicepaynow-einvoice/):使用 wc_settings_tab_active_paynow_einvoice發票載具類型包含:手機條碼、自然人憑證、統一編號(公司戶)。
入口:checkout.js -> Elements.module.js -> PayUniService.module.js
checkout.js # jQuery ready + updated_checkout 事件綁定
├── env.module.js # 匯出 jQuery 為 $、環境偵測
├── Elements.module.js # 管理 PayUni SDK iframe 生命週期
│ ├── PayUniService.module.js # PayUni UNi Embed SDK 封裝
│ ├── FormState.module.js # 結帳表單狀態管理
│ ├── ApiService.module.js # AJAX API 呼叫
│ └── UIHelper.module.js # DOM 操作輔助工具
├── constants.module.js # CSS 選擇器、iframe 元素 ID
└── utils.module.js # 共用工具函式
// 在 Bootstrap::enqueue_checkout_scripts() 中
wp_enqueue_script( 'uni-payment', $sdk_url, [], '3.0.0', true );
wp_enqueue_script( 'uni-payment-checkout', '.../checkout.js', [ 'uni-payment', 'jquery' ], WOOMP_VERSION, true );
// 透過過濾器設定 script type="module"
add_filter( 'script_loader_tag', [ __CLASS__, 'modify_script_type' ], 10, 3 );
wp_localize_script( 'uni-payment-checkout', 'payuni_payment_v3_checkout_params', [
'ENV' => 'P' 或 'S', // 正式環境或沙箱
'SDK_TOKEN' => $sdk_token, // 一次性 SDK Token
'USE_INST' => $enable_installment, // 是否啟用分期
'ENABLE_3D_AUTH' => $enable_3d_auth, // 3D 驗證
'INST_OPTIONS' => $installment_options, // 分期期數選項
'ENABLE_TOKENIZATION' => $enable_tokenization, // 記憶卡號
'ERROR_MAPPER' => HttpClient::$error_mapper,
]);
J7\Payuni\
├── Bootstrap # Hook 註冊、腳本載入、交易通知處理
├── Contracts\DTOs\
│ ├── SdkDTO # SDK Token 回應對應
│ ├── SettingDTO # 閘道設定(單例模式)
│ ├── TradeReqDTO # 交易請求資料
│ └── TradeReqHashDTO # 加密交易請求
├── Infrastructure\Http\
│ ├── HttpClient # PayUni API HTTP 客戶端
│ └── TradeHandler # 交易處理 & 訂單狀態更新
└── Shared\
├── Enums\ # EMode(正式/沙箱)等
├── Helpers\ # 輔助類別
└── Utils\
└── OrderUtils # 訂單 meta 操作、結帳欄位擴充
PayUni v3 支援信用卡記憶卡號:
CardHashBootstrap::save_payuni_card_hash() 將 hash 暫存於訂單 metaCreditV3 將 CardHash 連同 UseToken 旗標送至 PayUni APIWC_Payment_Token 儲存,供回訪客戶使用閘道宣告支援:$this->supports = [ 'products', 'refunds', 'tokenization' ];
設定位於 WooCommerce > 設定 > 好用版擴充(woomp_setting 頁籤):
class-woomp-setting.php)set_more_tabs())class-woomp-setting-gateway.php - 金流專屬設定class-woomp-setting-shipping.php - 物流專屬設定class-woomp-setting-invoice.php - 發票專屬設定tests/e2e/playwright.config.ts)https://local-test.powerhouse.tw(本地測試環境)| 檔案 | 測試範圍 |
|---|---|
payuni-checkout.ts | 基本結帳流程 |
payuni-installment.ts | 分期付款 |
payuni-invoice-carrier.ts | 發票載具選擇 |
payuni-tokenization.ts | 記憶卡號 |
cd tests/e2e
npm install
npx playwright test # 執行所有測試
npx playwright test payuni-checkout.ts # 執行特定測試
npx playwright test --headed # 開啟瀏覽器執行
woocommerce/checkout/ 中的自訂結帳模板在結帳模式設為 onepage 或 twopage 時啟用(由 wc_woomp_setting_mode 選項控制)。透過 wc_get_template 過濾器攔截模板路徑。
# PHP 依賴
composer install
composer dump-autoload
# 程式碼風格檢查
vendor/bin/phpcs
vendor/bin/phpcbf # 自動修正
# 建置發佈用 ZIP
npm run build # 使用 build.mjs 搭配 archiver
# E2E 測試(詳細指令見 references/testing.md)
cd tests/e2e && npx playwright test
cd tests/e2e && npx playwright test --ui # 互動式 UI 模式
# 外掛更新
# 透過 GitHub Releases 自動更新(master 分支)
| 模式 | 實作方式 | 位置 |
|---|---|---|
| Loader Pattern | Woomp_Loader 收集 Hook 後批次註冊 | includes/class-woomp-loader.php |
| 抽象閘道 | 所有 PayUni 金流閘道的基底類別 | includes/payuni/src/gateways/AbstractGateway.php |
| 設定驅動載入 | get_option() 控制模組啟用 | init.php |
| Metabox 建構器 | oberonlai/wp-metabox Composer 套件 | 各後台檔案 |
| 外掛更新檢查 | yahnis-elsts/plugin-update-checker | init.php(底部) |
| ES6 模組系統 | 原生模組搭配 type="module" | includes/payuni/v3/Applications/assets/js/ |
| DTO 模式 | 型別化資料物件用於 API 通訊 | includes/payuni/v3/Contracts/DTOs/ |
| 模板覆寫 | wc_get_template 過濾器用於結帳頁 | init.php + woocommerce/checkout/ |
| 檔案 | 何時使用 |
|---|---|
| testing.md | 需要完整 PHPUnit testsuite / group 參數、E2E npm scripts 完整清單時 |