Projet

Général

Profil

Bug #9854

Erreur lors de l'appel de l'url de retour

Ajouté par Serghei Mihai (congés, retour 15/05) il y a environ 8 ans. Mis à jour il y a presque 8 ans.

Statut:
Fermé
Priorité:
Normal
Version cible:
-
Début:
03 février 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Arrivé sur la recette de Fondettes suite au ticket #9840.

Request Method: GET
Request URL: https://citoyen-fondettes.test.entrouvert.org/lingo/return/1/?vads_amount=4242&vads_auth_mode=MARK&vads_auth_number=&vads_auth_result=&vads_capture_delay=0&vads_card_brand=&vads_card_number=&vads_payment_certificate=&vads_ctx_mode=TEST&vads_currency=978&vads_effective_amount=&vads_site_id=57406901&vads_trans_date=20160203092845&vads_trans_id=801480&vads_validation_mode=0&vads_version=V2&vads_warranty_result=&vads_payment_src=EC&vads_cust_email=smihai%40entrouvert.com&vads_cust_country=FR&vads_contrib=eopayment&vads_contract_used=&vads_trans_status=ABANDONED&vads_pays_ip=FR&vads_presentation_date=20160203092845&vads_threeds_enrolled=&vads_threeds_cavv=&vads_threeds_eci=&vads_threeds_xid=&vads_threeds_cavvAlgorithm=&vads_threeds_status=&vads_threeds_sign_valid=&vads_threeds_error_code=&vads_threeds_exit_status=&vads_result=17&vads_extra_result=&vads_card_country=&vads_language=fr&vads_action_mode=INTERACTIVE&vads_payment_config=SINGLE&vads_page_action=PAYMENT&signature=2d4f2fb0dc8503748a49acdd6fe80c9a910566ab&

Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
  87.         return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/combo/apps/lingo/views.py" in get
  243.                                     'item_id': transaction.items[0].id}))

Exception Type: TypeError at /lingo/return/1/
Exception Value: 'ManyRelatedManager' object does not support indexing

Fichiers

Révisions associées

Révision 967a9c06 (diff)
Ajouté par Serghei Mihai (congés, retour 15/05) il y a environ 8 ans

lingo: return url redirects to the page that initiated the payment (#9854)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a environ 8 ans

Pourquoi on renvoie sur une la vue du premier item, faudrait revenir sur la page combo d'où le paiement est parti, non ?

En plus le template de la vue ItemView me semble incomplet il n'étant aucun template de base, etc.. c'est très bizarre.

Le code juste après est faux aussi:

        if transaction.remote_items:
            # redirect to first transaction remote item view
            item = transaction.remote_items.split(',')[0]
            return HttpResponseRedirect(reverse('view-item',
                                    kwargs={'regie_id': regie.pk,
                                    'item_id': item.id}))

item me semble être une chaîne il n'a donc pas d'attribut id.

#2

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Assigné à mis à Serghei Mihai (congés, retour 15/05)
#4

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 8 ans

  • Statut changé de Nouveau à En cours
  • Patch proposed changé de Oui à Non

Benjamin Dauvergne a écrit :

Pourquoi on renvoie sur une la vue du premier item, faudrait revenir sur la page combo d'où le paiement est parti, non ?

Oui, c'est logique mais au moment du callback on ne sait pas sur quelle page se trouve la cellule "panier" qui a declenché le paiement.

En plus le template de la vue ItemView me semble incomplet il n'étant aucun template de base, etc.. c'est très bizarre.

Parce qu'on est parti du principe que les details d'un item(facture) s'affichent dans une popup.

#5

Mis à jour par Benjamin Dauvergne il y a environ 8 ans

Serghei Mihai a écrit :

Benjamin Dauvergne a écrit :

Pourquoi on renvoie sur une la vue du premier item, faudrait revenir sur la page combo d'où le paiement est parti, non ?

Oui, c'est logique mais au moment du callback on ne sait pas sur quelle page se trouve la cellule "panier" qui a declenché le paiement.

Il faut noter ça en session associé au numéro de transaction pour éviter les collisions:

request.session.setdefault('lingo_next_url', {})[transaction_id] = request.build_absolute_uri();

et dans la vue de callback on récupère ce next_url en fonction du transaction_id et on revient dessus, sinon on revient à l'accueil.

En plus le template de la vue ItemView me semble incomplet il n'étant aucun template de base, etc.. c'est très bizarre.

Parce qu'on est parti du principe que les details d'un item(facture) s'affichent dans une popup.

Ok, si c'est toujours le cas je comprends.

#7

Mis à jour par Frédéric Péters il y a environ 8 ans

        referer = request.META.get('HTTP_REFERER')

Plutôt qu'utiliser le bien fragile entête Referer je préférerais qu'on inscrive dans un champ caché du formulaire posté l'URL de retour désirée.

#9

Mis à jour par Frédéric Péters il y a environ 8 ans

  • Statut changé de En cours à Résolu (à déployer)

Poussé ainsi parce que j'ai des tests corrects à faire pour #9910 et qu'ils annonçaient cette erreur.

commit 967a9c0681bc72024233aad4e32627391960b55d
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Wed Feb 3 10:49:47 2016 +0100

    lingo: return url redirects to the page that initiated the payment (#9854)
#10

Mis à jour par Frédéric Péters il y a presque 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF