2016-05-29 4 views
0

Ich versuche die Kaufvalidierung für meine App zu implementieren. Ich sehe, dass ich die Kaufquittung an meinen Server senden kann, um mit Apple zu überprüfen. Ich kann jedoch nicht den richtigen Weg finden, die NSData zur Validierung an meine URL zu senden. Etwas wie dieses:Beispiel für das Analysieren einer Quittung für einen In-App-Kauf mit iOS Xamarin?

public void CompleteTransaction (SKPaymentTransaction transaction) { 
    var productId = transaction.Payment.ProductIdentifier; 
    NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl; 
    NSData theData = NSData.FromUrl (receiptURL); 

    RestRequest request = new RestRequest(validationURL, Method.POST); 
    request.AddBody(theData); // ?? 
    restClient.ExecuteAsync<bool>((response) => 
     { 
      FinishTransaction(transaction, response.Data); 
     }); 
} 

Hat jemand ein Beispiel? Ich benutze RestSharp.

Danke!

  • davevr

Antwort

1

OK, gefunden, wie es geht. Der Trick bestand darin, die Quittung in ein Wörterbuch zu zerlegen und dann den Schlüssel daraus zu ziehen. Beispielcode:

public void CompleteTransaction (SKPaymentTransaction transaction) { 
    var productId = transaction.Payment.ProductIdentifier; 
    NSUrl receiptURL = NSBundle.MainBundle.AppStoreReceiptUrl; 
    NSData receipt = NSData.FromUrl (receiptURL); 

    // here is the code I was missing 
    NSDictionary requestContents = NSDictionary.FromObjectAndKey((NSString)receipt.GetBase64EncodedString(
       NSDataBase64EncodingOptions.None), 
       (NSString)"receipt-data"); 

    string receiptData = (requestContents["receipt-data"] as NSString).ToString(); 

    RestRequest request = new RestRequest(<url to your server>, Method.POST); 

    request.AddParameter ("receipt-data", receiptData); 

    apiClient.ExecuteAsync<bool>(request, (response) => 
     { 
      FinishTransaction (transaction, response.Data); 
     }); 

Sobald dies erledigt ist, können Sie die Validierung auf dem Apple-Server durchführen. Es gibt viele Beispielcode im Netz für diesen Teil.

+0

Hallo Dave, Ich konnte die Quittungsdaten von meinem iOS Xamarin Projekt generieren. Aber wenn ich versuche, auf Apple zu validieren, gibt es mir 2100 Status. Das bedeutet, das Token ist nicht gültig. Kannst du mir sagen, was hier nicht stimmt? – Hetal

+0

Sie meinen, auf Ihrer Serverseite? –

Verwandte Themen