Swift용 공식 Dodo Payments iOS checkout SDK입니다. 네이티브 브라우저 뷰에서 Dodo의 호스팅 checkout을 열고 타입이 지정된 결과를 반환합니다.
Checkout Sessions API
이 SDK가 열 checkout_url을 backend에서 생성합니다.
Mobile Integration Guide
전체 모바일 결제 흐름에서 어떻게 구성되는지 확인하세요.
SFSafariViewController에서 열고 API key를 보유하지 않으며 Dodo API를 직접 호출하지 않습니다. 모든 checkout 로직은 브라우저에서 실행되고, SDK는 뷰 수명 주기를 관리하며 return URL을 캡처하기만 합니다.
iOS 16 이상 및 Swift 6이 필요합니다.
설치
1
Add the Package
Xcode에서 File → Add Package Dependencies로 이동한 다음 다음을 입력합니다:버전 1.0.0 이상을 선택합니다.또는
Package.swift에 추가합니다:Package.swift
2
Register a Callback URL Scheme
checkout에서 반환되는 URL을 수신하려면 앱에서 URL scheme을 등록해야 합니다. Xcode의 Info → URL Types UI를 통해 추가할 수도 있습니다.
Info.plist에 다음을 추가합니다:Info.plist
사용법
Return URL 전달
SFSafariViewController에는 자체 return URL을 가로챌 수 있는 프로세스 내 방법이 없습니다. 앱에서 수신한 URL을 SDK로 전달해야 합니다.
- SwiftUI
- SceneDelegate
여기서는 모든 URL을 전달해도 안전합니다.
handleOpenURL는 등록된 returnUrl와 일치하는 URL에만 작동하며, 그 외의 URL에는 false를 반환합니다.결과의 의미
CheckoutStatus
필수
succeeded, failed, cancelled, pending, expired 중 하나입니다.String?
return URL에 해당 값이 포함된 경우 설정됩니다. UI에 표시하되 액세스 권한을 부여하는 데 사용하지 마세요. 아래의 결제 확인을 참조하세요.
String?
subscription checkout에 대해 설정됩니다.
[String]?
checkout에 license key 제품이 포함된 경우 설정됩니다.
String?
checkout에서 이메일을 수집하는 경우 설정됩니다.
[String: String]
return URL의 모든 query parameter를 있는 그대로 포함합니다.
결제 확인
Webhooks
결제가 성공하거나 subscription이 활성화되면 Dodo Payments가 backend를 호출합니다.
Get Payment Detail
secret key를 사용하여
paymentId를 조회하고 상태를 직접 확인합니다.result.status만으로 부여해서는 안 됩니다.
오류
start는 잘못된 사용이나 플랫폼 장애가 발생한 경우에만 CheckoutError를 발생시킵니다. 취소되거나 거부된 결제는 항상 결과로 반환되며 예외가 아닙니다.
invalidCheckoutUrl(INVALID_CHECKOUT_URL):checkout.dodopayments.comsession URL이 아닙니다.invalidReturnUrl(INVALID_RETURN_URL): 유효한 absolute URL이 아닙니다.alreadyInProgress(ALREADY_IN_PROGRESS): checkout이 이미 실행 중입니다.platformError(PLATFORM_ERROR): 예상치 못한 플랫폼 장애입니다.
중단된 세션
checkout 중 앱이 종료된 경우 다음 실행 시 세션을 복구하고 backend와 대조하여 처리하세요.
관련 문서
Mobile Integration Guide
Android, React Native, Flutter에도 동일한 계약이 적용됩니다.
React Native SDK
iOS에서 동일한 Swift core를 래핑합니다.