Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我';我从苹果公司得到21004作为状态值的回复';s沙盒服务器测试自动更新订阅?_Java_Iphone_In App Purchase_Subscription - Fatal编程技术网

Java 为什么我';我从苹果公司得到21004作为状态值的回复';s沙盒服务器测试自动更新订阅?

Java 为什么我';我从苹果公司得到21004作为状态值的回复';s沙盒服务器测试自动更新订阅?,java,iphone,in-app-purchase,subscription,Java,Iphone,In App Purchase,Subscription,我正在测试aut renewable subscription,但苹果的沙盒服务器始终返回status=21004,这意味着“您提供的共享机密与您帐户的共享机密文件不匹配。”。 我使用java服务器进行测试,它主要完成以下任务: String receiptData = "theReceiptDataBytesBase64encoded"; String sharedSecret = "theSharedSecretAsPureStringProvidedByItunesconn

我正在测试aut renewable subscription,但苹果的沙盒服务器始终返回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();

当我试图通过上面代码示例中的变量值来清除时,我并没有将共享秘密编码为普通字符串。这就是问题所在吗?

那些日子让你对成为一名开发人员感到非常高兴

仔细看我上面的问题,你会发现我使用了带有3个该死的“s字符的JSON密钥Passbrow!!!这就是为什么要在应用商店沙箱中用几个测试产品、测试用户和新的共享秘密进行5小时的试错体验


特别感谢iTunes团队提供了“错误的共享机密”消息,而不是“密码是什么”消息

这个答案让我觉得我并不孤单:)我感觉到了你的痛苦,兄弟。我花了几天时间试图弄明白为什么ios应用程序包上传会无限期地挂起。结果是,我在相关域中有一个输入错误。。。