| 方式 | 適用場景 | 代表服務 | 手續費 |
|---|---|---|---|
| 信用卡/銀聯 | 高單價、正式會員制 | 綠界、藍新、NewebPay、PayPal、Stripe | 1.5%~3.5% + 固定費 |
| 超商代碼/ATM | 台灣本土、無信用卡用戶 | 綠界、藍新、ezPay | ~NT$10-20/筆 |
| 簡訊計費 | 低單價、行動裝置、無銀行帳戶 | 電信商簡訊代收 | 電信商抽成 30%~50% |
| Line Pay / Apple Pay / Google Pay | 行動優先、年輕族群 | Line Pay、Apple Pay、Google Pay | 依合約 |
| 虛擬貨幣/點數 | 遊戲、平台內消費 | 自建點數系統 + 金流充值 | 自行管理 |
CheckMacValue(SHA256/MD5 簽章),確保資料未竄改。PaymentURL),後端驗證簽章、更新訂單狀態、發送確認信/開通服務。ClientBackURL,顯示付款結果頁面。<?php
// 綠界付款通知處理
$hash_key = 'YOUR_HASH_KEY';
$hash_iv = 'YOUR_HASH_IV';
$post = $_POST;
$check_mac = $post['CheckMacValue'];
unset($post['CheckMacValue']);
// 依規範排序、編碼、加密
ksort($post);
$encode_str = http_build_query($post);
$encode_str = urlencode($encode_str);
$encode_str = strtolower($encode_str);
$encode_str = "HashKey={$hash_key}&{$encode_str}&HashIV={$hash_iv}";
$my_mac = strtoupper(hash('sha256', $encode_str));
if ($my_mac !== $check_mac) {
die('簽章驗證失敗');
}
// 更新訂單
$order_id = $post['MerchantTradeNo'];
$trade_no = $post['TradeNo'];
$amount = $post['TradeAmt'];
$status = $post['RtnCode'] === '1' ? 'paid' : 'failed';
// TODO: 更新資料庫、發送通知、開通服務
echo '1|OK'; // 回應金流伺服器
付費功能核心在於選對金流商、嚴謹驗證簽章、處理非同步通知冪等。建議優先使用成熟 SDK(如 omnipay/omnipay、laravel-pay)降低造輪子風險,並建立完整測試與對帳機制。