Java和AppStore收据验证

Vet*_*tal 7 java in-app-purchase ios

我正在尝试验证服务器端的付款收据.我得到了{"status":21002, "exception":"java.lang.IllegalArgumentException"}回报

这是代码:

private final static String _sandboxUriStr = "https://sandbox.itunes.apple.com/verifyReceipt";

public static void processPayment(final String receipt) throws SystemException
{
    final BASE64Encoder encoder = new BASE64Encoder();
    final String receiptData = encoder.encode(receipt.getBytes());


    final String jsonData = "{\"receipt-data\" : \"" + receiptData + "\"}";

    System.out.println(receipt);
    System.out.println(jsonData);

    try
    {
        final URL url = new URL(_sandboxUriStr);
        final HttpURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        final OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(jsonData);
        wr.flush();

        // Get the response
        final BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = rd.readLine()) != null)
        {
            System.out.println(line);
        }
        wr.close();
        rd.close();
    }
    catch (IOException e)
    {
        throw new SystemException("Error when trying to send request to '%s', %s", _sandboxUriStr, e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

我的收据如下:

{\n\t"signature" = "[exactly_1320_characters]";\n\t"purchase-info" =
"[exactly_868_characters]";\n\t"environment" = "Sandbox";\n\t"pod" =
"100";\n\t"signing-status" = "0";\n}
Run Code Online (Sandbox Code Playgroud)

带有BASE64编码收据的收据数据如下所示:

{"receipt-data" : "[Block_of_chars_76x40+44=3084_chars_total]"}
Run Code Online (Sandbox Code Playgroud)

有人有一个想法,或示例代码如何从收据字符串到答复JSON,这里提到?

km1*_*km1 0

我不熟悉该服务,但当内容类型或接受标头设置不正确时,我在其他服务中看到了类似的错误。

尝试类似的东西

 con.setRequestProperty("Content-Type", "application/json");
 con.setRequestProperty("Accept", "application/json");
Run Code Online (Sandbox Code Playgroud)

(或者无论他们期待什么。我假设 json)