Changeset 47654 in spip-zone


Ignore:
Timestamp:
May 10, 2011, 8:37:52 PM (10 years ago)
Author:
rastapopoulos@…
Message:

C'est maintenant le traitement qui gère les différents types de retours de Paypal.

Pour l'instant on sait gérer "Completed" et "Pending" (en attente), les autres cas sont considérés comme "erreur" à gérer à la main ensuite.

Il reste essentiellement à notifier par mail et ça me parait pas mal.

Location:
_plugins_/commandes_paypal
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/commandes_paypal/commandes_paypal_pipelines.php

    r47588 r47654  
    99                $flux['args']['paypal']['custom'] == 'payer_commande'
    1010                and $reference = $flux['args']['paypal']['invoice']
    11                 and $id_commande = sql_getfetsel('id_commande', 'spip_commandes', array('reference = '.sql_quote($reference), 'statut = '.sql_quote('encours')))
     11                and $commande = sql_fetsel('id_commande, statut, id_auteur', 'spip_commandes', 'reference = '.sql_quote($reference))
    1212        ){
     13                $id_commande = $commande['id_commande'];
     14                $statut_commande = $commande['statut'];
     15                $statut_paypal = $flux['args']['paypal']['payment_status'];
     16                $prix_paypal = $flux['args']['paypal']['mc_gross'];
     17               
     18                // Si le statut Paypal est "Pending" on passe juste la commande en attente et on verra plus tard pour le reste
     19                if ($statut_paypal == 'Pending'){
     20                        $statut_nouveau = 'attente';
     21                }
     22                // Si Paypal est "Completed" on vérifie que le montant correspond au prix de cette commande
     23                elseif ($statut_paypal == 'Completed'){
     24                        $fonction_prix = charger_fonction('prix', 'inc/');
     25                        $prix_commande = $fonction_prix('commande', $id_commande);
     26                         
     27                         // Si on a pas assez payé
     28                         if ($prix_paypal < $prix_commande){
     29                                $statut_nouveau = 'partiel';
     30                         }
     31                         // Sinon c'est bon
     32                         else{
     33                                $statut_nouveau = 'paye';
     34                         }
     35                }
     36                // Sinon on dit que c'est en erreur
     37                else{
     38                        $statut_nouveau = 'erreur';
     39                }
     40               
    1341                // On change le statut de la commande
    1442                $ok = sql_updateq(
    1543                        'spip_commandes',
    1644                        array(
    17                                 'statut' => 'paye'
     45                                'statut' => $statut_nouveau
    1846                        ),
    1947                        'id_commande = '.$id_commande
    2048                );
    2149               
    22                 // On change le statut de tous les détails
    23                 if ($ok)
    24                         $ok = sql_updateq(
    25                                 'spip_commandes_details',
    26                                 array(
    27                                         'statut' => 'paye'
    28                                 ),
    29                                 'id_commande = '.$id_commande
    30                         );
     50                // Si c'est bon, on appelle une notification
     51                if ($ok){
     52                        $id_auteur = $commande['id_auteur'];
     53                        $fonction_notif = charger_fonction('notifications', 'inc/');
     54                        $fonction_notif('commande_instituer', $id_commande, array('ancien_statut' => $statut_commande, 'nouveau_statut' => $statut_nouveau));
     55                }
    3156        }
    3257       
  • _plugins_/commandes_paypal/plugin.xml

    r47588 r47654  
    11<plugin>
    2         <nom>Payer des commandes avec Paypal</nom>
     2        <nom>Commandes payées avec Paypal</nom>
    33        <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur>
    44        <licence>GPL v3</licence>
    5         <version>0.1.0</version>
    6         <version_base>0.1.0</version_base>
     5        <version>0.2.0</version>
    76        <etat>dev</etat>
    87        <description>Ce plugin permet de gérer les retours d'un payement Paypal pour savoir quel commande a été payé, et donc changé son statut.</description>
Note: See TracChangeset for help on using the changeset viewer.