2016-05-18 11 views
2

Hallo Ich versuche, einige Server-Integration mit meinen IAPs in meiner iOS-App zu tun. Die Parameter für das, was ich an den Server sende, benötigen: transaction_ID, product_ID und pennyCost.Holen Sie sich die Kosten von SKTransaction iOS

Die ersten beiden waren einfach genug, um herauszufinden, aber ich kann die Kosten nicht finden. Ich habe einige NSData für die Quittung, aber ich kann nicht herausfinden, wie ich das in irgendeine Form bringen kann, die ich benutzen kann. Das ist bisher mein Code.

- (void)completeTransaction:(SKPaymentTransaction *)transaction { 
NSLog(@"completeTransaction..."); 

purchaseComplete = 2; 

NSString *transaction_key = transaction.transactionIdentifier; 
NSString *productID = transaction.payment.productIdentifier; 
NSNumber *pennyCost = transaction.payment.product.pennyCost; 

NSData *rec = [self receiptForPaymentTransaction:transaction]; 


} 

Die Zeile transaction.payment.product.pennyCost ist ungültig.

Jede Hilfe wäre super danke!

+0

Der Preis ist Teil des 'SKProduct', mit dem die von Ihnen gesendete' SKPayment' erstellt wurde. – rmaddy

+0

Ja, aber ich habe keinen Zugriff auf das Produkt in der vollständigen Transaktion, soweit ich das beurteilen kann. –

+0

@SeanCalkins das ist richtig. Wenn Sie die Kosten eines IAP erfassen möchten, müssen Sie dies tun, wenn Sie die Kaufanfrage einreichen. Sie können das "SKProduct" aus der "SKTransaction" verwenden, um den * aktuellen Preis * dieses Produkts abzurufen, aber dies ist möglicherweise nicht der Preis, der beim Kauf angewendet wurde – Paulw11

Antwort

4

SKPayment hat keinen Preis, seltsam genug. Der Preis ist auf der SKProduct nach dem Abrufen des Produkts mit einem SKProductRequest definiert.

Sie müssen einen Verweis auf die SKProduct Instanzen, die von der SKProductRequest zurückgegeben werden, behalten. Sobald Sie eine Zahlung an die SKPaymentQueue senden und Sie erhalten Ihre Antwort zurück, verwenden Sie die productId der SKPayment, um die passende SKProduct zu finden.

Jetzt ist es möglich, dass Sie eine Zahlungstransaktion später erhalten, nachdem Ihre App neu gestartet wurde. In diesem Fall müssen Sie einen neuen SKProductRequest machen, um den SKProduct zu erhalten, damit Sie den Preis erhalten können.

Der schlechte Teil über all das ist, dass der Preis, den Sie für das Produkt erhalten, sich von dem tatsächlichen Preis unterscheiden kann, da Sie die Produktpreise zwischen dem Zeitpunkt des Zahlungsvorgangs und dem Zeitpunkt Ihrer Bestellung aktualisieren können die Produktinfo.