Estoy probando suscripción aut-renovable pero el servidor recinto de seguridad de Apple siempre devuelve el estado = 21004, que significa 'El secreto compartido que ya ha proporcionado no coincide con el secreto compartido en el archivo por su cuenta.'. I prueba con un servidor Java, lo que lo hace sobre todo esto:¿Por qué obtengo 21004 como valor de estado en la respuesta del servidor de sandbox de apple que prueba las suscripciones de renovación automática?
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();
Como he tratado de aclarar por valores de las variables en código de ejemplo anterior, no codificar el secreto compartido, usándolo como una cadena sin formato. ¿Este es el problema?
Esta respuesta me hace sentir que no estoy solo :) –