Java 为什么我';我从苹果公司得到21004作为状态值的回复';s沙盒服务器测试自动更新订阅?
我正在测试aut renewable subscription,但苹果的沙盒服务器始终返回status=21004,这意味着“您提供的共享机密与您帐户的共享机密文件不匹配。”。 我使用java服务器进行测试,它主要完成以下任务: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
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应用程序包上传会无限期地挂起。结果是,我在相关域中有一个输入错误。。。