payplug-dj - le paiement en ligne facile avec PayPlug

Installation

Pour installer le module, vous pouvez l’installer via pip :

pip install payplug-dj

Il vous faudra en outre un compte https://www.payplug.com et votre clef privée pour l’accès API.

Dans le module settings.py de votre application Django, ajoutez la ligne suivante :

'payplug-dj',

à la liste des applications installées INSTALLED_APPS.

Ajoutez également votre clef privée pour l’accès API :

PAYPLUG_API_KEY = 'sk_test_XXXXxxxXXXX'

Utilisation

from payplug_dj.models import Payment
from payplug_dj.signals import payment_return
from payplug_dj.signals import payment_cancel

def my_view(request):
    # Création d'une demande de paiement
    # Avec des templates personnalisés
    payment = Payment.objects.create(
        email='mail@example.com,
        firstname='Alexandre',
        lastname='Norman',
        amount=12.45,
        currency='EUR',
        template_return='myapp/payment_return.html',
        template_cancel='myapp/payment_cancel.html',
    )

    # Crée le ticket de paiment chez PayPlug
    # en y associant des métadonnées personnalisées
    # que l'on pourra récupérer plus tard
    # lorsque l'on sera rappelé par le signal
    payment.create_payment(
        metadata={
            'my_invoice_id': '2016-0002',
            'my_client_id': 142,
        }
    )

    # Connexion des signaux de retour
    payment_return.connect(PaymentOk)
    payment_cancel.connect(PaymentCancelled)

    # Redirection vers le site de PayPlug pour
    # réaliser le paiement
    return redirect(payment.payplug_url)

def PaymentOk(sender, **kwargs):
    """
    Fonction callback appelée quand un paiement 
    a été validé
    """
    # Récupération des arguments
    # la requête
    request = kwargs.get("request")
    # le paiement
    payment = kwargs.get("payment")
    # les métadonnées
    metadata = payment.get_payplug_metadata()
    my_invoice_id = metadata['my_invoice_id']

    # Set payment OK
    if payment.state == 'P':
        # Do something
        pass
    return

def PaymentCancelled(sender, **kwargs):
    """
    Fonction callback appelée quand un paiement 
    a été annulé
    """
    # Do something
    return

La séquence consiste à créer un ticket, se connecter aux signaux de retour. Et lorsque le paiement a été validé ou pas sur le site de PayPlug, faire ce que l’on a à faire dans les fonctions de callback. C’est aussi simple que ça.

Le dépôt du projet

Le dépôt du projet se trouve ici : https://bitbucket.org/xael/payplug_dj/