IAP 애플 내 구매 어음 정보 처리

1333 단어
내부 구매를 할 때 우리는 애플이 지불한 영수증을 서버에 보내야 하기 때문에 우리는 먼저 이 영수증 정보를 얻어야 한다.
그러나 iOS 시스템의 끊임없는 업그레이드로 인해 어음 정보를 얻는 방법이 바뀌었고 최신 어음 정보의 반환 형식은 이전과 다르다. (새로운 방법으로 되돌아오는 정보는 다른 사전 정보를 포함할 수 있다.) 호환 버전의 코드를 사용하면 서버에서 우리가 올린 어음 정보를 해석할 수 없다.
이곳의 처리 방안은 두 가지가 있다. 1: 클라이언트는 되돌아오는 어음 정보를 처리하고 정보를 서버에서 식별하는 json 형식으로 다시 봉인한다.2: 서버 측에서 호환 처리를 하고 새로운 어음 정보를 다른 방식으로 분석한다.
#pragma mark -  
- (NSData*)receiptWithTransaction:(SKPaymentTransaction*)transaction {
    NSData *receipt = nil;
    if ([transaction respondsToSelector:@selector(transactionReceipt)]) {
        //Works in iOS3 - iOS7, deprected since iOS7, actual deprecated (returns nil) since iOS9
        receipt = [transaction transactionReceipt];
    }
#warning --  , , transactionReceipt iOS7.0 . iOS8 , , , iOS7.0 transactionReceipt .
//    if ([[NSBundle mainBundle] respondsToSelector:@selector(appStoreReceiptURL)]) {
//        NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL];
//        receipt = [NSData dataWithContentsOfURL:receiptUrl];
//    } else {
//        if ([transaction respondsToSelector:@selector(transactionReceipt)]) {
//            //Works in iOS3 - iOS8, deprected since iOS7, actual deprecated (returns nil) since iOS9
//            receipt = [transaction transactionReceipt];
//        }
//    }
    return receipt;
}

좋은 웹페이지 즐겨찾기