[swift] 인앱 결제 구현하기 (StoreKit)

인앱 결제는 앱 내에서 사용자가 디지털 상품이나 서비스를 구매할 수 있는 기능입니다. Apple은 이를 위해 StoreKit 프레임워크를 제공하고 있습니다. 이번 포스트에서는 Swift를 사용하여 iOS 앱에서 StoreKit을 이용해 인앱 결제를 구현하는 방법에 대해 알아보겠습니다.

1. StoreKit 설정

먼저 Xcode 프로젝트에서 StoreKit 프레임워크를 추가해야 합니다. 프로젝트 내에서 StoreKit을 import하여 사용할 수 있도록 해줍니다.

import StoreKit

2. 상품 정보 요청

사용자가 구매할 상품의 정보를 가져오기 위해 SKProductsRequest를 사용합니다. 상품 정보 요청을 시작하려면 SKProductsRequest의 인스턴스를 만들고 시작해야 합니다.

let productIdentifiers: Set<String> = ["your_product_id"]
let productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
productsRequest.delegate = self
productsRequest.start()

3. 상품 정보 수신

productsRequestdelegate로 설정된 객체에서 상품 정보를 수신합니다.

extension YourViewController: SKProductsRequestDelegate {
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        let products = response.products
        // 상품 정보를 처리하는 로직 작성
    }
    
    func request(_ request: SKRequest, didFailWithError error: Error) {
        // 상품 정보 요청 실패 처리
    }
}

4. 결제 처리

사용자가 상품을 선택하고 결제를 진행할 때, SKPaymentQueue를 사용하여 결제 요청을 추가합니다.

let payment = SKPayment(product: product)
SKPaymentQueue.default().add(payment)

5. 결제 완료 처리

결제가 완료되면 SKPaymentTransactionObserver를 통해 해당 정보를 수신할 수 있습니다.

extension YourViewController: SKPaymentTransactionObserver {
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            switch transaction.transactionState {
            case .purchased:
                // 결제 완료 처리
                SKPaymentQueue.default().finishTransaction(transaction)
            case .failed, .restored, .deferred:
                // 결제 실패, 복원, 보류 처리
                SKPaymentQueue.default().finishTransaction(transaction)
            default:
                break
            }
        }
    }
}

위의 단계를 따라 Swift를 사용하여 iOS 앱에서 StoreKit을 이용해 인앱 결제를 구현할 수 있습니다.

참고 자료:

이상으로 인앱 결제 구현에 대한 간단한 안내 포스트를 마치겠습니다. 감사합니다.