Projet

Général

Profil

Bug #78763

transaction abandonnée mais statut "en cours" qui va rester

Ajouté par Frédéric Péters il y a 10 mois. Mis à jour il y a 10 mois.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
20 juin 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non
Tags:

Description

Un paiement démarré mais l'usager arrête en chemin,

si je n'allais pas au bout sur le site de paiement mais que je revenais au début,

ensuite retourne cliquer pour déclencer le paiement, selon la régie ça va arriver dans

        if (
            regie.payment_backend.can_poll_backend()
            and self.poll_for_newly_paid_or_still_running_transactions(regie, items, remote_items)
        ):
            messages.error(request, _('Some items are already paid or are being paid.'))
            return HttpResponseRedirect(next_url)

et l'usager sera redirigé. (et en passant ne verra pas le message, mais ça lui ferait de toute façon une belle jambe).

Là d'une manière ou d'une autre aussi il peut y avoir un retour de la plateforme de paiement, et la transaction va gagner un end_date :

{'_state': <django.db.models.base.ModelState at 0x7f68b2a13e80>,
 'id': 208,
 'regie_id': 3,
 'remote_items': [],
 'to_be_paid_remote_items': None,
 'start_date': datetime.datetime(2023, 6, 20, 11, 36, 2, 495055, tzinfo=<UTC>),
 'end_date': datetime.datetime(2023, 6, 20, 11, 36, 13, 969787, tzinfo=<UTC>),
 'bank_data': {'mel': 'xxx',
  'exer': '2023',
  'idOp': '6b33cb98-4826-4291-8de0-056f4059b454',
  'objet': 'test paiement en ligne n119 10',
  'numcli': '066651',
  'refdet': '202306201136020046742619',
  'saisie': 'T',
  'montant': '1250',
  'numauto': None,
  'dattrans': None,
  'heurtrans': None,
  'resultrans': 'A'},
 'order_id': '6b33cb98-4826-4291-8de0-056f4059b454',
 'bank_transaction_id': '202306201136020046742619 6b33cb98-4826-4291-8de0-056f4059b454',
 'bank_transaction_date': None,
 'user_id': 5,
 'status': 6,
 'amount': Decimal('12.50')}

mais là on est encore en "WAITING", peut-être parce que c'est payfip-ws :

        # convert CANCELLED to WAITING during the first 20 minutes
        if eopayment_response.result == CANCELLED and delta < threshold:
            eopayment_response.result = WAITING
            eopayment_response.bank_status = (
                '%s - still waiting as idop is still active' % eopayment_response.bank_status
            )

et ça semble ensuite pouvoir rester ainsi et jamais expirer,

        to_expire = Transaction.objects.filter(
            start_date__lt=now - datetime.timedelta(hours=1), end_date__isnull=True
        )

Il y a un problème quelque part.

Historique

#2

Mis à jour par Frédéric Péters il y a 10 mois

  • Tags mis à paiement
#3

Mis à jour par Frédéric Péters il y a 10 mois

Ou pas et ça marche correctement, parce que finalement dans le ticket lié,

le lien d'un test précédent est à nouveau opérationnel et renvoie bien vers payfip.

Formats disponibles : Atom PDF