9

aut-renewableサブスクリプションをテストしていますが、アップルのサンドボックスサーバーは常にstatus = 21004を返します。これは、「指定した共有シークレットが、アカウントに登録されている共有シークレットと一致しない」ことを意味します。私はJavaサーバーでテストします。これは主に次のことを行います。

    String receiptData = "theReceiptDataBytesBase64encoded";
    String sharedSecret = "theSharedSecretAsPureStringProvidedByItunesconnect";


    String jsonData = "{" +
                          "\"receipt-data\" : \"" + receiptData + "\"," +
                          "\"passsword\" : \"" + sharedSecret + "\"" +
                       "}";

    URL url = new URL("https://sandbox.itunes.apple.com/verifyReceipt");
    HttpURLConnection conn = (HttpsURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(jsonData);
    wr.flush();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while((line = rd.readLine()) != null)
    {
     System.out.println(line);
    }
    wr.close();
    rd.close();

上記のコードサンプルで変数値を使用してクリアしようとしたため、共有シークレットをエンコードせず、プレーンな文字列として使用しました。これは問題ですか?

4

1 に答える 1

18

それらはあなたが開発者であることをとても素晴らしいと感じさせる日です...

上記の私の質問を注意深く見ると、3つのfriggin文字でJSONキーのパスワードを使用したことがわかります!!! これが、いくつかのテスト製品とテストユーザー、およびアプリストアサンドボックスの新しい共有シークレットで5時間の試行錯誤を経験した理由です。

「パスワードキーとは何か」というメッセージの代わりに「間違った共有秘密」メッセージを提供してくれたiTunesチームに特に感謝します。

于 2011-04-19T15:54:27.847 に答える