
三大核心介面:

return_url,瀏覽器重導)與異步通知(notify_url,伺服器點對點)。| 項目 | 建議做法 |
|---|---|
| 請求參數簽章 | MD5/HMAC-SHA256 + 商戶私鑰,防篡改 |
| 金額精度 | 以「分」為單位整數傳遞,避免浮點誤差 |
| 冪等性 | 通知處理邏輯必須冪等(同一訂單號多次通知只處理一次) |
| 異步通知可靠性 | 平台通常有重試機制;商家端需快速回應「success」避免重試風暴 |
| 安全性 | 全站 HTTPS、驗證平台憑證、敏感資訊不出現在 URL |
// 統一介面
public interface IPaymentGateway {
string BuildPaymentForm(OrderInfo order, string returnUrl, string notifyUrl);
PaymentResult ParseReturn(HttpRequest request); // 同步回調
PaymentResult ParseNotify(HttpRequest request); // 異步通知
OrderStatus QueryStatus(string orderId); // 主動查詢
RefundResult Refund(string orderId, decimal amount); // 退款
}
// 各平台實作
public class AlipayGateway : IPaymentGateway { ... }
public class TenpayGateway : IPaymentGateway { ... }
public class PayPalGateway : IPaymentGateway { ... }
// 工廠依設定注入
var gateway = GatewayFactory.Create("Alipay");
以策略模式封裝各平台差異,核心業務邏輯零耦合,新增支付方式只需實作介面並註冊工廠。