자동 생성된 번역입니다.

Rapid Lodging API 및 3DS 2.0을 이용한 테스트

API에서 지원하는 구체적인 시나리오를 통해 SCA 구현을 테스트해 보세요

Rapid Lodging API를 테스트하려면 HTTP 요청에 ‘ test ’라는 HTTP 헤더를 추가하고, 해당 API에서 지원하는 값 중 하나를 사용하여 지원되는 시나리오를 테스트하십시오.

강화된 고객 인증(SCA) 예약 흐름 내에서, Rapid API 에서 반환되는 테스트 응답을 사용하여 3D-Secure(3DS) 커넥터 라이브러리 메서드를 테스트할 수도 있습니다.

결제 등록

다음 테스트 헤더 값은 API 응답과 다른 HTTP 응답 코드에서 상이한 encoded_init_config 값을 산출합니다. encoded_init_config는 JavaScript 라이브러리의 initSession 호출에 전달하여 3DS 커넥터 라이브러리 내의 다양한 테스트 케이스를 실행할 수 있습니다.

테스트 헤더 값HTTP 코드 및 응답initSession 테스트 사례
표준형201 – 표준 응답SUCCESS
init_skip201 – 응답 없음 encoded_init_config지원되지 않음
init_fail201 – 표준 응답FAILED
init_timeout201 – 표준 응답TIMEOUT
internal_server_error500 – 내부 서버 오류—
internal_server_error503 - 서버를 사용할 수 없음—

참고: 3DS 커넥터 라이브러리( init_skip) 내의 테스트 케이스에 대해서는 encoded_init_config 를 사용하여, 해당 테스트 케이스를 initSession 로 전달하고 SKIPPED 상태의 statusCode 를 강제 적용할 수 있습니다.

예약 생성

Rapid Lodging API의 ‘ non-SCA ’ 예약 흐름에 대한 테스트 요청에 정의된 테스트 헤더 외에도, SCA 워크플로우에 대해 추가적인 테스트 헤더 값이 지원됩니다.

>> 테스트 요청 제출에 대해 자세히 알아보기

테스트 헤더 값에 따라 서로 다른 encodedChallengeConfig 값이 산출되며, 이 값들을 JavaScript 라이브러리의 챌린지 호출에 전달하여 다양한 테스트 케이스를 실행할 수 있습니다.

테스트 헤더 값HTTP 코드 및 응답initSession 테스트 사례
complete_payment_session201 – Response with complete payment session linkSUCCESS without user iframe Interaction
complete_payment_session_show201 – Response with complete payment session linkSUCCESS/FAILED with user iframe interaction
complete_payment_session_fail201 – Response with complete payment session linkFAILED without user iframe interaction
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 라이브러리의 챌린지 호출에 전달하여 다양한 테스트 케이스를 실행할 수 있습니다.

테스트 헤더 값HTTP 코드 및 응답initSession 테스트 사례
complete_payment_session201 – Response with complete payment session linkSUCCESS without user iframe Interaction
complete_payment_session_show201 – Response with complete payment session linkSUCCESS/FAILED with user iframe interaction
complete_payment_session_fail201 – Response with complete payment session linkFAILED without user iframe interaction
complete_payment_session_timeout201 – Response with complete payment session linkTIMEOUT
complete_payment_session_error201 – Response with complete payment session linkERROR

결제 세션 완료

테스트 헤더 값에 따라 결제 완료 및 예약 확인 과정에서 발생할 수 있는 다양한 오류 사례가 나타납니다.

테스트 헤더 값HTTP 코드 및 응답
payment_declined400 - Payment declined response
price_mismatch409 - Price mismatch response
rooms_unavailable410 - Rooms unavailable response

3DS Connector 라이브러리 및 iframe

특정 매개변수 값이 지원되는 메서드 응답과 일치해야 외부 종속성 없이 3DS Connector를 테스트할 수 있습니다. 이 동작은 iframe이 테스트 샌드박스 URL로 로드된 경우에만 지원됩니다.

세션 초기화

initSessionResponse statusCode에서 지원하는 값은 initSessionRequest encoded_init_config 을 변경하여 테스트할 수 있습니다.

statusCode 값encodedInitConfig 값 테스트
SUCCESSW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJTVUNDRVNTIn1d
FAILEDW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJGQUlMRUQifV0=
TIMEOUTW3sicHJvdmlkZXJJZCI6IDAsICJzYW5kYm94SW5pdE91dHB1dENvbmZpZyI6ICJUSU1FT1VUIn1d
SKIPPED현재 지원되지 않습니다.

참고: encoded_init_config 값은 결제 등록 API의 지원되는 테스트 헤더를 사용하여 생성할 수도 있습니다.

챌린지

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 연동 기능이 예약 절차에서 보안 인증을 지원하지 않는 경우, 관련 규정을 준수하지 않는 리스팅을 보유한 판매자를 제외함으로써 예약 실패 위험을 줄일 수 있습니다. Rapid Partner Support에 문의하여 가용성 API 응답에서 해당 요금이 제외되도록 하십시오.

대리인 도구를 사용할 경우, 관련 규정에 따라 해당 거래는 SCA 적용 대상에서 제외됩니다. 이를 표시하려면 가용성 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초동일한 요청 재시도-
JavaScriptchallenge.statusCode 대기180~1,200초결제 세션 완료 요청-
Rapid API결제 세션 완료90초동일한 요청 재시도모든 오류에 대해: 다음을 사용하여 예약 정보를 조회합니다. affiliate_reference_id
Rapid API모든 오류에 대해: 다음을 사용하여 예약을 조회합니다. affiliate_reference_id30초동일한 요청 재시도모든 오류의 경우: API 응답 코드 404 또는 200으로 예약의 최종 상태를 확인하려면 재시도 전에 90초 대기

>> SCA에 대해 더 알아보기

>> 3DS 2.0을 활용한 당사의 SCA 솔루션에 대해 알아보세요

이 페이지가 도움이 되었나요?
이 콘텐츠를 어떻게 개선하면 좋을까요?
더 나은 Developer Hub를 만드는 데 도움을 주셔서 감사합니다!