首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

微信支付 PC 端 HTTPS 通信實現:C# 客戶端對接指南

     編輯:程式設計綜合問答

核心結論

PC 端客戶端完全可以直接使用 HTTPS 與微信後台通信。HTTPS 不是瀏覽器專用,任何支持 TLS/SSL 的 HTTP 客戶端庫均可發起請求。

C# 實現方案

using System.Net.Http;
using System.Text;
using System.Security.Cryptography.X509Certificates;

public async Task<string> PostToWeChatAsync(string url, string xmlData, string certPath, string certPassword) {
    var handler = new HttpClientHandler();
    // 加載商戶證書(雙向認證)
    var cert = new X509Certificate2(certPath, certPassword);
    handler.ClientCertificates.Add(cert);
    // 忽略服務端證書驗證(生產環境請勿忽略,需配置信任根證書)
    handler.ServerCertificateCustomValidationCallback = (msg, cert, chain, errors) => true;

    using (var client = new HttpClient(handler)) {
        var content = new StringContent(xmlData, Encoding.UTF8, "application/xml");
        var response = await client.PostAsync(url, content);
        return await response.Content.ReadAsStringAsync();
    }
}

關鍵步驟

  1. 申請商戶證書:微信商戶平台下載 apiclient_cert.p12,記住密碼(默認商戶號)。
  2. 配置信任鏈:將微信支付根證書導入系統信任存儲,或代碼中回調驗證。
  3. 構造 XML 請求:按接口文檔拼裝參數,計算簽名(MD5/HMAC-SHA256)。
  4. 發起 POST:使用 HttpClient 發送 application/xml 數據。
  5. 解析響應:XML 轉對象,判斷 return_code 和 result_code。

常見坑點

  • 證書路徑/密碼錯誤導致「無法建立 SSL 連接」。
  • 請求參數排序、編碼不一致導致簽名驗證失敗。
  • 同步調用阻塞 UI 線程,務必用 async/await。
  • 高併發下 HttpClient 應單例復用,避免端口耗盡。

參考資源

官方 Demo:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
C# SDK:https://github.com/WeChatPay/WeChatPaySDK

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved