此為系統自動產生的翻譯

使用 Rapid Lodging API 和 3DS 2.0 進行測試

使用 API 所支援的特定情境來測試您的 SCA 實作

若要測試 Rapid Lodging API,請在 HTTP 請求中加入一個名為test 的額外 HTTP 標頭,並使用該 API 支援的其中一個值來測試受支援的場景。

在「強客戶身分驗證」(SCA)預訂流程中,亦可使用來自 Rapid API 的測試回應來測試 3D-Secure (3DS) 連接器函式庫的方法。

登記付款

以下測試標頭值在 API 回應中會產生不同 encoded_init_config,以及不同 HTTP 回應碼。可將 encoded_init_config` ` 傳入 JavaScript 函式庫中的 initSession 呼叫中,以觸發 3DS 連接器函式庫內的不同測試案例。

測試標題值HTTP 代碼與回應initSession 測試用例
標準201–標準回應SUCCESS
init_skip201–未回應 encoded_init_configNot supported
init_fail201–標準回應FAILED
init_timeout201–標準回應TIMEOUT
internal_server_error500–伺服器內部錯誤—
internal_server_error503 - 伺服器無法使用—

注意: 若要針對 3DS Connector 函式庫init_skip 中的測試案例,請使用encoded_init_config,該函式可傳遞至initSession,並強制將statusCode 設為 SKIPPED。

建立預訂

除了 Rapid Lodging API 中針對「non-SCA」預訂流程所定義的測試標頭外,SCA 工作流程還支援其他測試標頭值。

>> 進一步了解如何提交測試請求

測試標頭的值會產生不同的encodedChallengeConfig 值,這些值可傳入 JavaScript 函式庫的挑戰呼叫中,以觸發各種測試案例。

測試標題值HTTP 代碼與回應initSession 測試用例
complete_payment_session201 – 含完成付款工作階段連結的回應SUCCESS 無使用者 iframe 互動
complete_payment_session_show201 – 含完成付款工作階段連結的回應SUCCESS/FAILED 有使用者 iframe 互動
complete_payment_session_fail201 – 含完成付款工作階段連結的回應FAILED 無使用者 iframe 互動
complete_payment_session_timeout201 – 含完成付款工作階段連結的回應TIMEOUT
complete_payment_session_error201 – 含完成付款工作階段連結的回應ERROR

除了 Rapid Lodging API 中針對「non-SCA」預訂流程所定義的測試標頭外,SCA 工作流程還支援其他測試標頭值。

>> 進一步了解如何提交測試請求

測試標頭的值會產生不同的encodedChallengeConfig 值,這些值可傳入 JavaScript 函式庫的挑戰呼叫中,以觸發各種測試案例。

測試標題值HTTP 代碼與回應initSession 測試用例
complete_payment_session201 – 含完成付款工作階段連結的回應SUCCESS 無使用者 iframe 互動
complete_payment_session_show201 – 含完成付款工作階段連結的回應SUCCESS/FAILED 有使用者 iframe 互動
complete_payment_session_fail201 – 含完成付款工作階段連結的回應FAILED 無使用者 iframe 互動
complete_payment_session_timeout201 – 含完成付款工作階段連結的回應TIMEOUT
complete_payment_session_error201 – 含完成付款工作階段連結的回應ERROR

完成付款工作階段

這些測試標頭值會導致在嘗試完成付款及確認預訂時可能出現的各種錯誤情況。

測試標題值HTTP 代碼與回應
payment_declined400 - 付款遭拒回應
price_mismatch409 - 房價不符回應
rooms_unavailable410 - 無空房回應

3DS Connector Library 和 iframe

在無外部相依關係下測試 3DS Connector 時,需使用符合支援方法回應的特定參數值。僅限 iframe 用測試沙箱 URL 載入時才支援這種做法。

初始化工作階段

可透過調整 initSessionResponse` `statusCode 來測試 ``initSessionRequest encoded_init_config 所支援的數值範圍。

statusCode 值測試 encodedInitConfig 值
SUCCESSW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d
FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJGQUlMRUQifV0=
TIMEOUTW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJUSU1FT1VUIn1d
SKIPPEDNot supported at this time.

注意:encoded_init_config 值也可以使用「註冊付款 API」支援的測試標頭產生。

挑戰 (Challenge)

可透過調整 challengeResponse` `statusCode 來測試 ``challengeRequest encoded_challenge_config 所支援的數值範圍。

statusCode 值測試 encoded_Challenge_config 值說明
SUCCESSW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNVQ0NFU1MifV0無使用者 iframe 互動
SUCCESS / FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNIT1cifV0無使用者 iframe 互動
FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIkZBSUxFRCJ9XQ無使用者 iframe 互動
TIMEOUTW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlRJTUVPVVQifV0
ERRORW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIkVSUk9SIn1d

encoded_init_config的值亦可透過 Booking API 的 SCA 流程所支援的測試標頭來產生。

注意: 當根據使用者對 iframe 的輸入,檢查挑戰狀態碼值是否為 SUCCESS 或 FAILED 時,挑戰方法的回應將等待 iframe 中的模擬認證介面完成。

3DS iframe 中的 UI 範例:

3DS iframe 範例

用法範例

此範例示範如何使用預先定義的參數值,來測試 3DS 驗證的函式庫,而無需使用者與 iframe 進行互動。

var c = new PayThreeDSConnector.ThreeDSConnector('threedsiframe', 'https://static.pay.expedia.com'); // change to match the 3DS iframe ID
c.setup({ referenceId: '1000' })
    .then((setupResponse) => {
        console.log('Setup Output: ', setupResponse);
        return c.initSession({
            paymentSessionId: 1,
            encodedInitConfig: 'W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d',
        }); // SUCCESS
    })
    .then((initResponse) => {
        console.log('InitSession Output: ', initResponse);
        $('#threedsIframeModal').modal(); // replace with code to show the modal containing the 3DS iframe
        return c.challenge({
            paymentSessionId: 1,
            encodedChallengeConfig:
                'W3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94Q2hhbGxlbmdlT3V0cHV0Q29uZmlnIjogIlNVQ0NFU1MifV0=',
        }); // SUCCESS
    })
    .then((challengeResponse) => {
        console.log('Challenge Output: ', challengeResponse);
    })
    .finally(() => {
        $('#threedsIframeModal').modal('hide'); // replace with code to hide the modal containing the 3DS iframe
    });

3DS 驗證與「先消費、後付款」

透過「pay-later」預訂模特兒服務時,Expedia 不會向您的信用卡扣款。相反地,我們會將其送交供應商處理。供應商可能會在預訂前使用此資訊來驗證該卡片。旅客須於抵達時親自付款。

然而,有時計畫會有所變更,在此情況下,供應商可能會收取 no-show 的費用。由於這些收費涉及在旅客不在場的情況下對卡片進行扣款,因此可能受到《安全交易法》(SCA)規定的影響。

若交易受到影響,付款可能會失敗,或者若該筆扣款 non-compliant.

為了維護我們與供應商的關係,並持續為合作夥伴提供服務,Expedia Group 提供了一種可選的合規途徑:Expedia Group 可代表供應商進行身份驗證。此舉讓供應商得以保障其業務,並確保「Rapid API」能持續提供同樣豐富多樣的選擇。

在 Rapid Lodging API 中,這以標記「payment_registration_recommended=true」的形式出現在旅宿內容檔案及旅宿內容中,可協助您辨識專案中可能涉及的旅宿。

對整合可能造成的影響

若您希望提供需要進行安全驗證的供應商,則預訂流程應支援 3DS。若不支援 3DS,當「card-issuing」銀行判定該筆交易需要進行驗證時,預訂這些選項可能會失敗。

當收取「no-show」費用時,Rapid API 將列為記錄中的收單機構。帳單上該筆交易的描述將由您的組織定義,而非旅宿。若想自訂此名稱,請聯絡 Rapid 合作夥伴服務。

為符合信用卡品牌的要求以及「Rapid API」上線流程,請在發生以下情況時,使用 Accepted Payments API 在 check-out 頁面顯示processing_country:no-show. 凡由「Rapid API」擔任記錄商 (Merchant of Record) 的所有交易均須進行此步驟,且當使用 3DS 並發生「交易失敗」(no-show)時,亦可能觸發此程序。

如何減輕整合所帶來的影響

若某個 Rapid API 整合服務在預訂流程中不支援安全驗證,則可透過篩除那些刊登資訊不符合規範的供應商,來降低預訂失敗的風險。請聯絡 Rapid Partner 支援團隊,將受影響的費率從您的 Availability API 回應中移除。

使用代理工具時,根據相關規定,該交易可豁免適用「強式客戶認證」(SCA) 。請使用 Availability API 的sales_channel 欄位來標示此狀態。

錯誤處理

「建立預訂 API」和「完成付款工作階段 API」可能會產生預訂確認和付款交易。

系統整合時請考慮以下說明,以避免財物損失和客戶操作的情形。

來源功能建議時限錯誤復原做法需採取的行動
Rapid API註冊付款的預訂前價格檢查記號10 秒重試或選擇其他住宿、客房或房價-
JavaScript3DS Connector 設定10 秒重試相同的要求-
Rapid API註冊付款工作階段10 秒在不使用「Expect: 100-continue」的情況下,重新嘗試相同的請求-
JavaScript初始化付款工作階段10 秒重試相同的要求-
Rapid API建立預訂90 秒重試相同的要求針對所有錯誤:使用以下方式擷取預訂:affiliate_reference_id
JavaScript顯示驗證挑戰10 秒重試相同的要求-
JavaScript等待 challenge.statusCode180 ~ 1200 秒要求完成付款工作階段-
Rapid API完成付款工作階段 (Complete Payment Session)90 秒重試相同的要求針對所有錯誤:使用以下方式擷取預訂:affiliate_reference_id
Rapid API針對所有錯誤:使用以下方式擷取預訂:affiliate_reference_id30 秒重試相同的要求所有錯誤:等待 90 秒後再重試,用 API 回應碼 404 或 200 確認預訂最後狀態

>> 進一步了解 SCA

>> 了解我們採用 3DS 2.0 的 SCA 解決方案

這個頁面對您有幫助嗎?
我們能如何改善內容?
感謝您協助我們進行改善!