Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Clean Code
- 리펙터링
- ios
- 클린 코드
- uiscrollview
- UITextView
- clean architecture
- MVVM
- HIG
- Refactoring
- 스위프트
- collectionview
- rxswift
- Protocol
- RxCocoa
- swift documentation
- swiftUI
- tableView
- SWIFT
- 애니메이션
- Human interface guide
- map
- Xcode
- combine
- UICollectionView
- uitableview
- 리펙토링
- 리팩토링
- ribs
- Observable
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 3. 인앱 결제 StoreKit 개념 - 구매 완료 검증 (appStoreReceiptURL, SKReceiptRefreshRequest) 본문
iOS 응용 (swift)
[iOS - swift] 3. 인앱 결제 StoreKit 개념 - 구매 완료 검증 (appStoreReceiptURL, SKReceiptRefreshRequest)
jake-kim 2022. 11. 17. 23:19구매 후 검증
- 앱스토어 영수증을 가지고 앱이나 서버에 영수증 검증 코드를 추가하여 구입한 컨텐츠를 검증
- 보안 코딩 필요
영수증 검증 2가지 방법
- 1.로컬
- 디바이스에서 영수증을 검증
- IAP 영수증의 서명을 검증하기 위한 방법으로 권장
- 2.서버
- 서버가 AppStore를 통해 영수증 검증
- 구매 기록을 유지하고 관리할 때 권증
AppStore 영수증 검증 플로우
- AppStore 영수증은 애플 인증서로 서명된 암호화된 이진 파일
- 이 암호화된 파일의 내용을 읽으려면, verifyReceipt 를 통해 읽기가 가능
- 보통 서버 사이드에서 verifyReceipt API를 사용하여 검증
- 앱에서 verifyReceipt API를 사용하지 않는 이유?
- 서버 사이드에서 verifyReceipt를 이용할때 개발용 (sandbox) url이 따로 존재하여 선택하여 사용이 가능
// Production URL POST <https://buy.itunes.apple.com/verifyReceipt> // Sandbox URL POST <https://sandbox.itunes.apple.com/verifyReceipt>
AppStore 영수증 검증 디테일
- 앱에서 영수증을 획득하여 서버에 검증해달라고 요청
- 디바이스에서 영수증 데이터를 가져오려면, Bundle에 있는 appStoreReceiptURL을 가져와서 base64로 변환한 후 이 데이터를 서버로 전송
// 영수증 가져오기
var base64Receipt: String? {
Bundle.main.appStoreReceiptURL
.flatMap({ try? Data(contentsOf: $0) })
.map { $0.base64EncodedString() }
}
// 영수증 보내기
- 서버에서 검증 후 이 다음 동작?
새로운 영수증 요청 SKReceiptRefreshRequest
- 영수증이 유효하지 않거나 누락된 경우 이 API 사용하여 새로운 영수증 요청
- 이 인스턴스를 만들고, delegate를 준수한 후 start()하면 delegate에서 리프레시 확인이 가능
init(receiptProperties: [String: Any]?)
var receiptProperties: [String: Any]?
let SKReceiptPropertyIsExpired: String // 영수증이 만료되었는지 알 수 있는 키값
let SKReceiptPropertyIsRevoked: String // 영수증이 취소되었는지 알 수 있는 키값
let SKReceiptPropertyIsVolumePurchase: String // VPP 영수증인지 알 수 있는 키값
*참고
https://developer.apple.com/documentation/appstorereceipts/verifyreceipt
'iOS 응용 (swift)' 카테고리의 다른 글
Comments