これは自動生成された翻訳です。

Rapid Lodging APIおよび3DS 2.0を使用したテスト

APIでサポートされている具体的なシナリオを用いて、SCAの実装をテストしてください

Rapid Lodging APIをテストするには、HTTPリクエストに「test」という名前のHTTPヘッダーを追加し、そのAPIでサポートされている値のいずれかを使用して、サポートされているシナリオをテストしてください。

強固な顧客認証(SCA)の予約フローにおいて、Rapid APIからのテスト応答を使用して、3D-Secure(3DS)コネクタライブラリのメソッドをテストすることも可能です。

お支払いの登録

以下の Test ヘッダー値により、さまざまな API レスポンスの encoded_init_config 値と、さまざまな HTTP レスポンスコードを得られます。encoded_init_configを、JavaScriptライブラリのinitSession 呼び出しに引数として渡すことで、3DSコネクタライブラリ内のさまざまなテストケースを実行することができます。

Test ヘッダーの値HTTP コードとレスポンスinitSession テストケース
スタンダード201 – 標準応答SUCCESS
init_skip201 – 応答なしencoded_init_configサポート対象外
init_fail201 – 標準応答FAILED
init_timeout201 – 標準的な応答TIMEOUT
internal_server_error500 – サーバー内部エラー—
internal_server_error503 - サーバーに接続できません—

注: 3DS Connector Library(init_skip)内のテストケースについては、encoded_init_config を使用してください。これにより、initSession に渡すことができ、statusCode の結果を「SKIPPED」に強制することができます。

予約の作成

Rapid Lodging APIの「non-SCA」予約フローのテストリクエストで定義されているテストヘッダーに加え、SCAワークフローでは追加のテストヘッダー値がサポートされています。

>> テスト依頼の提出について詳しくはこちら

テストヘッダーの値によって、encodedChallengeConfig の値が異なります。この値をJavaScriptライブラリのチャレンジ呼び出しに渡すことで、さまざまなテストケースをトリガーすることができます。

Test ヘッダーの値HTTP コードとレスポンスinitSession テストケース
complete_payment_session201 – Response with complete payment session linkSUCCESS (ユーザーと iframe のやり取りなし)
complete_payment_session_show201 – Response with complete payment session linkSUCCESS/FAILED (ユーザーと iframe のやり取りあり)
complete_payment_session_fail201 – Response with complete payment session linkFAILED (ユーザーと iframe のやり取りなし)
complete_payment_session_timeout201 – Response with complete payment session linkTIMEOUT
complete_payment_session_error201 – Response with complete payment session linkERROR

Rapid Lodging APIの「non-SCA」予約フロー向けのテストリクエストで定義されているテストヘッダーに加え、SCAワークフローでは追加のテストヘッダー値がサポートされています。

>> テスト依頼の提出について詳しくはこちら

テストヘッダーの値によって、encodedChallengeConfig の値が異なります。これらの値をJavaScriptライブラリのチャレンジ呼び出しに渡すことで、さまざまなテストケースをトリガーすることができます。

Test ヘッダーの値HTTP コードとレスポンスinitSession テストケース
complete_payment_session201 – Response with complete payment session linkSUCCESS (ユーザーと iframe のやり取りなし)
complete_payment_session_show201 – Response with complete payment session linkSUCCESS/FAILED (ユーザーと iframe のやり取りあり)
complete_payment_session_fail201 – Response with complete payment session linkFAILED (ユーザーと iframe のやり取りなし)
complete_payment_session_timeout201 – Response with complete payment session linkTIMEOUT
complete_payment_session_error201 – Response with complete payment session linkERROR

支払いセッションを完了する

テスト用のヘッダー値により、支払いの完了や予約の確定を試みた際に発生しうるさまざまなエラーケースが生じます。

Test ヘッダーの値HTTP コードとレスポンス
payment_declined400 - Payment declined response
price_mismatch409 - Price mismatch response
rooms_unavailable410 - Rooms unavailable response

3DS Connector ライブラリーと iframe

外部依存関係なしで 3DS Connector をテストするには、サポートされているメソッドレスポンスに対応する特定のパラメータ値を使用します。この手法は、テスト用サンドボックスの URL を使用して iframe を読み込む場合のみサポートされます。

セッションの初期化

initSessionResponse statusCodeでサポートされている値は、initSessionRequest encoded_init_config を変更することで確認できます。

statusCode の値テストする encodedInitConfig の値
SUCCESSW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d
FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJGQUlMRUQifV0=
TIMEOUTW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJUSU1FT1VUIn1d
SKIPPED現時点ではサポートされていません。

注 : encoded_init_config の値は、Register Payments API のサポート対象 Test ヘッダーで生成することもできます。

チャレンジ

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 の例

使用例

この例では、ユーザーがiframeを操作することなく、事前定義されたパラメータ値を使用して、3DSチャレンジ用のライブラリをテストする方法を示しています。

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のモデルを通じてご予約いただいた場合、エクスペディアはクレジットカードへの請求を行いません。その代わりに、その件はベンダーに依頼して対応してもらいます。販売業者は、予約に先立ち、この情報を使用してカードの有効性を確認する場合があります。旅行者の皆様には、到着時に直接お支払いいただくことになっております。

ただし、予定が変更になる場合もあります。その場合、販売業者から「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が登録加盟店となっているすべての取引において必要となります。また、3DSが使用され、no-showが発生した場合にも、この処理が行われることがあります。

統合による影響を軽減する方法

Rapid APIとの連携において、予約フローでセキュアな認証がサポートされていない場合、基準を満たしていない掲載物件を持つベンダーを除外することで、予約失敗のリスクを軽減することができます。Availability APIのレスポンスから該当する料金を削除するには、Rapid Partner Supportまでご連絡ください。

エージェントツールをご利用の場合、規制に基づき、当該取引はSCAの適用除外となります。これを指定するには、Availability APIのsales_channel フィールドを使用してください。

エラー処理

Create Booking API と Complete Payment Session API を使用すると、予約と支払い取引が確定する場合があります。

統合では、金銭的な損失と窓口にお問い合わせいただく事態を避けるために、以下の指示に留意してください。

発生元機能推奨タイムアウト設定エラー修復プロセス必要な対応
Rapid API支払い登録トークンの予約前料金チェック10 秒再試行、または別の宿泊施設、客室、料金を選択-
JavaScript3DS Connector の設定10 秒同じリクエストを再試行-
Rapid API支払い登録セッション10 秒「Expect: 100-continue」の設定を省いて、同じリクエストを再試行してください-
JavaScript支払いセッションの開始10 秒同じリクエストを再試行-
Rapid API予約の作成90 秒同じリクエストを再試行すべてのエラーの場合:以下の方法で予約を取得してください。affiliate_reference_id
JavaScript認証チャレンジを表示する10 秒同じリクエストを再試行-
JavaScriptchallenge.statusCode を待機180 ~ 1,200 秒支払いセッションの完了をリクエスト-
Rapid API支払いセッションの完了90 秒同じリクエストを再試行すべてのエラーの場合:以下の方法で予約を取得してください。affiliate_reference_id
Rapid APIすべてのエラーの場合:以下の方法で予約を取得してください。affiliate_reference_id30 秒同じリクエストを再試行すべてのエラー : 90 秒待って再試行し、予約の最終ステータスを API レスポンスコード 404 または 200 で確認

>> SCAについて詳しくはこちら

>> 3DS 2.0を採用した当社のSCAソリューションについてご覧ください

このページは役に立ちましたか ?
このコンテンツに改善が必要な点があれば、
サービス向上にご協力いただきありがとうございます。