Bug #78763
transaction abandonnée mais statut "en cours" qui va rester
0%
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
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.