1

次のように、base64 でエンコードされたデータを受信確認アドレスにポスト リクエストします (これは C# です)。

        var postSerializer = new JavaScriptSerializer();
        byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(Receipt);
        string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);

        var temp = new Dictionary<string, string>();

        temp.Add("receipt-data", returnValue);

        string jsonReceipt = postSerializer.Serialize(temp);
        request.Method = "POST";
        request.ContentType = "application/json";

        byte[] postBytes = System.Text.Encoding.ASCII.GetBytes(jsonReceipt);



        request.ContentLength = postBytes.Length;
        Stream dataStream = request.GetRequestStream();

        // Write the data to the request stream.
        dataStream.Write(postBytes, 0, postBytes.Length);
        // Close the Stream object.
        dataStream.Close();
        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();

Apple レシート検証エンドポイントから例外が返されないため、正しい形式になっていると確信しています。私が返す応答の全体は

{ステータス: -42352}

そして、このエラーの意味がどこにもわかりません。これが何を意味するのか、または私のコードにエラーがあるかどうかを知っている人はいますか?

4

1 に答える 1

3

同じ問題を解決しました。ここから解決策を得ました:アプリ内購入の領収書を確認する

問題はポストエンコーディングにありました。サーバーで投稿をエンコードしたとき

$receipt = json_encode(array("receipt-data" => base64_encode($receiptdata)));

同じ -42352 ステータスでした。iPhone でエンコードに独自の関数を使用すると、すべてが機能しました。魔法...

于 2011-06-15T11:53:08.663 に答える