A minha aplicação usa o pag seguro com host de pagamentos
estou usando o servidor de testes aqui localhost
para efetuar a transacao ou seja comprar ele funciona blz porem eu preciso verificar quando o statrus da transação no pag seguro for alterado
tipo se for cancelado ou rejeitada uma operação eu mando um email avisando o usuario isso
ou se a transação foui finalizada ou seja ja tenho como pegar a grana do pag seguro eu preciso salvar essas infos no meu banco de dados
Estava fazendo uma consulta ajax quando o cara está logado no meu sistema de tempo em tempo passando o id das transações do pag seguro e ele consequentemente deveria me retornar um post das alterações.
Só que esse ajax não retorna nada a principio nen erro nen valores fica totalmente no escuro.
Não sei se estou fazendo certo pois o servidor de testes foi configurado para mandar reposta para uma classe do meu sistema e não se se está enviando porque como disse não tenho erro nenhum
seguem os arquivos
Java script que ativa a chamada para consulta do status
<script type="text/javascript">
$(document).ready(function() {
var user =${usuario.id};
setInterval(function() {
$.ajax({
type: 'POST',
data: {usuario: user},
url: "${pageContext.request.contextPath}/pagseguro/verificaTransacao.do",
success: function(data){
//alert(urlCheck);
}
});
}, 5000);
});
</script>
Codigo dentro do servidor que atende o js
public void verificaTransacao(HttpServletRequest req,HttpServletResponse res) throws IOException{
ArrayList<CreditoUser> creditos = (ArrayList<CreditoUser>) creditoUsuarioManager.getByUser(usuarioManager.getById(Long.parseLong(req.getParameter("usuario"))));
for (CreditoUser creditoUser : creditos) {
try {
// Construct data
String data = URLEncoder.encode("TransacaoID", "UTF-8") + "=" + URLEncoder.encode(creditoUser.getIdPagSeguro(), "UTF-8");
data += "&" + URLEncoder.encode("Anotacao", "UTF-8") + "=" + URLEncoder.encode("checkoutvalues", "UTF-8");
data += "&" + URLEncoder.encode("Comando", "UTF-8") + "=" + URLEncoder.encode("validar", "UTF-8");
// Send data
URL url = new URL(URL_NPI);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line.toString());
}
wr.close();
rd.close();
} catch (Exception e) {
}
}
codigo do metodo que trata o retorno automatico do pag seguro se eu enviar um form de uam pag html para ele ele trata sem nehum erro
public ModelAndView retornoPagSeguro(HttpServletRequest req,HttpServletResponse res) throws IOException{
if ("POST".equalsIgnoreCase(req.getMethod())) {
//o método POST indica que a requisição é o retorno da validação NPI.
Enumeration<?> en = req.getParameterNames();
String token = "cole aqui o token do vendedor";
StringBuffer validaNPI = new StringBuffer("Comando=validar&Token=");
validaNPI.append(token);
while (en.hasMoreElements()) {
String paramName = (String) en.nextElement();
String paramValue = req.getParameter(paramName);
validaNPI.append("&");
validaNPI.append(paramName);
validaNPI.append("=");
validaNPI.append(paramValue);
}
URL u = new URL(URL_NPI);
URLConnection uc = (URLConnection) u.openConnection();
uc.setDoOutput(true);
uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
PrintWriter pw = new PrintWriter(uc.getOutputStream());
pw.println(validaNPI.toString());
pw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String resp = in.readLine();
in.close();
//Verifica se o status da transação está VERIFICADO
String transacaoID = req.getParameter("TransacaoID");
if (resp.equals("VERIFICADO")) {
System.out.println("o post foi validado");
System.out.println("\n\n post validado return"+req.getParameter("ProdID_1")+" status "+req.getParameter("StatusTransacao")+"\n\n");
CreditoUser credito = new CreditoUser();
credito.setCredito(creditoManager.getById(Long.parseLong(req.getParameter("ProdID_1"))));
credito.setDataUltimaOperacao(new Date());
credito.setTpOperacao(1);
credito.setStatusTransaction(req.getParameter("StatusTransacao"));
credito.setUsuario((Usuario)req.getSession().getAttribute("usuario"));
credito.setIdPagSeguro(req.getParameter("TransacaoID"));
creditoUsuarioManager.save(credito);
} else if (resp.equals("FALSO")) {
System.out.println("o post nao foi validado");
} else {
System.out.println("erro na integracao");
}
}
else if ("GET".equalsIgnoreCase(req.getMethod())) {
Enumeration<?> en = req.getParameterNames();
while (en.hasMoreElements()) {
String paramName = (String) en.nextElement();
System.out.println("OS VALORES QUE EU MANDEI SÃO "+paramName+" == "+req.getParameter(paramName));
}
}
Enumeration<?> en = req.getParameterNames();
while (en.hasMoreElements()) {
String paramName = (String) en.nextElement();
System.out.println("OS VALORES QUE EU MANDEI SÃO "+paramName+" == "+req.getParameter(paramName));
}
//URL_NPI
return new ModelAndView("feedback/feedback","msg","O pag seguro bombou seu bocó");
}