I am trying to check the receipt of payment on the server side. I get {"status":21002, "exception":"java.lang.IllegalArgumentException"} in response
Here is the code:
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();
My receipt is as follows:
{\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}
Check data with a BASE64 encoded receipt is as follows:
{"receipt-data" : "[Block_of_chars_76x40+44=3084_chars_total]"}
Does anyone have an idea or sample code, how can I get from the line to receive the JSON response mentioned here ?
Vetal source share