iOS 응용 (swift)
[iOS] 4. 애플페이 (Apply Pay) - 애플월렛과 앱에서 카드등록 개념
jake-kim
2026. 6. 17. 01:35
애플페이 관련 목차
대응해야하는 영역
- 내앱에서 애플페이 결제는 지원하지 않고, 내앱에 있는 카드 정보를 애플월렛에 등록하여 애플월렛에서 결제하게끔 도와주는 방법을 대상으로 설명 예정 (Issuer App 관점)
1. 진입점이 애플월렛: 애플월렛 -> 내앱(Issuer App) -> 애플월렛
사용자가 애플월렛 앱에서 직접 카드를 추가(실물 카드 카메라 스캔 또는 번호 직접 입력)하는 도중, "이 사람이 진짜 카드 주인이 맞는지 발급사 앱에서 인증해라"라고 요청받아 넘어오는 플로우
- 핵심 메커니즘: 유니버설 링크를 통한 신원 확인 (Step-up Authentication)
- 흐름:
- 애플월렛이 발급사의 유니버설 링크를 호출하여 발급사 앱을 강제로 깨움.
- 발급사 앱이 켜지면서 URL에 담긴 토큰 정보를 파싱하고, 사용자에게 Face ID 또는 간편비밀번호 인증을 요구.
- 인증이 성공하면 발급사 백엔드가 TSP(카드 브랜드사)에 "인증 완료" 신호를 보냄.
- 앱이 shoebox:// 스킴을 호출하여 사용자를 다시 애플월렛으로 돌려보냄.
* shoebox 앱스킴: Apple Wallet(애플월렛) 앱을 호출하기 위해 Apple이 전 세계 모든 개발사에게 공식적으로 지정해 둔 실제 프로덕션용 URL 스킴
- 특징: 앱과 앱 사이를 전환(애플월렛 ➔ 발급사 앱 ➔ 애플월렛)하며 흐름이 이어짐

2. 진입점이 내앱: 내앱(Issuer App) -> 애플월렛
- 발급사 앱 안에서 사용자가 "애플 월렛에 추가" 버튼을 눌러 카드를 등록
- 핵심 메커니즘: 암호화 데이터 토싱 (Pass-Through)
- 흐름
- 1. 앱에서 Apple 표준 등록 시트(PKAddPaymentPassViewController)를 띄움.
- 2. 기기가 생성한 일회성 암호화 키(Nonce)를 발급사 앱이 받아서 발급사 백엔드로 전달.
- 3. 백엔드가 카드 정보와 Nonce를 결합해 암호화된 페이로드(Payload)를 만들어 앱으로 반환.
- 4. 앱이 이 페이로드를 그대로 Apple 서버에 제출하면 카드 등록 완료.
- 특징: 화면 전환 없이 발급사 앱 안에서 모달 시트 형태로 매끄럽게 종료

두 방식의 차이
가장 큰 차이는 카드 정보(원장)의 출발지와 UI 주도권이 누구에게 있느냐
| 비교 항목 | 🟢 내 앱에서 시작 (Green-Flow) | 🟡 애플월렛에서 시작 (Yellow-Flow) |
| 주도권 (시작점) | Issuer App (발급사 앱) | Apple Wallet (애플월렛 앱) |
| 카드 정보 입력 | 필요 없음 (앱 내부 카드 목록에서 선택) | 필요함 (사용자가 직접 입력 또는 카메라 스캔) |
| 핵심 기술 요소 | PassKit 프레임워크 델리게이트 구현 | Universal Link 및 URL Scheme (shoebox://) |
| 보안 작업의 본질 | 안전하게 카드 정보를 암호화하여 Apple에 전달 | 사용자가 본인이 맞는지 생체인증 등으로 검증 |
| 화면 경험 (UX) | 발급사 앱 내부에서 모달 창으로 해결 | 앱 간의 유기적인 스위칭 (App-to-App) |