» »

PayPal IPN sporočila

PayPal IPN sporočila

draljo0007 ::

Imam težavo z Paypal IPN kot je razvidno že iz teme. Vse sem naredil tako kot piše v dokumentaciji. Najprej sem napisal svoj programček, ki bi bil namenjen kot listener za IPN sporočila. Vendar mi po nobeni strani ni delovalo. Nato sem si pobral z njihove strani(paypal.com) že narejen primer, vendar imam še vedno težave. Težava je v tem, da ko nekaj nekdo kupi oz. potrdi potrdilo na strani paypala v svojem profilu vidim da je bilo sporočilo poslano vendar moj program ne izpiše da bi se kaj dogajalo. No da je še bolj zanimivo naj povem tako, da ko sem z wiresharkom poslušal promet sem videl da prihajajo TCP paketi z njihovega strežnika na moj strežnik kjer imam aplikacijo. Ima še kdo takšne težave oziroma jih je imel in kako je rešil? Aja uporabljam pa javo ter glassfish strežnik, če vam kaj to pomaga. Lep pozdrav in hvala za odgovore!

dasf ::

Testiraj z https://developer.paypal.com/webapps/de...

Če aplikacija prejema pakete je najbolj verjetno da iz nekega razloga ne odgovarja oz ne. odgovori pravilno. Preglej zadnji paket IPN postopka, ponavadi vsebuje opis napake oz "VERIFIED" če je vse v redu.

draljo0007 ::

dasf je izjavil:

Testiraj z https://developer.paypal.com/webapps/de...

Če aplikacija prejema pakete je najbolj verjetno da iz nekega razloga ne odgovarja oz ne. odgovori pravilno. Preglej zadnji paket IPN postopka, ponavadi vsebuje opis napake oz "VERIFIED" če je vse v redu.



Sej prav to je to, ker servlet se pravzaprav ne odzove niti ga ne zažene. Kot da ne bi bil prav nastavljen IPN handler URL na tisti povezavi(vendar mislim da imam prav)...

Koda servleta, ki deluje kot IPN listener(PayPalListener.java):

package ipntest;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import com.paypal.core.ConfigManager;
import com.paypal.core.LoggingManager;
import com.paypal.ipn.IPNMessage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

/**
 *
 * @author Andraz Gregorcic<gregorcic.andraz@gmail.com>
 */
public class PayPalListener extends HttpServlet {
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("cmd", "_notify-validate"));
        for(Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();){
            String name = e.nextElement();
            String value = request.getParameter(name);
            params.add(new BasicNameValuePair(name, value));
        }
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("https://www.sandbox.paypal.com/cgi-bin/webscr");
        post.setEntity(new UrlEncodedFormEntity(params));
        String rc = getRC(client.execute(post));
        System.out.println("Data: " + rc);
    }
    private String getRC(HttpResponse response){
        InputStream is = null;
        try {
            is = response.getEntity().getContent();
        } catch (IOException ex) {
            Logger.getLogger(PayPalListener.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalStateException ex) {
            Logger.getLogger(PayPalListener.class.getName()).log(Level.SEVERE, null, ex);
        }
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String resultat = "";
        String line = null;
        try {
            while((line = br.readLine()) != null){
                resultat += line;
            }
        } catch (IOException ex) {
            Logger.getLogger(PayPalListener.class.getName()).log(Level.SEVERE, null, ex);
        }
        return resultat;
    }
 
}


web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>PayPalListener</servlet-name>
        <servlet-class>ipntest.PayPalListener</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PayPalListener</servlet-name>
        <url-pattern>/IPNListener</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>Checkout</servlet-name>
        <servlet-class>com.paypal.dg.Checkout</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Checkout</servlet-name>
        <url-pattern>/checkout</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>OrderConfirm</servlet-name>
        <servlet-class>com.paypal.dg.OrderConfirm</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OrderConfirm</servlet-name>
        <url-pattern>/orderconfirm</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>Cancel</servlet-name>
        <servlet-class>com.paypal.dg.Cancel</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Cancel</servlet-name>
        <url-pattern>/cancel</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>


Na linku, ki si ga dal pa vpisem:
http://domena:port/imeAplikacije/IPNListener

Po določenem času, ko se nič ne zgodi mi samo v simulatorju na tistem linku napiše da je potekla povezava.

Kot kaže ni še imel noben takšne težave?

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344332636 (72639) Macketina
»

[JAVA] HTTPS client

Oddelek: Programiranje
173177 (1907) peterv6i
»

Printanje na papir java problem

Oddelek: Programiranje
71184 (991) javaMaster
»

tomcat in datasource

Oddelek: Programiranje
131999 (1756) infiniteLoop
»

tomcat - problem z encodingom

Oddelek: Programiranje
72346 (2260) kopernik

Več podobnih tem