【问题标题】:Java app store receipt validationJava 应用商店收据验证
【发布时间】:2015-07-26 23:19:36
【问题描述】:

我正在尝试验证来自 Java 服务的 Apple App Store 收据。除了错误 21002“收据数据属性格式错误”之外,我无法取回任何东西。我读过其他有同样问题的人,但没有看到解决方案。我认为这将是相当直截了当的,但是,无法绕过错误。这是我的代码:

EDIT 通过在下面进行标记为 // EDIT 的更改,我现在在 verifyReceipt 调用的返回中得到一个异常,也被标记为 //EDIT:

    String hexDataReceiptData = "<30821e3b 06092a86 4886f70d 010702a0 .... >";
    // EDIT
    hexDataReceiptData = hexDataReceiptData.replace(">", "").replace("<", "");
    final String base64EncodedReceiptData = Base64.encode(hexDataReceiptData.getBytes());
    JSONObject jsonObject = new JSONObject();
    try
    {
        jsonObject.put("receipt-data",base64EncodedReceiptData);
    }
    catch (JSONException e)
    {
        e.printStackTrace();
    }
    URL url = new URL("https://sandbox.itunes.apple.com/verifyReceipt");
    HttpURLConnection.setFollowRedirects(false);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    //Send request
    OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
    wr.write(jsonObject.toString());
    wr.flush();

    //Get Response  
    BufferedReader rd = 
       new BufferedReader(new 
             InputStreamReader(connection.getInputStream()));
    StringBuilder httpResponse = new StringBuilder(); 
    String line;
    while ((line = rd.readLine()) != null)
    {
        httpResponse.append(line);
        httpResponse.append('\r');
    }
    wr.close();
    rd.close();
    // EDIT
    // {"status":21002, "exception":"java.lang.IllegalArgumentException"}

【问题讨论】:

  • 我很惊讶我只获得了 17 次浏览。我不能是唯一一个使用 Java 进行 IAP 的人。我可以吗?

标签: java in-app-purchase


【解决方案1】:

正如此处发布的:Java and AppStore receipt verification,在 iOS 中进行 base64 编码并发送到服务器。但是,为什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    相关资源
    最近更新 更多