[Plone-IT] plone e paypal

Simone Orsi simahawk a gmail.com
Lun 14 Mar 2011 13:25:48 UTC


Ciao,

On 03/14/2011 10:14 AM, Yuri wrote:
> Salve!
> 
>  ho "urgenza" di integrare un sito plone con paypal. Dal punto di vista
> paypal è tutto ok, manca ovviamente la parte plone. Dovrei configurare
> la parte IPN ( Instant Payment Notification ), sostanzialmente la
> notifica all'indietro dell'avvenuto pagamento. Nella sostanza, che ci
> metto in plone?

di "pronto" c'è questo http://pypi.python.org/pypi/gocept.paypal/

ma mi è sembrato un po' troppo macchinoso per quello che dovevo fare io.

io l'ho fatto creando un semplice form per il submit dei dati e un
adapter per gestire lo stato della transazione.

per l'adapter puoi fare qualcosa del genere:


class PayPalNotificationManager(object):
    implements(IPayPalNotificationManager)

    def __init__(self, request):
        self.request = request
        self.form = request.form

    @property
    def status(self):
        """ returns the status of the PayPal payment
        """
        status = self.form.get('payment_status')
        # on purchase return paypal send something like this, with
nomore "payment_status" WEIRD!
        # {'item_number': 'xxx', 'tx': '70T61912DS856443C', 'cm': '',
        #  'cc': 'EUR', 'st': 'Completed', 'amt': '100.00'}
        if status is None:
            status = self.form.get('st')
        return status

    @property
    def completed(self):
        if self.status:
            return self.status.lower() == 'completed'
        return False

e nella vista che userai per gestire le transazioni potrai fare

[...]
completed = IPayPalNotificationManager(self.request).completed
if completed:
    # fai quello che vuoi
[...]

attenzione al commento: nell'IPN la var dello stato è "payment_status"
mentre a transazione avvenuta diventa "st" :S


su https://developer.paypal.com/ trovi tutta la doc tecnica e puoi
registrare degli account di test e inviare delle notifiche IPN di test
al tuo plone.




Maggiori informazioni sulla lista Plone-IT