(inputStream != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); while (null != (string = reader.readLine())) { produtosJson.append(string); } } } catch (Exception e) { e.printStackTrace(); } return produtosJson; }}package br.edu.ecommerce.rest;public class Response { private String msg; private boolean erro; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public boolean isErro() { return erro; } public void setErro(boolean erro) { this.erro = erro; } }package br.edu.ecommerce.entidades;import com.google.gson.annotations.SerializedName;public class PagamentoCliente { @SerializedName("amount") private double quantia; @SerializedName("currency_code") private String moeda; public double getQuantia() { return quantia; } public void setQuantia(double quantia) { this.quantia = quantia; } public String getMoeda() { return moeda; } public void setMoeda(String moeda) { this.moeda = moeda; }}A primeira classe e um utilitario que nos ajudara a fazer a converter todo o nosso conteudo JSON para UTF-8, uma vez que lidaremos com valores de URLs, acentos e caracteres especiais via HTTP. A segunda classe e um POJO simples para lidar com as respostas que enviaremos ao app Android e a terceira lidara com o salvamento das informacoes de cada pagamento que virao serializadas tambem do app Android.Agora e hora de criar os metodos do nosso Web Service Restful que ira atuar como fachada de recebimento das requisicoes provindas do app Android. Veja na listagem abaixo o codigo que precisaremos criar na nova classe do pacote br.edu.ecommerce.rest:package br.edu.ecommerce.rest;// Imports omitidos. Use Ctrl + Shift + O para organiza-los no Eclipse.@Path("produto")public class ProdutosRest { private ProdutoDAO produtoDAO = new ProdutoDAO(); @Path("produtos") @GET @Produces(MediaType.APPLICATION_JSON) public String getProdutos(@QueryParam("str") String str) { return Util.converterJSONUTF8(produtoDAO.consultarPorTitulo(str)).toString(); } @Path("checkPagto") @POST @Produces(MediaType.APPLICATION_JSON) public Response verificarPagto(@FormParam("idPagto") String idPagto, @FormParam("jsonClientePagto") String jsonClientePagto, @FormParam("idUsuario") String idUsuario) { br.edu.ecommerce.rest.Response r = new br.edu.ecommerce.rest.Response(); try { OAuthTokenCredential tokenCredential = Payment.initConfig(getClass().getClassLoader().getResourceAsStream("sdk_config.properties")); String accessToken = tokenCredential.getAccessToken(); APIContext apiContext = new APIContext(accessToken); Payment pagto = Payment.get(apiContext, idPagto); if (!pagto.getState().equals("approved")) { r.setErro(true); r.setMsg("Pagamento nao verificado. Status: "); return Response.ok(new Gson().toJson(r), MediaType.APPLICATION_JSON).build(); } Gson gson = new Gson(); PagamentoCliente pagtoParam = gson.fromJson(jsonClientePagto, PagamentoCliente.class); double valorCliente = pagtoParam.getQuantia(); String moedaCliente = pagtoParam.getMoeda(); Transaction trans = pagto.getTransactions().get(0); String valorServidor = trans.getAmount().getTotal(); String moedaServidor = trans.getAmount().getCurrency(); String estadoVenda = trans.getRelatedResources().get(0).getSale().getState(); Pagamento pagtoFinal = new Pagamento(); pagtoFinal.setEstado(pagto.getState()); pagtoFinal.setPagtoPaypalId(pagto.getId()); Usuario usuario = new Usuario(); usuario.setId(idUsuario != null ? Integer.parseInt(idUsuario) : 1); pagtoFinal.setUsuario(usuario); pagtoFinal.setMoeda(moedaCliente); pagtoFinal.setValor(Double.parseDouble(valorServidor)); int idPagtoBD = produtoDAO.salvarPagto(pagtoFinal); pagtoFinal.setId(idPagtoBD); if (Double.parseDouble(valorServidor) != valorCliente) { r.setErro(true); r.setMsg("Quantias de pagamento nao conferem!"); return Response.ok(new Gson().toJson(r), MediaType.APPLICATION_JSON).build(); } if (!moedaServidor.equals(moedaCliente)) { r.setErro(true); r.setMsg("Moedas de pagamento nao conferem!"); return Response.ok(new Gson().toJson(r), MediaType.APPLICATION_JSON).build(); } if (!estadoVenda.equals("completed")) { r.setErro(true); r.setMsg("Venda nao completada!"); return Response.ok(new Gson().toJson(r), MediaType.APPLICATION_JSON).build(); } inserirItensVendas(pagtoFinal, trans, estadoVenda); } catch (PayPalRESTException ex) { ex.printStackTrace(); return Response.serverError().entity("Erro na comunicacao com o PayPal. Favor tentar novamente!").build(); } r.setErro(false); r.setMsg("Pagamento verificado com sucesso!"); return Response.ok(new Gson().toJson(r), MediaType.APPLICATION_JSON).build(); } private void inserirItensVendas(Pagamento pagtoFinal, Transaction trans, String estadoVenda) { ItemList listaItens = trans.getItemList(); for (Item i : listaItens.getItems()) { Venda venda = new Venda(); venda.setQtde(Integer.parseInt(i.getQuantity())); venda.setPreco(Double.parseDouble(i.getPrice())); venda.setPagamento(pagtoFinal); venda.setEstado(estadoVenda); Produto produto = produtoDAO.consultarPorSku(i.getSku()); venda.setProduto(produto); produtoDAO.salvarVenda(venda); } }}Essa classe usa essencialmente Rest e anotacoes da API do Jersey. Se nao conhece bem como funciona esse tipo de WS e/ou tecnologia, de uma pesquisada na documentacao oficial