Projet

Général

Profil

Anomalie #486

Les contributions ne s'enregistrent pas correctement

Ajouté par Raphaël Hertzog il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
16/01/2013
Echéance:
% réalisé:

100%


Description

J'ai galette-plugin-paypal-1.1.0.1.tar.bz2 avec galette 0.7.2.2 et lorsqu'un utilisateur renouvelle sa cotisation par Paypal, le paiement est bien enregistré dans l'historique Paypal que propose le plugin, par contre aucune contribution n'est enregistrée et la période d'adhésion n'est pas prolongée.

J'ai cette erreur dans les logs:

2013-01-14 22:23:46 - ERROR --> Something went wrong :'( | SQLSTATE23502: Not null violation: 7 ERROR: null value in column "type_paiement_cotis" violates not-null constraint
#0 /srv/d_france/www/hosts/france.debian.net/galette/includes/Zend-1.11.11/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /srv/d_france/www/hosts/france.debian.net/galette/includes/Zend-1.11.11/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#2 /srv/d_france/www/hosts/france.debian.net/galette/includes/Zend-1.11.11/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO "ga...', Array)
#3 /srv/d_france/www/hosts/france.debian.net/galette/includes/Zend-1.11.11/Zend/Db/Adapter/Abstract.php(575): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO "ga...', Array)
#4 /srv/d_france/www/hosts/france.debian.net/galette/lib/Galette/Entity/Contribution.php(539): Zend_Db_Adapter_Abstract->insert('galette_cotisat...', Array)
#5 /srv/d_france/www/hosts/france.debian.net/galette/plugins/galette-plugin-paypal/paypal_notify.php(118): Galette\Entity\Contribution->store()
#6 {main}
2013-01-14 22:23:46 - ERROR --> An error occured while storing a new contribution from Paypal payment

galette.png - Écran de retour sans les informations de paiement (49,6 ko) Raphaël Hertzog, 19/01/2013 15:13

Révisions associées

Révision a519e2ed
Ajouté par Johan Cwiklinski il y a presque 4 ans

Set payment type in constructor; partially fixes #486

Révision 8a7d8313
Ajouté par Johan Cwiklinski il y a presque 4 ans

Add payment type on paypal notification; fixes #486

Révision bf8fb88b
Ajouté par Johan Cwiklinski il y a presque 4 ans

Success URL was not showing infos anymore; refs #486, fix encoding, fix wrong translation

Historique

#1 Mis à jour par Johan Cwiklinski il y a presque 4 ans

  • Assigné à mis à Johan Cwiklinski
  • Statut changé de Nouveau à In Progress

En effet, il semble que j'ai oublié d'envoyer une information (je ne suis toujours pas en mesure de tester virtuellement les paiements paypal :/).

Pour corriger ça de façon temporaire ; dans le fichier paypal_notify.php à la ligne ~97, il devrait suffire d'ajouter :

$contrib->payment_type = Contribution::PAYMENT_PAYPAL;

#2 Mis à jour par Johan Cwiklinski il y a presque 4 ans

Johan Cwiklinski a écrit :

Pour corriger ça de façon temporaire ; dans le fichier paypal_notify.php à la ligne ~97, il devrait suffire d'ajouter :
[...]

Bon ben non, ça ne marchera pas en fait ; il manque aussi quelque chose côté Galette... J'ai 2 ou 3 petits bogues qui sont corrigés ; je vais sortir une version de Galette qui corrige tout ça assez rapidement, ainsi qu'une nouvelle version du plugin paypal dans la foulée.

#3 Mis à jour par Johan Cwiklinski il y a presque 4 ans

Pour corriger (en attendant...), côté Galette :

diff --git a/galette/lib/Galette/Entity/Contribution.php b/galette/lib/Galette/Entity/Contribution.php
index c45dba1..9ede27f 100644
--- a/galette/lib/Galette/Entity/Contribution.php
+++ b/galette/lib/Galette/Entity/Contribution.php
@@ -184,6 +184,9 @@ class Contribution
                 }
                 $this->_amount = $this->_transaction->getMissingAmount();
             }
+            if ( isset($args['payment_type']) ) {
+                $this->_payment_type = $args['payment_type'];
+            }
         }
             $this->_loadFromRS($args);
         }

Et côté plugin-paypal :

diff --git a/paypal_notify.php b/paypal_notify.php
index c7cd5b8..e2234f4 100644
--- a/paypal_notify.php
+++ b/paypal_notify.php
@@ -86,8 +86,9 @@ if ( isset($_POST) && isset($_POST['mc_gross'])
              * - item_number: contribution type id
              */
             $args = array(
-                    'type'  => $_POST['item_number'],
-                    'adh'   => $_POST['custom']
+                    'type'          => $_POST['item_number'],
+                    'adh'           => $_POST['custom'],
+                    'payment_type'  => Contribution::PAYMENT_PAYPAL
             );
             if ( $preferences->pref_membership_ext != '' ) {
                 $args['ext'] = $preferences->pref_membership_ext;

#4 Mis à jour par Raphaël Hertzog il y a presque 4 ans

J'ai appliqué le patch, maintenant faut que je trouve un nouveau cobaye. :)

#5 Mis à jour par Raphaël Hertzog il y a presque 4 ans

Finalement j'ai re-cotisé avec un peu d'avance... la contribution a bien été enregistrée. Par contre la page sur laquelle je reviens ne semble pas être correcte (cf image jointe). Aucune info concernant le paiement juste effectué n'apparaît.

#6 Mis à jour par Johan Cwiklinski il y a presque 4 ans

Attention, jouer les cobayes, ça peut être dangereux :D

Cool que le problème soit résolu. Je vais regarder dans la foulée pour les infos de retour, ça ne devrait pas être grand chose :)

#7 Mis à jour par Johan Cwiklinski il y a presque 4 ans

Alors, le correctif ; et 2 bonus :
  • correction du problème d'encodage foiré sur le site paypal,
  • il manquait un remplacement de variable
diff --git a/templates/default/paypal_form.tpl b/templates/default/paypal_form.tpl
index 222a6b9..7b2f83a 100644
--- a/templates/default/paypal_form.tpl
+++ b/templates/default/paypal_form.tpl
@@ -27,11 +27,12 @@
     {*<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest"/><!-- notfound :( -->*}
     <!-- Paypal dialogs -->
     <input type="hidden" name="return" value="{$plugin_url}paypal_success.php"/>
-    <input type="hidden" name="rm" value="POST"/>{*Send POST values back to Galette after payment. Will be sent to return url above*}
+    <input type="hidden" name="rm" value="2"/>{*Send POST values back to Galette after payment. Will be sent to return url above*}
+    <input type="hidden" name="charset" value="UTF-8"/>
     <input type="hidden" name="image_url" value="{$galette_url}picture.php?logo=true"/>
     <input type="hidden" name="cancel_return" value="{$plugin_url}paypal_form.php?cancelled=true"/>
     <input type="hidden" name="notify_url" value="{$plugin_url}paypal_notify.php"/>
-    <input type="hidden" name="cbt" value="{_T string="Go back to %s Website to complete your inscription."}"/>
+    <input type="hidden" name="cbt" value="{_T string="Go back to %s's website to complete your inscription." pattern="/%s/" replace=$preferences->pref_nom}"/>

     <fieldset id="paypal_form">
         <legend class="ui-state-active ui-corner-top">

#8 Mis à jour par Johan Cwiklinski il y a presque 4 ans

  • % réalisé changé de 0 à 100
  • Statut changé de In Progress à Résolu

Appliqué par commit commit:a519e2ed3a42a8df404a6cd0d78c4ed1133fbf00.

#9 Mis à jour par Johan Cwiklinski il y a presque 4 ans

#10 Mis à jour par Johan Cwiklinski il y a presque 4 ans

  • Statut changé de Résolu à Fermé

Les différents problèmes sont corrigés avec Galette 0.7.3.2 et le plugin Paypal 1.2.1 :)

Formats disponibles : Atom PDF