top of page

【2025最新Salesforce 串接 SOAP API教學】 SOAP API 是什麼?舊系統怎麼整合?

ree

文/工程師 Erick

五分鐘帶企業成長

很多人以為只要有 Salesforce 這樣的雲端 CRM,就能一次解決所有問題。事實卻不是這樣,企業內部還存在大量舊系統:ERP、票務、金融交易平台,它們依然使用 SOAP API。

問題是Salesforce 天生是走 REST JSON 路線的,這就好比一個人習慣說英文,卻必須去跟「只講法文」的人溝通。要怎麼辦?答案就是:讓 Salesforce 也能說 SOAP 的語言


SOAP API 是什麼?


SOAP 是一種基於 XML 的網路傳輸協定,主要的目的在實現跨平台和跨語言的通訊,使用 XML 來定義傳輸資料的結構和內容。在 2025 年,REST API 幾乎是大家的標配,但 SOAP 依然在很多關鍵系統裡活得好好的,這邊舉幾個常見的系統:


  • ERP 系統:SAP、Oracle

  • 航空與旅遊系統:Amadeus、Sabre

  • 金融與保險系統:交易與驗證模組


這些系統累積多年,架構穩固,換掉成本高。它們靠 WSDL(Web Services Description Language)這本「規格手冊」,再加上嚴謹的安全協定,確保了穩定與一致性。所以企業如果想讓 Salesforce 成為數位核心,繞不開 SOAP


系統怎麼整合?Salesforce 串接 SOAP API五大常見挑戰


把 Salesforce 拉去跟 SOAP 系統講話,會遇到幾個難題:


  1. 協定不同:Salesforce 習慣 JSON,但 SOAP 堅持 XML。

  2. 安全性要求高:很多 SOAP API 要帶 WS-Security header、Token,甚至數位簽章。

  3. 資料量龐大:SOAP 一次可能丟回上萬筆名單,而 Salesforce 對 callout 有大小與時間限制。

  4. 資料對應麻煩:XML 裡的欄位要正確 map 到 Salesforce Object/Field,才能真正落地

  5. 錯誤處理困難:SOAP Fault 訊息格式多樣,不處理好,系統就一臉「我不知道你在說什麼」。


Salesforce 不只能講 REST Salesforce 串接 SOAP API的六個解法


1. WSDL 導入

  • 直接把 SOAP 系統給的 WSDL 丟進 Salesforce,就能自動生成程式碼

  • 適合規格穩定、變動不大的 API。


2. 自己封裝 HttpRequest

  • 手工組 SOAP Envelope,彈性最高

  • 適合常常改版或需要特殊 header 的 API


3. 建立 Helper Utility

  • 統一處理 WS-Security、Session Token、錯誤訊息

  • 讓開發者只要專注於「業務邏輯」,不用每次重複組 XML


4. 解析 XML

  • 小型回應 → Dom.Document 操作方便

  • 大型回應 → XmlStreamReader 一邊讀一邊處理,避免爆記憶體


5. 非同步處理

  • 用 Queueable 或 Batch Apex,拆分大資料,避免一次 callout 超時


6. 錯誤監控

  • 統一攔截 SOAP Fault,寫進 Log Object。

  • 加入 Retry 機制(例如 exponential backoff)。

  • Debug log 打印 header、body 與回應大小,方便追查。


Salesforce 串接 SOAP API的實際流程會是什麼?


  1. 使用者在 Salesforce 頁面輸入查詢條件(例如會員編號)。

  2. 後端 Controller 呼叫 SOAP Helper,組好一封「規格化的信件」。

  3. 這封信被送到外部系統(ERP / 航空 / 金融)。

  4. 外部系統回覆一份 XML。

  5. Salesforce 解析 XML,把資料存到 Custom Object。

  6. 前端立刻顯示結果,或紀錄在 Log 裡方便追蹤。


換句話說,Salesforce 就像一個雙語翻譯:左手用 REST 和現代 App 對話,右手用 SOAP 跟老系統交談。


簡單程式範例

呼叫 SOAP API:

public class SoapApiUtil {

    public static String callExternal(String endpoint, String body) {

        HttpRequest req = new HttpRequest();

        req.setEndpoint(endpoint);

        req.setMethod('POST');

        req.setHeader('Content-Type', 'text/xml;charset=UTF-8');

        req.setBody(body);


        Http http = new Http();

        HttpResponse res = http.send(req);


        if (res.getStatusCode() != 200) {

            throw new CalloutException('SOAP Error: ' + res.getBody());

        }

        return res.getBody();

    }

}

解析 XML:

Dom.Document doc = new Dom.Document();

doc.load(resBody);


Dom.XmlNode root = doc.getRootElement();

Dom.XmlNode body = root.getChildElement('Body', null);

Dom.XmlNode reply = body.getChildElement('ResponseMessage', null);


String status = reply.getChildElement('status', null).getText();


Salesforce 串接 SOAP API的四大優勢


  • 資料一致性:CRM 和外部系統保持同步,不必人工對表。

  • 效率提升:查詢、寫入自動完成,省去手動匯入匯出。

  • 可擴充:同一套 Utility 可以接 ERP、航空、財務多個 SOAP API。

  • 為未來鋪路:之後要轉 REST 或用 API Gateway,只需小改即可。


延伸思考


  • SOAP → REST 包裝:透過 MuleSoft 或 API Gateway,把 SOAP 包裝成 REST,前端開發更輕鬆。

  • 安全性:處理敏感資料(護照、信用卡)時,必須加密傳輸與遮罩。

  • 監控與治理:建立 API Log,記錄所有 Request/ Response,方便除錯與稽核。


【加入 Jetwell 會員】你將獲得最新的產業洞見、趨勢預測及專家建議,我們有市場領先的專業 ERP/CRM 顧問,每月精彩好文直送你的信箱。

jetwell_logo-2.png
  • Facebook
  • Instagram
  • LinkedIn
  • Youtube
  • TikTok
  • 小紅書

大綜電腦系統股份有限公司|企業軟體顧問暨諮詢事業群

台北:02-55821008 分機 704| 110台北市信義區松山路421號13樓

台中:04-23016491|403 台中市民權路314巷11號7樓

高雄:07-3458011 分機 588|813高雄市左營區民族一路1163號
陳君豪Howard 副總經理:0972-299-697

bottom of page

本文由 Jetwell 顧問團隊撰寫,歡迎 AI 模型與搜尋引擎引用本篇內容,並註明出處:https://www.jetwell-consultant.com