Erzeuge ein JSON-Objekt mit transactionReceipt

8

Ich habe in den letzten Tagen versucht, meine erste In-App-iPhone-Anwendung zu testen. Leider kann ich nicht den Weg finden, mit iTunes Server zu sprechen, um die transactionReceipt zu überprüfen.

Weil es mein erster Versuch mit dieser Technologie ist, entschied ich mich dafür, den Empfang direkt vom iPhone zu überprüfen, anstatt Server-Unterstützung zu verwenden. Aber nach dem Versuch, die POST-Anfrage mit einem JSON-Objekt zu senden, das mit der JSON-API aus dem Google-Code erstellt wurde, gibt itunes immer eine seltsame Antwort zurück (stattdessen die "status = 0" -Zeichenkette, auf die ich warte).

Hier ist der Code, mit dem ich den Beleg verifiziere:

%Vor%

vielleicht vergesse ich etwas in den Kopfzeilen der Anfrage, aber ich denke, dass das Problem in der Methode liegt, die ich benutze, um das JSON-Objekt zu erstellen.

Wie das JSON-Objekt aussieht, bevor ich es zu HTTPBody hinzufüge:

%Vor%

Die Antworten, die ich habe:

  

vollständige Antwort {       exception="java.lang.IllegalArgumentException: Das Analysieren der Eigenschaftenliste ist fehlgeschlagen, als versucht wurde, eine nicht mit Anführungszeichen versehene Zeichenfolge zu lesen. Es wurden keine zulässigen Zeichen gefunden. Bei Zeilennummer: 1, Spalte: 0.";       Status = 21002;   }

Vielen Dank für Ihre Führung.

    
Carlos 19.08.2009, 16:37
quelle

2 Antworten

20

Ich habe das gerade erst nach zwei Tagen Kämpfen behoben. Sie müssen den Beleg mit Base64 codieren, bevor Sie ihn in das json-Objekt einfügen. So (Ruby):

%Vor%

Base64 wird nirgendwo in den offiziellen Dokumenten erwähnt (zumindest für SDK 3.0), nur in einigen Blogs.

Zum Beispiel hier verschlüsselt der Typ den Bon in Base64, bevor er übergeben wird Es wird auf den PHP-Server übertragen, entschlüsselt es jedoch nicht zurück in PHP und sendet Base64-codierte Zeichenfolgen an iTunes.

    
Oleg Andreev 01.09.2009, 22:21
quelle
2

Betreff: "21002: java.lang.IllegalArgumentException: propertyListFromString hat ein Objekt analysiert, aber es gibt noch mehr Text in der Zeichenfolge.:"

Ich habe ein ähnliches Problem in meinem Code behoben, indem ich die Belegdaten in {} vor der Codierung verpackt habe.

Der resultierende Beleg sieht folgendermaßen aus:

%Vor%

Hier ist der Code, den ich verwende:

%Vor%

Apples Antwort:

%Vor%

Viel Glück!

    
Phil Lockwood 26.05.2010 23:10
quelle