मैं सर्वर पक्ष पर भुगतान रसीद सत्यापित करने का प्रयास कर रहा हूं।जावा और ऐपस्टोर रसीद सत्यापन
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());
}
}
मेरे रसीद इस तरह दिखता है:
एक Base64 इनकोडिंग रसीद के साथ{\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}
रसीद डेटा इस तरह दिखता है:
मैं वापसीयहाँ में एक {"status":21002, "exception":"java.lang.IllegalArgumentException"}
हो रही है कोड है
{"receipt-data" : "[Block_of_chars_76x40+44=3084_chars_total]"}
क्या किसी के पास कोई विचार है, या नमूना कोड मैं कैसे प्राप्त कर सकता हूं JSON का जवाब देने के लिए रसीद स्ट्रिंग से, here का उल्लेख किया गया है?
[इस उत्तर] के अनुसार (http://stackoverflow.com/a/13717476/642706): 'JSON वस्तु है कि आप सत्यापन के लिए भेजने के लिए नहीं बनाया है सही format' में है। –