In iOS 7, on the SKPaymentTransaction class, the property transactionReceipt
:
// Only valid if state is SKPaymentTransactionStatePurchased. @property(nonatomic, readonly) NSData *transactionReceipt
…is deprecated. But, in my code, I created a InAppPurchase class, and in my method for controlling how is the method buying, I'm using the delegate method in my code and it's like:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { for (SKPaymentTransaction *transaction in transactions) { switch (transaction.transactionState) { case SKPaymentTransactionStatePurchasing: // code and bla bla bla [self initPurchase]; NSLog(@"PASO 1"); break; case SKPaymentTransactionStatePurchased: // this is successfully purchased! purchased = TRUE; NSLog(@"PASO 2"); [self isPurchased]; NSLog(@"purchased %s", purchased? "true" : "false"); // and return the transaction data if ([delegate respondsToSelector:@selector(successfulPurchase:restored:identifier:receipt:)]) [delegate successfulPurchase:self restored:NO identifier:transaction.payment.productIdentifier receipt:transaction.transactionReceipt]; // and more code bla bla bla break; case SKPaymentTransactionStateRestored: // and more code bla bla bla [self restorePurchase]; NSLog(@"PASO 3"); break; case SKPaymentTransactionStateFailed: // and more code bla bla bla [self failedNotification]; NSLog(@"PASO 4"); break; //------------------------------------------// // THANKS GUYS // // GRETTINGS FROM BOLIVIA // // ROCK ON!!!! n_n' // //------------------------------------------// } } }
You can get the receipt as the contents of the mainBundle's appStoreReceiptURL. You can find references: developer.apple.com
This is untested code, but off the top of my head, I'd say something along the lines of:
[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]
should get you the same result that transactionReceipt used to return.
In case anyone maybe also confused about this problem (Maybe You also read an a little outdated tutorial like me...)
Please checkout WWDC 2014 Session 305 Preventing Unauthorized Purchases with Receipts. It covers both iOS & OS X, clear and comprehensive.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With