2015-11-11 23 views
6

mia app contiene prodotti consumabili IAP, restituisce più transazioni quando ho chiamata ricevuta di convalida con questo codice:ritorni molte transazioni su iOS in-app-acquisti convalida ricevimento

[[NSBundle mainBundle] appStoreReceiptURL]; 

Esiste un modo per tornare solo l'ultima transazione?

È relativo al ripristino delle transazioni?

Ho controllato questo Multiple receipt count for restoreCompletedTransaction inapp purchasing e questo iOS in-app-purchase restore returns many transactions.

Ho provato a ripristinare tutti gli acquisti ma non ha funzionato.

sto usando queste righe per il ricevimento chiamando:

- (void) checkReceipt { 

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; 
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL]; 
if(!receipt) { 

} 
NSError *error; 
NSDictionary *requestContents = @{@"receipt-data": [receipt base64EncodedStringWithOptions:0]}; 
NSLog(@"requestContents:%@", requestContents); 
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents 
                 options:0 
                 error:&error]; 

if (!requestData) { } 

NSURL *storeURL = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]; 

NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:storeURL]; 
[storeRequest setHTTPMethod:@"POST"]; 
[storeRequest setHTTPBody:requestData]; 

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:storeRequest queue:queue 
         completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

          if (connectionError) { 


          } else { 


          } 
         }]; 

}

Nota: Questa applicazione supporta iOS 8+.

risposta

1

Non è correlato al ripristino delle transazioni, è perché Apple risponde con la matrice di tutte le transazioni in-app effettuate dall'utente quando effettua una richiesta di convalida. Le stesse informazioni sono contenute nella ricevuta se decodificate localmente.

Se stai cercando l'ultima transazione effettuata, puoi ordinare l'array in ordine crescente dal purchase_date_ms e prendere l'ultimo.

Il mio obiettivo-c non è così caldo, quindi non posso aiutarti con l'ordinamento ma questo documento può aiutare: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html