2012-05-16 1 views
9

나는 거래 내역에 정확히 두 번의 구매를 한 테스트 계정이 하나 있습니다. 두 제품 모두 비 소모품입니다.누락 된 SKPaymentTransactions를 복구하는 방법은 무엇입니까?

은 내가 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];를 사용하여 이전의 트랜잭션을 복원하려고 그런

아이 패드 1에 로그인하고 내가 아이 패드 1에서 로그 아웃

그런 제품 A를 구입하고 아이 패드 2에 로그인하고 제품 B를 구입

전화가 다시 오면 복구 가능한 거래 목록에 제품 B 만 있습니다. 또한

, 나는 이미이 구입 한 '말하는 팝업을 얻을

SKPayment *payment = [SKPayment paymentWithProduct:productA]; 
[[SKPaymentQueue defaultQueue] addPayment:payment]; 

사용하여 아이 패드 2에 다시 제품 A를 구입하는 시도합니다. 확인을 탭하면 무료로 다시 다운로드 할 수 있습니다. '

제품 A를 이미 구입 한 경우 이전 구매를 복원하려고 시도 할 때 제품 목록에없는 이유는 무엇입니까? 왜 사용자가 다시 구매를 시도하게해야합니까?

EDIT :
내가 사용하는 iPad (iPad 1 또는 iPad 2)와 상관없이 복원 가능한 거래 목록에 제품 B 만 표시되고 제품 A는 다시 구입해야한다는 사실을 발견했습니다.

편집 :
원본 요청과 동일한 번들 ID 및 제품 ID를 사용하여 제품 요청, 복원 및 구매 작업을 자체 프로젝트로 외삽했습니다.

지금 아무 것도 없습니다. 복원 가능한 트랜잭션 목록에이 표시되지만 두 제품을 구매할 때 동일한 팝업이 나타납니다.

깨진 Apple 도구로 토끼 구멍을 내려가는 또 다른 여행.

편집 :
이 조사의 영감은 누락 된 자격에 대한 사용자 불만입니다. 이것은 사용자가 iPad 2에서 새로운 iPad 3로 전환 할 때 크게 문제가되기 시작했습니다. 이것은 모든 사용자들 사이에서 일관성이 없지만, 그것들 중 우선 순위를 높이기 위해 악취를 일으킨 사람들이 많습니다. 그리고 Apple 고객 지원부에서 저에게 직접 지시했지만, 이것이 제가 고칠 수있는 문제인지 확신 할 수 없습니다. 특히 애플은 인앱 구매를위한 금전 등록기를 주장하기 때문에.

+0

정상적인 동작인지 궁금해하는데, 그것은 나에게도 동일하게 적용됩니다. – ggfela

+0

정상적인 상태가 아닙니다. 사용자의 전체 거래 내역은 언제든지 모든 기기에서 사용할 수 있어야합니다. – Hyperbole

+0

iOS 7에서이 문제가 발생합니다. 복원 버튼이 실패하지만 사용자가 다시 구매하려고하면 이미 항목을 구매했으며 다운로드 할 것인지 묻습니다. 결국이 문제를 어떻게 풀어 나갔습니까? – SAHM

답변

3

나는 이것이 애플의 서버 소프트웨어의 버그라는 어딘가에 좋은 권위를 가지고있다.

+2

필자는 항상 test itunes 계정을 사용하여이 문제를보고 있습니다. iOS 7 GM에도 문제가 있습니다. – jjxtra

3

이 메시지는 '이미 구입하셨습니다. 확인을 탭하면 무료로 다시 다운로드 할 수 있습니다. ' 는 대개 기본 거래 대금에 지불 거래를 추가 할 때 나타나며 거래를 완료하지 않았으므로 StoreKit 사용자가 상품을 구매했지만 신청서에 의해 다운로드되지 않았다고 가정하므로 귀하가 사용자에게 항목 및 트랜잭션을 완료 ... I'v는 사용자 구입 한 항목과 나에 대한 작업 좋은를 검색 할 수있는 방법이있어 .. 모든 제품 ID을 포함 그것을

- (void) checkPurchasedItems 
{ 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
}//You Call This Function 

//Then this delegate Function Will be fired 
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 
{ 
    purchasedItemIDs = [[NSMutableArray alloc] init]; 

    NSLog(@"received restored transactions: %i", queue.transactions.count); 
    for (SKPaymentTransaction *transaction in queue.transactions) 
    { 
     NSString *productID = transaction.payment.productIdentifier; 
     [purchasedItemIDs addObject:productID]; 
    } 

} 

purchasedItemIDs 시도 사용자가 구입했습니다.

+0

예, 할 수 있습니다. 이 콜백의'queue' 매개 변수는 트랜잭션 옵저버 콜백만큼 빈 것입니다. – Hyperbole

+0

때때로 복원해야하는 모든 제품에 대해 다시 호출되지 않습니다. 이것은 여전히 ​​iOS 7 GM의 버그입니다. – jjxtra