딥링크 (Deep Link)
딥링크(Deep Link)란 모바일 디바이스에서 특정 앱을 실행시키거나, 앱 내부의 특정 화면(Page)으로 이동시키기 위해 사용하는 URI(Uniform Resource Identifier) 체계입니다.
결제 시스템에서는 앱투앱(App-to-App) 결제 시 필수적으로 사용됩니다. 쇼핑몰 앱에서 결제 버튼을 눌렀을 때, 카드사 인증 앱(ISP, KB Pay 등)을 호출하거나, 인증 완료 후 다시 쇼핑몰 앱의 결과 화면으로 복귀할 때 이 기술이 사용됩니다.
⚙️ 동작 방식 (App-to-App Flow)
모바일 결제 연동 시 딥링크는 호출(Invoke)과 복귀(Return)의 양방향 통신 역할을 합니다.
📝 기술 유형 비교: URL Scheme vs Universal Link
개발자는 OS 환경에 따라 두 가지 방식을 모두 고려해야 합니다.
| 구분 | URL Scheme (Custom Scheme) | Universal Link / App Link |
|---|---|---|
| 형식 | myapp://path?query=value | https://myapp.com/path |
| 특징 | 설정이 간편하고 모든 앱에서 지원함 | 표준 웹 프로토콜(HTTP)을 사용하여 보안이 강력함 |
| 장점 | 구현이 쉽고 직관적임 | 앱이 없으면 자동으로 웹페이지로 연결됨 (Fallback) |
| 단점 | 다른 앱과 스키마가 겹칠 수 있음 (Collision) | 서버 설정(apple-app-site-association 등)이 필요하여 복잡함 |
| 결제 활용 | 대부분의 국내 카드사/PG 앱이 사용 | 일부 글로벌 서비스 및 최신 앱에서 사용 |
💻 개발자 팁 (Integration Checkpoints)
1. Android 11+ 패키지 가시성 (Queries)
Android 11(API 30) 이상부터는 보안 정책 강화로 인해, 내 앱에서 다른 앱(카드사 앱)을 호출하거나 설치 여부를 확인하려면 AndroidManifest.xml에 <queries> 태그를 선언해야 합니다.
- 증상: 앱이 설치되어 있는데도
Package not found에러가 발생하며 마켓으로 이동함. - 해결: PG사에서 제공하는 패키지 리스트를 매니페스트에 추가해야 합니다.
<queries>
<package android:name="kvp.jjy.MispAndroid320" /> <package android:name="com.kbcard.cxh.appcard" /> </queries>
2. iOS 스키마 화이트리스트 (LSApplicationQueriesSchemes)
iOS 역시 Info.plist에 호출하려는 외부 앱의 스키마를 미리 등록해야 canOpenURL 메소드가 정상 작동합니다.
- Key:
LSApplicationQueriesSchemes(Array) - Value:
ispmobile,kb-acp,mpocket.online.ansimclick등
3. 마켓 이동 처리 (Fallback)
딥링크 호출 실패(앱 미설치) 시, 사용자 경험이 끊기지 않도록 반드시 앱 스토어/플레이 스토어 설치 URL로 이동시키는 예외 처리가 필요합니다.