강력한 고객 인증 규정 준수
온라인 신용카드 결제에 대한 인증 규정을 이해합니다.
개요
규제 기관과 카드 네트워크는 온라인 결제의 보안을 강화하고 사기로부터 소비자를 보호하기 위해 새로운 요건을 도입하고 있습니다. 이러한 규정 중 상당수는 온라인 결제 시 강력한 고객 인증(SCA)을 사용해야 한다는 요구 사항을 포함하고 있습니다.
- 유럽: 개정된 결제 서비스 지침(PSD2)에 따라 특정 면제 또는 out-of-scope 사례가 적용되는 경우를 제외하고 온라인 결제 거래 시 SCA를 사용해야 합니다.
- 일본: 일본의 SCA 의무에 따라 온라인 신용 카드 거래 시 3D 보안(3DS) 인증을 사용해야 하며 일부 거래 유형에 대해서는 예외가 적용됩니다.
3D Secure 2(3DS 2.0)는 보안과 원활한 결제 환경의 균형을 맞추면서 규정을 준수하는 솔루션으로 EMVCo와 카드 결제 처리 업계에서 개발한 기술입니다. 3DS 2.0은 SCA 규정을 준수하기 위해 Rapid API 내에서 사용되는 솔루션입니다.
이 페이지에서는 지원되는 Rapid API 결제 유형이 어떤 영향을 받는지, 여행자에게 서비스를 제공할 때 규정을 준수하기 위해 취할 수 있는 조치는 무엇인지 설명합니다.
규정 준수 요구 사항
SCA가 요구되는 국가에서 규정을 준수하는 거래를 활성화하는 단계는 기록 판매자가 누구인지, 결제는 어떻게 이루어지는지에 따라 달라집니다. Rapid API.
조직이 기록 판매자인 경우
Expedia Affiliate Collect
익스피디아 제휴사 수집을 사용하는 예약은 SCA 규정의 영향을 받지 않습니다. 규정 준수를 위해 결제 프로세스나 API 통합( Rapid API )을 변경할 필요가 없습니다.
단, 판매자가 기록 판매자로서 여행자의 신용카드, 직불카드 또는 기타 SCA 규정의 범위 내에 있는 결제 수단을 청구하는 경우 규정의 영향을 받을 수 있습니다. 규정에 따라 결제 과정에서 3DS 2.0 솔루션( SCA-compliant )을 사용해야 할 가능성이 높습니다. 판매자가 SCA 규정을 준수하고 거래 실패를 방지하는 데 도움이 되는 기능에 대해 자세히 알아보려면 결제 처리업체에 문의하시기 바랍니다.
회사 카드
귀사가 기록 판매자이고 SCA 의무가 있는 국가에서 발급된 신용 카드 또는 직불 카드로 Rapid API 결제하는 경우 이러한 카드 유형은 SCA 요구 사항에서 면제됩니다:
- 일회용 가상 카드
- 개인이 아닌 회사에 발급된 법인 카드
나열된 SCA-exempt 카드가 선호되지 않는 경우, 카드를 발급한 은행에 직접 면제를 요청할 수 있습니다. 면제가 승인되면 해당 카드로 거래할 때 3DS 2.0을 사용한 one-time 온라인 인증을 제외하고는 인증이 필요하지 않습니다. 이 one-time 요건은 은행마다 다를 수 있습니다. 면제를 받는 데 시간이 오래 걸릴 수 있으며, 은행에서 사기성 결제에 대해 책임을 물을 수도 있습니다.
Rapid API 판 매자가 기록 판매자인 경우
귀사에서 Rapid API 을 여행자 카드를 Rapid로 전송하는 기록 판매자로 사용하는 경우, 규정의 영향을 받을 수 있습니다. 여행자가 소매 대리점 없이 온라인으로 예약하는 경우, 규정에 따라 여행자는 SCA를 통해 결제 거래를 인증해야 합니다. 이 요구 사항에 대한 SCA-compliant 프로세스는 결제 과정에서 3DS 2.0을 사용하는 것입니다. SCA 의무가 있는 국가에서 발급된 신용 카드 또는 직불 카드에 대해 Rapid API 을 기록 판매자로 사용하려면 SCA용 솔루션( )을 채택해야 합니다.
리테일 에이전트 또는 콜센터 상담원을 통해 예약한 거래는 SCA 요건에서 면제됩니다. 이러한 거래에서 규정을 준수하려면 예약이 여행사나 상담원의 도움으로 이루어졌다는 명시적인 표시만 있으면 됩니다. 이를 표시하려면 예약 가능 여부 API의 sales_channel 필드를 사용해 주세요.
숙박 시설가 기록 판매자인 경우
회사에서 숙박 시설 수집을 사용하는 경우 규정의 영향을 받을 수 있습니다. '노쇼' 수수료나 보증금 등 여행자가 없는 상태에서 여행자의 카드에 결제를 시도하는 경우가 있습니다. 이 요금은 충전 전에 3DS 2.0 인증을 수행하지 않으면 SCA-compliant 청구되지 않습니다. SCA 의무화 국가에서 발급된 신용카드 또는 직불카드를 사용하는 여행객을 대상으로 숙박 시설 수집을 사용하려는 경우, SCA용 솔루션( )을 도입해야 합니다.
Rapid API 솔루션
작동 방식
Rapid API 을 기록 판매자로 사용하거나 여행자 카드와 함께 숙박 시설 수집을 사용하는 경우, Rapid의 API 솔루션을 채택하여 SCA 규정을 준수하는 예약을 생성할 수 있습니다. 당사의 API는 예약 흐름에서 3DS 2.0을 사용하여 SCA 규정 준수를 지원합니다. 3DS 2.0에서는 여행자에게 보안 인증을 요청할 시점에 대한 재량권을 은행에 부여하여 여행자와의 마찰을 줄여주는 risk-based 인증을 지원합니다.
3DS 2.0의 솔루션은 세 가지 단계로 구성되어 있습니다:
- 여행자를 위한 발급 은행의 인증 환경을 호스팅하는 데 사용되는 check-out 페이지에 iframe 을 추가합니다. 통합 문서에서는 이를 3DS 아이프레임이라고 합니다.
- 또한 check-out 페이지에 새로운 client-side JavaScript 라이브러리를 포함시켜 브라우저 데이터를 수집하고, iframe과 통신하고, iframe 내에 SCA 경험을 표시하는 데 사용할 수 있습니다. 통합 문서에서는 이를 3DS 커넥터 라이브러리라고 합니다.
- Rapid API 은 은행의 결제자 정보를 수락하고 보안 인증이 완료된 후 예약을 완료합니다.
JavaScript 및 Rapid API 을 함께 사용하는 경우, 이제 예약 API가 호출되기 전후에 SCA를 사용한 예약 흐 름에 몇 가지 추가 단계가 포함됩니다. 아래의 다이어그램은 업데이트된 예약 흐름입니다.

변경된 예약 흐름의 각 단계에서는 한 단계의 출력 정보가 다음 단계의 입력 데이터로 사용됩니다. 데이터가 브라우저의 JavaScript와 Rapid 간에 전달되어야 합니다.
참고: 위의 다이어그램은 소개 목적으로 실제 API 흐름을 단순화한 것입니다. 전체 API 흐름을 자세히 알아보려면 통합 설명서를 참조해 주세요.
통합 구성 요소 세부 정보
브라우저 iframe
check-out 경험에 배치된 iframe은 여행자의 card-issuing 은행이 소유한 URL을 호스팅합니다. 이 URL은 사용자에게 인증 환경을 표시하고 traveler-supplied 정보를 은행으로 직접 전송합니다. 아이프레임은 처음에는 숨겨져 있어야 하며, 예약 시도 후 인증 챌린지가 필요할 때 페이지 위에 오버레이할 수 있습니다.
브라우저 JavaScript 라이브러리
이 라이브러리는 check-out 페이지에 추가되며 예약 시 호출되어 인증 프로세스를 지원합니다. 라이브러리의 API는 아래에 설명된 기능을 지원합니다.
여행객의 기기 정보 자동 수집
예약을 시도하기 전에 여행자의 장치에 대한 정보를 수집하여 인증을 위한 예약을 준비해야 합니다. 해당 정보는 여행자의 issuing-bank 으로 전송되어 은행에서 위험을 평가하고 거래에 3DS 2.0 인증이 필요한지 여부를 결정하고 올바르게 표시되는지 확인할 수 있도록 검토됩니다. 3DS 2.0 사양에 따라 여행자의 브라우저에서 언어, 색심도, 화면 높이, 화면 너비, 시간대, 사용자 에이전트, Java 활성화 여부 등의 데이터가 수집됩니다.
브라우저 iframe에 인증 환경을 표시합니다.
예약 시도 후 라이브러리는 iframe 오버레이를 표시하고 은행의 콘텐츠를 iframe에 로드하는 데 사용됩니다. 인증 과정에서 은행의 콘텐츠는 위험 평가를 지원하기 위해 여행자의 기기에 대한 추가 정보를 수집할 수 있습니다. 이 절차는 예약을 완료하는 데 필요합니다.
Rapid API
Rapid API client-side JavaScript 라이브러리와 함께 작동하는 API가 포함되어 있습니다. API는 아래에 설명된 기능을 지원합니다.
여행객 등록 및 결제 정보
예약을 시도하기 전에 여행자에 대한 추가 정보를 수집하여 인증을 위한 예약을 준비해야 합니다. 데이터에는 POS(Point of Sale)와 여행객의 결제 정보가 포함된 여행객 계정의 세부 정보가 포함됩니다. 이 데이터는 나중에 은행이 위험을 평가하고 거래에 보안 인증이 필요한지 여부를 결정할 수 있도록 여행자의 issuing-bank 으로 전송되어 검토됩니다. 자세한 내용은 빠른 예약 API 의 일부인 등록 결제 API를 검토하여 자세히 알아보십시오.
결제 완료 및 예약 확인
Rapid API 으로 예약을 시도하고 브라우저에서 SCA 프로세스가 완료되면 Rapid를 한 번 더 호출해야 합니다. 뒤에서 실제로 인증이 성공했는지 확인하여 예약을 확정할 수 있도록 합니다. 자세한 내용은 빠른 예약 API 에서 결제 완료 세션을 검토하여 자세히 알아보세요.
예약 흐름
파트너 프로필 신속 지원에서 3DS 2.0이 활성화된 경우, 가격 확인 API는 예약 생성 API 대신 결제 등록 API로 연결되는 링크를 반환합니다. 다음 다이어그램은 여행객이 예약을 시작한 후에 필요한 API 호출 시퀀스입니다. 시퀀스에는 JavaScript 라이브러리 및 Rapid에 대한 호출이 모두 포함됩니다.

예약이 인증을 위해 준비된 경우, 항상 인증이 필요하지 않을 수도 있습니다. 인증 필요 여부는 결제에 사용된 신용 카드의 발급 은행에서 결정합니다. 이 결정은 거래 중에 이루어지며 예약 생성 API 응답에 표시됩니다.
다음 다이어그램은 보류 및 재개 사용 시 필요한 API 호출 시퀀스를 나타냅니다.

참고: 위의 다이어그램은 소개 목적으로 실제 API 흐름을 단순화한 것입니다. 전체 API 흐름을 자세히 알아보려면 통합 설명서를 참조해 주세요.
3DS 2.0 환경의 기술적 요구 사항에 대한 자세한 내용은 EMVCo의 3D 보안 프로토콜 및 핵심 기능 사양을 참조하세요 .
Rapid API 및 3DS 2.0 통합 가이드
SCA를 지원하려면 Rapid API 을 새로운 JavaScript 라이브러리(3DS 커넥터라고 함)와 통합해야 합니다. 이 두 가지를 함께 사용하여 check-out 페이지에서 3DS 2.0을 소개하고 예약을 확정할 수 있습니다. 이 솔루션은 Expedia Collect 및 Property Collect 비즈니스 모델을 모두 지원합니다.
3DS 2.0으로 예약을 지원하는 데 필요한 API 호출 순서는 아래에 요약되어 있으며 다음 섹션에 자세히 설명되어 있습니다:
- JavaScript 설정 메서드
- Rapid 결제 등록 API
- JavaScript 세션 초기화 메서드
- Rapid 예약 API
- JavaScript 챌린지 메서드
- Rapid 결제 완료 API
이 순서를 허용하려면 Rapid Partner Support에서 개별 파트너 프로필에 대해 3DS 2.0을 사용하도록 설정해야 합니다.
Rapid API
파트너 프로필에 인증이 활성화된 경우, 3DS 2.0에서 수정된 예약 흐름을 허용하도록 API 응답이 달라집니다.
가용성 API
규정에서 허용하는 경우 인증 면제를 받으려면 API 요청의 sales_channel필드 값이 정확해야 합니다. 이 값은 다른 여러 요소와 함께 카드 발급 은행에서 검토하여 예약 시 결정을 내립니다. 상담원 도구만 SCA에서 면제됩니다. 이를 지정하려면 sales_channel 값을 agent_tool로 설정해 주세요.
요금 확인 API
API 응답에는 예약 생성 API 대신 결제 등록 API 링크가 포함됩니다.
3DS 2.0이 활성화된 경우의 응답 예시입니다:
{
"status": "matched",
"occupancies": {
//...(example omitted for length)
},
"links": {
"payment_session": {
"method": "POST",
"href": "/v3/payment-sessions?token=QldfCGlcUAVgBDRwdWXBBL"
}
}
}결제 등록 API
이는 SCA 예약 흐름의 두 번째 단계이며 JavaScript setup방법 다음으로 진행됩니다.
요청에는 non-SCA 예약 흐름의 일부인 결제 세부 정보와 성공적인 인증을 지원하는 새로운 필드가 포함됩니다. 이 중 encoded_browser_metadata 및 version 필드는 JavaScript API의 setup method에서 반환됩니다.
응답에는 payment_session_id 및 encoded_init_config가 포함됩니다. 이는 JavaScript 라이브러리의 initSession 메서드에 입력으로 지정됩니다. 응답에 포함된 예약 링크는 initSession메서드 뒤에 사용해야 합니다.
요청 예:
{
"version": "1",
"browser_accept_header": "*/*",
"encoded_browser_metadata": "ZW5jb2RlZF9icm93c2VyX21ldGFkYXRh",
"preferred_challenge_window_size": "medium",
"merchant_url": "https://server.adomainname.net",
"customer_account_details": {
"authentication_method": "guest",
"authentication_timestamp": "2018-02-12T11:59:00.000Z",
"create_date": "2018-09-15",
"change_date": "2018-09-17",
"password_change_date": "2018-09-17",
"add_card_attempts": 1,
"account_purchases": 1
},
"payments": [
{
"type": "customer_card",
"card_type": "VI",
"number": "4111111111111111",
"security_code": "123",
"expiration_month": "08",
"expiration_year": "2025",
"billing_contact": {
"given_name": "John",
"family_name": "Smith",
"email": "smith@example.com",
"phone": "4875550077",
"address": {
"line_1": "555 1st St",
"line_2": "10th Floor",
"line_3": "Unit 12",
"city": "Seattle",
"state_province_code": "WA",
"postal_code": "98121",
"country_code": "US"
}
},
"enrollment_date": "2018-09-15"
}
]
}응답 예:
{
"payment_session_id": "76d6aaea-c1d5-11e8-a355-529269fb1459",
"encoded_init_config": "QSBiYXNlNjQgZW5jb2RlZCBvYmplY3Qgd2hpY2ggY29udGFpbnMgY29uZmlndXJhdGlvbiBuZWVkZWQgdG8gcGVyZm9ybSBkZXZpY2UgZmluZ2VycHJpbnRpbmcgYW5kL29yIDNEUyBNZXRob2Qu",
"links": {
"book": {
"method": "POST",
"href": "/v3/itineraries?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
}
}
}예약 생성 API
이는 SCA 예약 흐름의 네 번째 단계이며 JavaScript initSession방법 다음으로 진행됩니다. 요청에는 SCA에 대한 새 필드가 포함되지 않으며, 필요한 모든 정보는 결제 등록 API에서 반환한 예약 링크의 토큰에 포함되어 있습니다. 성공 시 응답에는 항상 itinerary_id가 포함됩니다. 그러나 3DS 2.0 인증이 필요할 수 있으므로 이것만으로는 예약이 확정된 것으로 볼 수 없습니다.
필요한 경우 응답에 encoded_challenge_config. 결제 등록에서 반환된 encoded_challenge_config 및 payment_session_id는 JavaScript challenge 메서드에 매개변수로 전달되어야 합니다.
응답에는 complete_payment_session에 대한 새 링크도 포함됩니다. 이 링크는 JavaScript 라이브러리의 challenge 메서드 후에 사용해야 합니다.
3DS 2.0 인증이 필요하지 않은 경우 예약이 확정되며 retrieve, cancel, 그리고 선택적으로 resume에 대한 링크가 응답에 포함됩니다.
예제 3DS 2.0 인증이 필요한 경우 예약 응답 생성:
{
"itinerary_id": "8999989898988",
"links": {
"complete_payment_session": {
"method": "PUT",
"href": "/v3/itineraries/8999989898988/payment-sessions?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
}
},
"encoded_challenge_config": "ABElifsiejfacies2@033asfe="
}