Question

J'ai un servlet Java en cours d'exécution sur mon ordinateur portable avec Windows Vista, je configurer une adresse IP statique, ne redirection de port et enregistré pour un service DDNS gratuit, maintenant mon servlet est en cours d'exécution, j'ai donné l'adresse à Paypal pour me envoyer IPN messages, je suis allé sur son site de bac à sable est arrivé à la page des outils de test, a essayé d'envoyer des messages de test en cliquant sur le bouton « Envoyer IPN », la plupart du temps, il échouerait, l'erreur est: « la livraison IPN n'a pas impossible de se connecter. à l'URL spécifiée. S'il vous plaît vérifier l'URL et essayez à nouveau. "

Mais peut-être 1 à 10 fois, il pourrait réussir et mon servlet le message, et je regardais les messages que j'ai, ils sont au format correct. Alors j'ai appelé Paypal demandant pourquoi, il a dit que je ne devrais pas exécuter le servlet sur mon portable, au lieu que je courrais sur le serveur web, mais je lui ai dit que mon FAI ne prend pas en charge Java sur leur serveur, et depuis que je l'ai fait toutes les étapes ci-dessus, ne devrait pas être le même il pour exécuter le servlet sur mon ordinateur portable? Il a dit que son test a montré qu'il ne pouvait pas arriver à mon servlet, mais je demande pourquoi peut-être 1 à 10 fois il pourrait passer à travers? S'il y a quelque chose de mal à courir sur mon ordinateur portable, puis fois 100%, il ne devrait, ai-je raison sur ce point? Mais de toute façon, il est dit que tout ce qu'il pouvait faire, et je dépanner moi-même. Le servlet ressemble à ceci:

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class PayPal_Servlet extends HttpServlet
{
  static boolean Debug=true;
  static String PayPal_Url="https://www.paypal.com/cgi-bin/webscr",Sandbox_Url="https://www.sandbox.paypal.com/cgi-bin/webscr",
                Dir_License_Messages="C:/Dir_License_Messages/";
  static TransparencyExample Transparency_Example;
  static PayPal_Message_To_License_File_Worker PayPal_message_to_license_file_worker;
  // Initializes the servlet.
  public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
    if (!new File(Dir_License_Messages).exists()) new File(Dir_License_Messages).mkdirs();
    System.gc();
  }

  /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
   * @param request servlet request
   * @param response servlet response
   */
  protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
  {
    // Read post from PayPal system and add 'cmd'
    Enumeration en=request.getParameterNames();
    String str="cmd=_notify-validate";

    while (en.hasMoreElements())
    {
      String paramName=(String)en.nextElement();
      String paramValue=request.getParameter(paramName);
      str=str+"&"+paramName+"="+URLEncoder.encode(paramValue);
    }

    //  Post back to PayPal system to validate
    //  NOTE: change http: to https: in the following URL to verify using SSL (for increased security).
    //  using HTTPS requires either Java 1.4 or greater, or Java Secure Socket Extension (JSSE) and configured for older versions.
    URL u=new URL(Debug?Sandbox_Url:PayPal_Url);
    URLConnection uc=u.openConnection();
    uc.setDoOutput(true);
    uc.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
    PrintWriter pw=new PrintWriter(uc.getOutputStream());
    pw.println(str);
    pw.close();

    BufferedReader in=new BufferedReader(new InputStreamReader(uc.getInputStream()));
    String res=in.readLine();
    in.close();

    // Assign posted variables to local variables
    String itemName=request.getParameter("item_name");
    String itemNumber=request.getParameter("item_number");
    String paymentStatus=request.getParameter("payment_status");
    String paymentAmount=request.getParameter("mc_gross");
    String paymentCurrency=request.getParameter("mc_currency");
    String txnId=request.getParameter("txn_id");
    String receiverEmail=request.getParameter("receiver_email");
    String payerEmail=request.getParameter("payer_email");

    if (res.equals("VERIFIED"))        // Check notification validation
    {
      // check that paymentStatus=Completed
      // check that txnId has not been previously processed
      // check that receiverEmail is your Primary PayPal email
      // check that paymentAmount/paymentCurrency are correct
      // process payment
    }
    else if (res.equals("INVALID"))    // Log for investigation
    {

    }
    else                               // Log for error
    {

    }
// ===========================================================================
    if (txnId!=null)
    {
      Write_File_Safe_Fast(Dir_License_Messages+txnId+".txt",new StringBuffer(str.replace("&","\n")),false);
    }

// ===========================================================================
    String Message_File_List[]=Tool_Lib.Get_File_List_From_Dir(Dir_License_Messages);
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    String title="Reading All Request Parameters",Name="",Value;
    out.println("<Html><Head><Title>"+title+"</Title></Head>\n<Body Bgcolor=\"#FDF5E6\">\n<H1 Align=Center>"+title+"</H1>\n"+
                "<Table Border=1 Align=Center>\n"+"<Tr Bgcolor=\"#FFAD00\"><Th>Parameter Name</Th><Th>Parameter Value(s)   Messages = "+Message_File_List.length+"</Th></Tr>");
    Enumeration paramNames=request.getParameterNames();
    while(paramNames.hasMoreElements())
    {
      String paramName=(String)paramNames.nextElement();
      out.print("<Tr><Td>"+paramName+"</Td><Td>");
      String[] paramValues=request.getParameterValues(paramName);
      if (paramValues.length == 1)
      {
        String paramValue=paramValues[0];
        if (paramValue.length() == 0) out.print("<I>No Value</I>");
        else
        {
          out.println(paramValue+"</Td></Tr>");
//          Out("paramName = "+paramName+"  paramValue = "+paramValue);
//          if (paramName.startsWith("Name")) Name=paramValue;
//          else if (paramName.startsWith("Value")) Write_File_Safe_Fast("C:/Dir_Data/"+Name,new StringBuffer(paramValue),false);
        }
      }
      else
      {
        out.println("<Ul>");
        for (int i=0;i<paramValues.length;i++) out.println("<Li>"+paramValues[i]);
        out.println("</Ul></Td</Tr>");
      }
    }
    out.println("</Table>\n</Body></Html>");
  }

  /** Handles the HTTP <code>GET</code> method.
   * @param request servlet request
   * @param response servlet response
   */
  protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { processRequest(request,response); }

  /** Handles the HTTP <code>POST</code> method.
   * @param request servlet request
   * @param response servlet response
   */
  protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { processRequest(request,response); }

  // Returns a short description of the servlet.
  public String getServletInfo() { return "Short description"; }

  // Destroys the servlet.
  public void destroy() { System.gc(); }

  public static void Write_File_Safe_Fast(String File_Path,StringBuffer Str_Buf,boolean Append)
  {
    FileOutputStream fos=null;
    BufferedOutputStream bos=null;

    try
    {
      fos=new FileOutputStream(File_Path,Append);
      bos=new BufferedOutputStream(fos);
      for (int j=0;j<Str_Buf.length();j++) bos.write(Str_Buf.charAt(j));
    }
    catch (Exception e) { e.printStackTrace(); }
    finally
    {
      try 
      {
        if (bos!=null)
        {
          bos.close();
          bos=null;
        }
        if (fos!=null)
        {
          fos.close();
          fos=null;
        }
      }
      catch (Exception ex) { ex.printStackTrace(); }
    }
    System.gc();
  }
}

J'utilise Netbean6.7 pour développer le servlet et le code a été à partir de l'exemple de code JSP Paypal, que puis-je faire pour déboguer le problème?

Était-ce utile?

La solution

HI, essayez d'utiliser ma bibliothèque: http://paypal-nvp.sourceforge.net/index.htm J'espère que cela vous aidera. Si vous avez des questions, des améliorations que vous pouvez me contacter. Vous trouvez mon email dans les commentaires de la source.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top