2011-04-19 7 views
7

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?

Respuesta

13

Los días que te hacen sentir tan grande para ser un desarrollador ...

Mirando cuidadosamente en mi pregunta anterior se verá que he utilizado la clave passsword JSON con 3 puto s caracteres! !! Esa fue la razón de una experiencia de prueba y error de 5 horas con varios productos de prueba y usuarios de prueba y nuevos secretos compartidos en el entorno limitado de la tienda de aplicaciones.

agradecimiento especial al equipo de iTunes para dar el 'secret'-mensaje equivocado compartida en lugar de la' ¿Qué diablos es la key'-passsword mensaje.

+0

Esta respuesta me hace sentir que no estoy solo :) –

Cuestiones relacionadas