iOS 응용 (swift)
[iOS] 1. 애플페이 (Apply Pay) - 처리해야하는 전체 플로우
jake-kim
2026. 5. 20. 01:15
애플페이 관련 목차
애플페이을 준비하는 앱 개념
- Issuer App vs Merchant App
- Issuer App: 단순히 특정 A앱에서 카드들을 애플월렛에 등록하는 역할 (provisioning 이라고 함)
- Merchant App: A앱에서 애플페이를 이용한 결제기능을 제공하는 역할
- 중요한 것
- Issuer App은 Apple Develop페이지에서 Pass Type ID 등록만하면 됨
- Merchant App은 Apple Develop페이지에서 Merchant ID 등록, CSR 업로드, App ID 등록을 해줘야함 (아래에서 소개 예정)
처리해야하는 전체 플로우

1단계: Apple Developer 인프라 설정

Apple Pay 결제 데이터의 암호화 키체인을 구성하는 단계
- Merchant ID (판매자 식별자) 생성: 우리 앱이 Apple Pay 시스템에서 결제를 요청할 수 있는 고유한 상점 ID(merchant.com.domain...)를 등록하는 과정
- Payment Processing Certificate (결제 처리 인증서) 생성: 사용자가 페이스 ID 등으로 인증하면 Apple 서버는 결제 정보를 암호화. 이때 암호화에 사용되는 공개키(Public Key)를 Apple에 등록하고, 이를 복호화할 수 있는 개인키(Private Key) 쌍을 만드는 과정
2단계: 결제 대행사(PG) 연동 및 환경 설정

Apple Pay 결제 데이터를 복호화하고 실제 원화(KRW) 결제 승인을 처리할 PG사 연동 단계
- PG사 선정 및 계약: 토스페이먼츠, 포트원, NHN KCP, KG이니시스 등 Apple Pay 지원 국내 PG사 선택 및 가맹 계약 진행
- 인증서 업로드: 1단계에서 생성한 Payment Processing Certificate(.cer 파일)를 PG사 상점 관리자 콘솔에 등록
- 💡 등록 이유: Apple 서버가 암호화하여 앱으로 전송한 결제 데이터(Token)를 PG사가 복호화할 수 있도록 권한을 위임하는 작업
3단계: Xcode 프로젝트 개발 환경 설정

생성한 Merchant ID를 Xcode 프로젝트와 동기화하여 앱에 Apple Pay 권한을 부여하는 단계
- Apple Pay Capability 추가: Xcode 프로젝트의 Signing & Capabilities 탭에서 + Capability 버튼을 통해 Apple Pay 기능 추가
- Merchant ID 매핑: 추가된 Apple Pay 섹션의 새로고침(🔄) 버튼을 클릭하여 생성해 둔 ID를 동기화하고 해당 체크박스 선택
- 완료 시 프로젝트 내 [프로젝트명].entitlements 파일이 자동 생성/업데이트되며 Apple Pay 권한이 명시됨
4단계: 앱 내 결제 로직 구현 (코드 작성)

사용자 결제 버튼 클릭부터 Apple Pay 시트 인증 및 최종 결제 완료까지의 클라이언트 코드 구현 단계 (PassKit 프레임워크 활용)
- PG사 iOS SDK 설치: SPM 또는 CocoaPods를 통해 선택한 PG사의 최신 iOS SDK를 프로젝트에 추가
- Apple Pay 전용 버튼 배치: Apple 디자인 가이드라인을 준수하는 내장 이니셜라이저 기반의 PKPaymentButton을 UI에 배치
- 결제 요청서(PKPaymentRequest) 정의: Merchant ID, 국가 코드(KR), 통화 코드(KRW), 지원 카드 브랜드 목록 지정 및 결제 금액 목록(PKPaymentSummaryItem) 구성 (배열의 마지막 아이템이 최종 결제 총액)
- 결제 시트 표시 및 델리게이트 구현: PKPaymentAuthorizationController를 통해 화면 하단에 Apple Pay 결제 시트 노출 및 사용자 인증 처리
- 토큰 추출 및 PG사 전달: didAuthorizePayment 콜백 메서드로 전달된 PKPayment 객체에서 암호화된 결제 데이터(payment.token.paymentData)를 추출하여 PG사 결제 승인 API로 전송
- 결제 결과 처리: PG사 서버의 최종 결제 승인 결과에 따라 Apple Pay 시트에 성공/실패 애니메이션을 표시하고 시트 종료(dismiss)