
작동 방식
인라인 checkout은 페이지의 컨테이너에 안전한 Dodo Payments 프레임을 렌더링합니다. 이 프레임은 고객 정보와 결제 세부 정보를 수집합니다. 페이지에는 항목, 합계 및 기타 정보가 표시됩니다. SDK를 사용하면 페이지와 checkout 프레임이 서로 통신할 수 있습니다. checkout이 완료되면 Dodo Payments는 결제를 생성하거나, 구독 상품인 경우 구독을 생성하고 webhook을 전송하여 액세스 권한을 프로비저닝할 수 있도록 합니다.좋은 인라인 checkout의 조건
고객은 누구에게서 무엇을 구매하는지, 그리고 얼마를 결제하는지 알아야 합니다. 구현에는 다음 항목이 포함되어야 합니다:
Example inline checkout layout showing required elements
- 반복 결제 정보: 반복 결제인 경우 결제 주기와 갱신 시 결제할 총액을 표시합니다. 체험 기간이 있는 경우 체험 기간도 표시합니다.
- 상품 설명: 구매하는 상품에 대한 설명입니다.
- 거래 합계: 통화 단위를 포함한 소계, 총 세금 및 총액입니다.
- Dodo Payments 푸터: Dodo Payments 정보, 판매 약관 및 개인정보 보호정책이 포함된 푸터를 포함하여 인라인 checkout 프레임 전체를 표시합니다.
- 환불 정책: Dodo Payments의 표준 환불 정책과 다른 경우 자체 환불 정책으로 연결되는 링크를 표시합니다.
고객 여정
checkout 흐름은 checkout session 구성에 따라 달라집니다. session을 구성하는 방식에 따라 고객은 모든 정보를 한 페이지에서 보거나 여러 단계에 걸쳐 보게 됩니다.Customer opens checkout
checkout.breakdown와 같은 SDK 이벤트를 사용하여 페이지 내 정보를 표시하고 업데이트하세요.
Customer enters their details
Customer selects payment method

Checkout completed

Dodo Payments creates the payment or subscription

빠른 시작
SDK를 설치하고 인라인 모드로 초기화한 다음 컨테이너 요소에서 checkout을 엽니다:단계별 통합
Install the SDK
Initialize the SDK for Inline Display
displayType: 'inline'를 지정합니다. checkout.breakdown 이벤트를 수신하여 실시간 세금 및 총액 계산 결과로 UI를 업데이트하세요:Create a Container Element
Open the Checkout
DodoPayments.Checkout.open()를 컨테이너의 checkoutUrl 및 elementId와 함께 호출합니다:Test Your Integration
- 개발 서버를 시작합니다:
- checkout 흐름을 테스트합니다:
- 인라인 프레임에 이메일과 주소 세부 정보를 입력합니다
- 사용자 지정 주문 요약이 실시간으로 업데이트되는지 확인합니다
- 테스트 자격 증명을 사용하여 결제 흐름을 테스트합니다
- 리디렉션이 올바르게 작동하는지 확인합니다
onEvent callback에 console log를 추가했다면 브라우저 콘솔에 checkout.breakdown 이벤트가 기록되는 것을 확인할 수 있습니다.Go Live
- 모드를
'live'로 변경합니다:
- checkout URL을 백엔드의 live checkout session을 사용하도록 업데이트합니다
- 프로덕션에서 전체 흐름을 테스트합니다
완전한 React 예시
이 예시는checkout.breakdown 이벤트를 사용하여 사용자 지정 주문 요약과 인라인 checkout을 함께 구현하고 서로 동기화하는 방법을 보여줍니다:
API Reference
초기화
SDK를 설정하려면Initialize를 한 번 호출합니다:
Checkout 열기
컨테이너에서 checkout 프레임을 엽니다:Checkout 닫기
checkout 프레임을 프로그래밍 방식으로 제거하고 이벤트 리스너를 정리합니다:상태 확인
현재 checkout 프레임이 삽입되어 있는지 확인합니다:이벤트
SDK는onEvent callback을 통해 실시간 이벤트를 제공합니다. 인라인 checkout에서는 checkout.breakdown가 UI 동기화에 특히 유용합니다:
Checkout 내역 데이터
checkout.breakdown 이벤트는 가격 및 세금 정보를 제공합니다:
- 통화 형식 지정: 가격은 통화의 가장 작은 단위로 표시되는 정수입니다(예: USD의 센트). 소수점 두 자리를 사용하는 통화는
Intl.NumberFormat로 형식을 지정하기 전에 100으로 나눕니다. JPY와 같은 소수점 없는 통화에는 더 작은 단위가 없으므로 나누지 않습니다. - 초기 상태 처리: checkout이 처음 로드될 때 사용자가 청구 정보를 입력하거나 코드를 적용하기 전까지
tax및discount가0또는null일 수 있습니다. 이러한 상태를 적절하게 처리하세요(예: 대시—를 표시하거나 행을 숨김). - “Final Total”과 “Total”:
total는 표준 가격 계산을 제공하지만,finalTotal는 거래의 기준값입니다.finalTotal가 있으면 고객 카드에 실제로 청구될 금액을 정확히 나타냅니다. - 실시간 피드백:
tax필드를 사용하여 세금이 실시간으로 계산되고 있음을 사용자에게 표시하세요. checkout 페이지가 실시간으로 반응하는 느낌을 주고 주소 입력 단계의 마찰을 줄일 수 있습니다.
CDN 구현
빌드 단계 없이 빠르게 통합하려면 CDN에서 SDK를 로드합니다:결제 수단 업데이트
인라인 checkout은 구독의 결제 수단 업데이트를 지원합니다. 고객이 활성 구독의 결제 수단을 업데이트하거나 보류 중인 구독을 재활성화해야 하는 경우, 페이지 레이아웃 내에서 바로 업데이트 흐름을 렌더링할 수 있습니다.작동 방식
- Update Payment Method API를 호출하여
payment_link를 가져옵니다:
- 반환된
payment_link를checkoutUrl로 전달하여 인라인 checkout을 엽니다:
보류 중인 구독의 경우
on_hold 상태의 구독에 대한 결제 수단을 업데이트하면 Dodo Payments는 남은 미납액에 대해 자동으로 charge를 생성합니다. 재활성화를 확인하려면 payment.succeeded 및 subscription.active webhook을 모니터링하세요.
오류 처리
onEvent callback에는 항상 오류 처리를 구현하세요:
모범 사례
- 반응형 디자인: 컨테이너 요소에 충분한 너비와 높이가 있는지 확인합니다. iframe은 일반적으로 컨테이너를 채우도록 확장됩니다.
- 동기화:
checkout.breakdown이벤트를 사용하여 사용자 지정 주문 요약 또는 가격표를 checkout 프레임에 표시되는 내용과 동기화합니다. - Skeleton 상태:
checkout.opened이벤트가 발생할 때까지 컨테이너에 로딩 표시기를 표시합니다. - 정리: 컴포넌트가 unmount될 때
DodoPayments.Checkout.close()를 호출하여 iframe과 이벤트 리스너를 정리합니다.
#0d0d0d를 배경색으로 사용하세요.결제 상태 검증
서버 측 검증이 필수적인 이유
인라인 checkout 이벤트는 실시간 피드백을 제공하지만, 결제 상태를 확인하는 유일한 기준으로 사용해서는 안 됩니다. 네트워크 문제, 브라우저 충돌 또는 사용자가 페이지를 닫는 상황으로 인해 이벤트가 누락될 수 있습니다. 신뢰할 수 있는 결제 검증을 위해 다음을 수행하세요:- webhook 이벤트 수신 - Dodo Payments는 결제 상태 변경에 대한 webhook을 전송합니다.
- polling 메커니즘 구현 - 프런트엔드는 상태 업데이트를 위해 서버를 polling해야 합니다.
- 두 방식 결합 - webhook을 기본 소스로 사용하고 polling을 대체 수단으로 사용합니다.
권장 아키텍처
구현 단계
1. checkout 이벤트 수신 - 사용자가 결제 버튼을 클릭하면 상태 확인 준비를 시작합니다:payment.succeeded 또는 payment.failed webhook을 전송하면 데이터베이스를 업데이트합니다. 자세한 내용은 Webhooks documentation을 참조하세요.
문제 해결
Checkout frame is not appearing
Checkout frame is not appearing
elementId가 실제로 DOM에 존재하는div의id와 일치하는지 확인합니다displayType: 'inline'가Initialize에 전달되었는지 확인합니다checkoutUrl가 유효한지 확인합니다
Taxes are not updating in my UI
Taxes are not updating in my UI
checkout.breakdown이벤트를 수신하고 있는지 확인합니다- checkout 프레임에서 사용자가 유효한 국가와 우편번호를 입력한 후에만 세금이 계산됩니다
디지털 지갑
Apple Pay, Google Pay 및 기타 디지털 지갑 설정에 대한 자세한 내용은 Digital Wallets 페이지를 참조하세요.Apple Pay 빠른 설정
Open Wallet domains

Open Wallet domains from the Apple Pay row
Download the domain association file

Download the Apple Pay domain association file
Register your domain
shop.example.com)을 입력한 다음 Continue를 클릭합니다.
Register the domain where you embed inline checkout
Host the file on your domain
Content-Type: application/octet-stream 또는 text/plain와 함께 제공되어야 합니다.Verify the domain

Verify the hosted association file
Confirm it's active

Verified domains show an Active status
Test the integration
- Apple 기기에서 checkout을 엽니다
- Apple Pay 버튼이 표시되는지 확인합니다
- 테스트 거래를 완료합니다
브라우저 지원
Dodo Payments Checkout SDK는 다음을 지원합니다:- Chrome (최신 버전)
- Firefox (최신 버전)
- Safari (최신 버전)
- Edge (최신 버전)
- IE11 이상