我正在测试自动续订订阅,但Apple的沙箱服务器始终返回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();
当我尝试通过上面的代码示例中的变量值进行清理时,我没有对共享密钥进行编码,将其用作普通字符串。这是问题吗?
答案 0 :(得分:14)
那些让你觉得成为开发人员的日子......
仔细查看上面的问题,您会看到我使用了带有3个friggin' s 字符的JSON密钥密码!这就是在应用程序商店沙箱中使用多个测试产品和测试用户以及新共享机密的5小时尝试和错误体验的原因。
特别感谢iTunes团队提供'错误的共享秘密'消息,而不是'密码是什么密码'消息。